const { createClient } = require('@deepgram/sdk');
const apiKey = process.env.KEYBOARD_DEEPGRAM_API_KEY;
if (!apiKey) {
throw new Error('KEYBOARD_DEEPGRAM_API_KEY environment variable not found');
}
const deepgram = createClient(apiKey);
const transcriptionOptions = {
model: {{model}},
language: {{language}},
smart_format: {{smartFormat}},
punctuation: {{punctuation}},
diarize: {{diarize}},
utterances: true,
paragraphs: true
};
console.log('š¤ Starting Deepgram transcription...');
console.log('š Audio URL: {{audioUrl}}');
console.log('āļø Model: {{model}}, Language: {{language}}');
try {
const { result, error } = await deepgram.listen.prerecorded.transcribeUrl(
{ url: '{{audioUrl}}' },
transcriptionOptions
);
if (error) {
throw new Error(`Transcription failed: ${error.message}`);
}
const channel = result.results.channels[0];
const alternative = channel.alternatives[0];
const transcript = alternative.transcript;
const words = alternative.words || [];
const paragraphs = alternative.paragraphs || {};
const wordCount = words.length;
const duration = words.length > 0 ? words[words.length - 1].end - words[0].start : 0;
const speakingRate = duration > 0 ? Math.round(wordCount / duration * 60) : 0;
const outputFormat = '{{outputFormat}}';
if (outputFormat === 'transcript-only') {
console.log('\nš Transcript:\n');
console.log(transcript);
} else if (outputFormat === 'full-json') {
console.log('\nš Full JSON Response:\n');
console.log(JSON.stringify(result, null, 2));
} else {
console.log('\nā
Transcription Complete!\n');
console.log('š Statistics:');
console.log(`- Duration: ${duration.toFixed(2)} seconds`);
console.log(`- Word count: ${wordCount} words`);
console.log(`- Speaking rate: ${speakingRate} words/minute`);
console.log(`- Model used: {{model}}`);
console.log(`- Language: {{language}}`);
console.log('\nš Transcript:\n');
console.log(transcript);
if (words.length > 0) {
console.log('\nā±ļø First 5 words with timestamps:');
words.slice(0, 5).forEach(word => {
console.log(`- ${word.word} (${word.start}s - ${word.end}s)`);
});
}
if ({{diarize}} && paragraphs.paragraphs && paragraphs.paragraphs.length > 0) {
console.log('\nš„ Speaker segments detected:', paragraphs.paragraphs.length);
}
}
return {
success: true,
transcript: transcript,
metadata: {
url: '{{audioUrl}}',
model: '{{model}}',
language: '{{language}}',
duration: duration,
wordCount: wordCount,
speakingRate: speakingRate
},
words: words,
paragraphs: paragraphs,
raw: result
};
} catch (error) {
console.error('\nā Error:', error.message);
throw error;
}