deepgram-hello-world
Provides basic code examples for integrating Deepgram's transcription API using TypeScript.
Install
mkdir -p .claude/skills/deepgram-hello-world && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7420" && unzip -o skill.zip -d .claude/skills/deepgram-hello-world && rm skill.zipInstalls to .claude/skills/deepgram-hello-world
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Create a minimal working Deepgram transcription example.Key capabilities
- →Transcribe audio from public URLs
- →Process local audio files for transcription
- →Select specific models like nova-3 for accuracy
- →Enable speaker diarization and utterance segmentation
- →Extract confidence scores and transcript text
How it works
It utilizes the Deepgram SDK to send audio data to the API, specifying models and formatting options to return structured transcription results.
Inputs & outputs
When to use deepgram-hello-world
- →Start a new Deepgram integration
- →Transcribe audio files or URLs
- →Test Deepgram API patterns
- →Implement basic transcription logic
About this skill
Deepgram Hello World
Overview
Minimal working examples for Deepgram speech-to-text. Transcribe an audio URL in 5 lines with createClient + listen.prerecorded.transcribeUrl. Includes local file transcription, Python equivalent, and Nova-3 model selection.
Prerequisites
npm install @deepgram/sdkcompletedDEEPGRAM_API_KEYenvironment variable set- Audio source: URL or local file (WAV, MP3, FLAC, OGG, M4A)
Instructions
Step 1: Transcribe Audio from URL (TypeScript)
import { createClient } from '@deepgram/sdk';
const deepgram = createClient(process.env.DEEPGRAM_API_KEY!);
async function main() {
const { result, error } = await deepgram.listen.prerecorded.transcribeUrl(
{ url: 'https://static.deepgram.com/examples/Bueller-Life-moves-702702706.wav' },
{
model: 'nova-3', // Latest model — best accuracy
smart_format: true, // Auto-punctuation, paragraphs, numerals
language: 'en',
}
);
if (error) throw error;
const transcript = result.results.channels[0].alternatives[0].transcript;
console.log('Transcript:', transcript);
console.log('Confidence:', result.results.channels[0].alternatives[0].confidence);
}
main();
Step 2: Transcribe a Local File
import { createClient } from '@deepgram/sdk';
import { readFileSync } from 'fs';
const deepgram = createClient(process.env.DEEPGRAM_API_KEY!);
async function transcribeFile(filePath: string) {
const audio = readFileSync(filePath);
const { result, error } = await deepgram.listen.prerecorded.transcribeFile(
audio,
{
model: 'nova-3',
smart_format: true,
// Deepgram auto-detects format, but you can specify:
mimetype: 'audio/wav',
}
);
if (error) throw error;
console.log(result.results.channels[0].alternatives[0].transcript);
}
transcribeFile('./meeting-recording.wav');
Step 3: Python Equivalent
import os
from deepgram import DeepgramClient, PrerecordedOptions
client = DeepgramClient(os.environ["DEEPGRAM_API_KEY"])
# URL transcription
url = {"url": "https://static.deepgram.com/examples/Bueller-Life-moves-702702706.wav"}
options = PrerecordedOptions(model="nova-3", smart_format=True, language="en")
response = client.listen.rest.v("1").transcribe_url(url, options)
transcript = response.results.channels[0].alternatives[0].transcript
print(f"Transcript: {transcript}")
print(f"Confidence: {response.results.channels[0].alternatives[0].confidence}")
# Local file transcription
with open("meeting.wav", "rb") as audio:
source = {"buffer": audio.read(), "mimetype": "audio/wav"}
response = client.listen.rest.v("1").transcribe_file(source, options)
print(response.results.channels[0].alternatives[0].transcript)
Step 4: Add Features
// Enable diarization (speaker identification)
const { result } = await deepgram.listen.prerecorded.transcribeUrl(
{ url: audioUrl },
{
model: 'nova-3',
smart_format: true,
diarize: true, // Speaker labels
utterances: true, // Turn-by-turn segments
paragraphs: true, // Paragraph formatting
}
);
// Print speaker-labeled output
if (result.results.utterances) {
for (const utterance of result.results.utterances) {
console.log(`Speaker ${utterance.speaker}: ${utterance.transcript}`);
}
}
Step 5: Explore Model Options
| Model | Use Case | Speed | Accuracy |
|---|---|---|---|
nova-3 | General — best accuracy | Fast | Highest |
nova-2 | General — proven stable | Fast | Very High |
nova-2-meeting | Conference rooms, multiple speakers | Fast | High |
nova-2-phonecall | Low-bandwidth phone audio | Fast | High |
base | Cost-sensitive, high-volume | Fastest | Good |
whisper-large | Multilingual (100+ languages) | Slow | High |
Step 6: Run It
# TypeScript
npx tsx hello-deepgram.ts
# Python
python hello_deepgram.py
Output
- Working transcription from URL or local file
- Printed transcript text with confidence score
- Optional: speaker-labeled utterances
Error Handling
| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Invalid API key | Check DEEPGRAM_API_KEY |
400 Bad Request | Unsupported audio format | Use WAV, MP3, FLAC, OGG, or M4A |
| Empty transcript | No speech in audio | Verify audio has audible speech |
ENOTFOUND | URL not reachable | Check audio URL is publicly accessible |
Cannot find module '@deepgram/sdk' | SDK not installed | Run npm install @deepgram/sdk |
Resources
Next Steps
Proceed to deepgram-core-workflow-a for production transcription patterns or deepgram-core-workflow-b for live streaming.
When not to use it
- →Real-time streaming transcription requirements
- →Complex multi-stage audio processing pipelines
Prerequisites
Limitations
- →Requires publicly accessible URLs for remote audio
- →Limited to supported audio formats like WAV, MP3, FLAC, OGG, M4A
How it compares
This approach uses a minimal client-based pattern to perform transcription in a few lines of code compared to manual REST API implementation.
Compared to similar skills
deepgram-hello-world side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| deepgram-hello-world (this skill) | 1 | 25d | Review | Beginner |
| twinmind-local-dev-loop | 1 | 25d | Caution | Beginner |
| write-test | 1 | 5mo | Review | Advanced |
| groq-hello-world | 1 | 24d | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
twinmind-local-dev-loop
jeremylongshore
Set up local development workflow with TwinMind API integration. Use when building applications that integrate TwinMind transcription, testing API calls locally, or developing meeting automation tools. Trigger with phrases like "twinmind dev setup", "twinmind local development", "twinmind API testing", "build with twinmind".
write-test
useautumn
Write integration tests for the Autumn billing system. Use when creating tests, writing test scenarios for billing/subscription features, track/check endpoints, or when the user asks about testing, test cases, or QA.
groq-hello-world
jeremylongshore
Create a minimal working Groq example. Use when starting a new Groq integration, testing your setup, or learning basic Groq API patterns. Trigger with phrases like "groq hello world", "groq example", "groq quick start", "simple groq code".
speak-hello-world
jeremylongshore
Create a minimal working Speak language learning example. Use when starting a new Speak integration, testing your setup, or learning basic Speak API patterns for language tutoring. Trigger with phrases like "speak hello world", "speak example", "speak quick start", "simple speak lesson".
exa-local-dev-loop
jeremylongshore
Configure Exa local development with hot reload and testing. Use when setting up a development environment, configuring test workflows, or establishing a fast iteration cycle with Exa. Trigger with phrases like "exa dev setup", "exa local development", "exa dev environment", "develop with exa".
instantly-local-dev-loop
jeremylongshore
Configure Instantly local development with hot reload and testing. Use when setting up a development environment, configuring test workflows, or establishing a fast iteration cycle with Instantly. Trigger with phrases like "instantly dev setup", "instantly local development", "instantly dev environment", "develop with instantly".