Skip to main content الرئيسية المنشئون jeremylongshore tons-of-skills-marketplace deepgram-cost-tuning
deepgram-cost-tuning Optimize Deepgram costs and usage for budget-conscious deployments.
Use when reducing transcription costs, implementing usage controls,
or optimizing pricing tier utilization.
Trigger: "deepgram cost", "reduce deepgram spending", "deepgram pricing",
"deepgram budget", "optimize deepgram usage", "deepgram billing".
الانتقال إلى التثبيت سوق المهارات اكتشف واستكشف مهارات الذكاء الاصطناعي التي بناها المجتمع.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
نسخ Promptعرض تفاصيل Prompt يتجاوز الأمر المباشر Prompt المخصّص للمراجعة. افحص المصدر قبل تشغيله.
npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill deepgram-cost-tuningيبقى الأمر في سطر واحد. مرّر أفقيًا لمراجعته كاملًا قبل النسخ.
تفضّل نسخة محلية؟ نزّل الملفات المتاحة حاليًا لدى SkillsMP.
تحميل Zip جاري التحميل... المزيد من هذا المستودع langchain-deploy-integration Deploy a LangChain 1.0 / LangGraph 1.0 app to Cloud Run, Vercel, or LangServe correctly — with timeouts sized for chain length, cold-start mitigation, SSE anti-buffering headers, and Secret Manager over .env. Use when prepping a first production deploy, debugging a stream that hangs behind a proxy, or diagnosing p99 latency spikes. Trigger with "langchain deploy", "langchain cloud run", "langchain vercel python", "langchain langserve", or "langchain docker".
langchain-langgraph-agents Build a correct LangGraph 1.0 ReAct agent with create_react_agent — typed tools, error propagation, recursion caps, and stop conditions that actually stop. Use when writing a first tool-calling agent, migrating from AgentExecutor or initialize_agent, or diagnosing an agent that loops on vague prompts. Trigger with "langgraph agent", "create_react_agent", "langgraph tool calling", "AgentExecutor migration", or "agent loop cost".
langchain-langgraph-human-in-loop Build LangGraph 1.0 human-in-the-loop approval flows with interrupt_before /
interrupt_after and Command(resume=...) — JSON-serializable state, clean
resume semantics, and UI wiring for approval decisions. Use when adding an
approval gate before an expensive tool call, wiring a Slack/web UI for agent
approvals, or debugging a graph that crashes on interrupt.
Trigger with "langgraph human in loop", "langgraph interrupt_before",
"langgraph approval flow", "Command resume", "langgraph HITL".
name deepgram-cost-tuning description Optimize Deepgram costs and usage for budget-conscious deployments.
Use when reducing transcription costs, implementing usage controls,
or optimizing pricing tier utilization.
Trigger: "deepgram cost", "reduce deepgram spending", "deepgram pricing",
"deepgram budget", "optimize deepgram usage", "deepgram billing".
allowed-tools Read, Write, Edit, Bash(ffmpeg:*) version 1.13.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> tags ["saas","deepgram","cost-optimization","billing"] compatibility Designed for Claude Code
Deepgram Cost Tuning
Overview
Optimize Deepgram API costs through smart model selection, audio preprocessing to reduce billable minutes, usage monitoring via the Deepgram API, budget guardrails, and feature-aware cost estimation. Deepgram bills per audio minute processed.
Deepgram Pricing (2026)
Product Model Price/Minute Notes STT (Batch) Nova-3 $0.0043 Best accuracy STT (Batch) Nova-2 $0.0043 Proven stable STT (Streaming) Nova-3 $0.0059 Real-time STT (Streaming) Nova-2 $0.0059 Real-time STT (Batch) Base $0.0048 Fastest STT (Batch) Whisper $0.0048 Multilingual TTS Aura-2 Pay-per-character See TTS pricing Intelligence Summarize/Topics/Sentiment Included with STT No extra cost
Add-on costs:
Diarization: +$0.0044/min
Multichannel: billed per channel
Instructions
Step 1: Budget-Aware Transcription Service
import { createClient } from '@deepgram/sdk' ;
interface BudgetConfig {
monthlyLimitUsd : number ;
warningThreshold : number ;
costPerMinute : number ;
}
class BudgetAwareTranscriber {
private client : ReturnType < createClient>;
: ;
monthlySpendUsd = ;
monthlyMinutes = ;
( ) {
. = (apiKey);
. = config;
}
( ) {
estimatedCost = . (options);
projected = . + estimatedCost;
(projected > . . ) {
(
+
);
}
(projected > . . * . . ) {
. (
+
);
}
{ result, error } = . . . . (
source, options
);
(error) error;
duration = result. . / ;
actualCost = . (duration, options);
. += duration;
. += actualCost;
result;
}
( : ): {
. ( , options);
}
( : , : ): {
cost = minutes * . . ;
(options. ) cost += minutes * ;
cost;
}
( ) {
{
: . . ( ),
: . . ( ),
: ( . . - . ). ( ),
: (( . / . . ) * ). ( ),
};
}
}
transcriber = (process. . !, {
: ,
: ,
: ,
});
typeof
private
config
BudgetConfig
private
0
private
0
constructor
apiKey : string , config : BudgetConfig
this
client
createClient
this
config
async
transcribe
source : any , options : any
const
this
estimateCost
const
this
monthlySpendUsd
if
this
config
monthlyLimitUsd
throw
new
Error
`Budget exceeded: $${this .monthlySpendUsd.toFixed(2 )} spent, `
`$${this .config.monthlyLimitUsd} limit`
if
this
config
monthlyLimitUsd
this
config
warningThreshold
console
warn
`Budget warning: ${((projected / this .config.monthlyLimitUsd) * 100 ).toFixed(0 )} % `
`of $${this .config.monthlyLimitUsd} limit`
const
await
this
client
listen
prerecorded
transcribeUrl
if
throw
const
metadata
duration
60
const
this
calculateCost
this
monthlyMinutes
this
monthlySpendUsd
return
private
estimateCost
options
any
number
return
this
calculateCost
5
private
calculateCost
minutes
number
options
any
number
let
this
config
costPerMinute
if
diarize
0.0044
return
getUsageSummary
return
minutesUsed
this
monthlyMinutes
toFixed
1
spentUsd
this
monthlySpendUsd
toFixed
4
remainingUsd
this
config
monthlyLimitUsd
this
monthlySpendUsd
toFixed
4
utilizationPercent
this
monthlySpendUsd
this
config
monthlyLimitUsd
100
toFixed
1
const
new
BudgetAwareTranscriber
env
DEEPGRAM_API_KEY
monthlyLimitUsd
100
warningThreshold
0.8
costPerMinute
0.0043
Step 2: Reduce Billable Minutes with Audio Preprocessing
ffmpeg -i input.wav \
-af "silenceremove=stop_periods=-1:stop_duration=0.5:stop_threshold=-30dB" \
-ar 16000 -ac 1 -acodec pcm_s16le \
trimmed.wav
ffmpeg -i input.wav \
-filter:a "atempo=1.25" \
-ar 16000 -ac 1 -acodec pcm_s16le \
faster.wav
import { execSync } from 'child_process' ;
function measureSavings (inputPath : string ) {
const origDuration = parseFloat (
execSync (`ffprobe -v quiet -show_entries format=duration -of csv=p=0 "${inputPath} "` )
.toString ().trim ()
);
execSync (`ffmpeg -y -i "${inputPath} " \
-af "silenceremove=stop_periods=-1:stop_duration=0.5:stop_threshold=-30dB" \
-ar 16000 -ac 1 -acodec pcm_s16le /tmp/trimmed.wav 2>/dev/null` );
const trimmedDuration = parseFloat (
execSync (`ffprobe -v quiet -show_entries format=duration -of csv=p=0 /tmp/trimmed.wav` )
.toString ().trim ()
);
const savings = ((1 - trimmedDuration / origDuration) * 100 ).toFixed (1 );
const costSaved = ((origDuration - trimmedDuration) / 60 * 0.0043 ).toFixed (4 );
console .log (`Original: ${origDuration.toFixed(1 )} s` );
console .log (`Trimmed: ${trimmedDuration.toFixed(1 )} s` );
console .log (`Savings: ${savings} % (${costSaved} /file at $0.0043/min)` );
}
Step 3: Query Deepgram Usage API import { createClient } from '@deepgram/sdk' ;
async function getUsageDashboard (projectId : string ) {
const client = createClient (process.env .DEEPGRAM_API_KEY !);
const now = new Date ();
const monthStart = new Date (now.getFullYear (), now.getMonth (), 1 );
const { result } = await client.manage .getUsage (projectId, {
start : monthStart.toISOString (),
end : now.toISOString (),
});
const byModel : Record <string , { minutes : number ; cost : number }> = {};
for (const entry of (result as any ).results ?? []) {
const model = entry.model ?? 'unknown' ;
if (!byModel[model]) byModel[model] = { minutes : 0 , cost : 0 };
byModel[model].minutes += (entry.hours ?? 0 ) * 60 + (entry.minutes ?? 0 );
}
console .log ('=== Monthly Usage ===' );
for (const [model, data] of Object .entries (byModel)) {
const cost = data.minutes * 0.0043 ;
console .log (`${model} : ${data.minutes.toFixed(1 )} min ($${cost.toFixed(2 )} )` );
}
const dayOfMonth = now.getDate ();
const daysInMonth = new Date (now.getFullYear (), now.getMonth () + 1 , 0 ).getDate ();
const totalMinutes = Object .values (byModel).reduce ((s, d ) => s + d.minutes , 0 );
const projectedMinutes = (totalMinutes / dayOfMonth) * daysInMonth;
const projectedCost = projectedMinutes * 0.0043 ;
console .log (`\nProjected monthly: ${projectedMinutes.toFixed(0 )} min ($${projectedCost.toFixed(2 )} )` );
}
Step 4: Cost-Optimized Model Selection function recommendModel (params : {
qualityNeeded: 'high' | 'medium' | 'low' ;
isRealtime: boolean ;
languages: string [];
budgetPerMinute?: number ;
} ): { model : string ; pricePerMin : number ; reason : string } {
const { qualityNeeded, isRealtime, languages, budgetPerMinute } = params;
if (languages.length > 1 || !['en' , 'es' , 'fr' , 'de' ].includes (languages[0 ])) {
return { model : 'whisper-large' , pricePerMin : 0.0048 , reason : 'Multilingual support' };
}
if (budgetPerMinute !== undefined && budgetPerMinute < 0.005 ) {
return { model : 'nova-2' , pricePerMin : 0.0043 , reason : 'Best price per quality' };
}
if (isRealtime) {
return { model : 'nova-3' , pricePerMin : 0.0059 , reason : 'Best real-time accuracy' };
}
switch (qualityNeeded) {
case 'high' :
return { model : 'nova-3' , pricePerMin : 0.0043 , reason : 'Highest accuracy' };
case 'medium' :
return { model : 'nova-2' , pricePerMin : 0.0043 , reason : 'Good accuracy, proven' };
case 'low' :
return { model : 'base' , pricePerMin : 0.0048 , reason : 'Fastest processing' };
}
}
Step 5: Feature Cost Awareness
const featureCosts : Record <string , { cost : number ; description : string }> = {
smart_format : { cost : 0 , description : 'Punctuation + paragraphs + numerals' },
punctuate : { cost : 0 , description : 'Punctuation only' },
paragraphs : { cost : 0 , description : 'Paragraph formatting' },
summarize : { cost : 0 , description : 'AI summary (included with STT)' },
detect_topics : { cost : 0 , description : 'Topic detection (included)' },
sentiment : { cost : 0 , description : 'Sentiment analysis (included)' },
intents : { cost : 0 , description : 'Intent recognition (included)' },
redact : { cost : 0 , description : 'PII redaction (included)' },
diarize : { cost : 0.0044 , description : 'Speaker identification (+$0.0044/min)' },
multichannel : { cost : 0.0043 , description : 'Per-channel billing (1x STT cost per channel)' },
};
function estimateJobCost (params : {
durationMinutes: number ;
model: string ;
features: string [];
channels?: number ;
} ): number {
const baseCost = params.durationMinutes * 0.0043 ;
let addOnCost = 0 ;
for (const feature of params.features ) {
addOnCost += (featureCosts[feature]?.cost ?? 0 ) * params.durationMinutes ;
}
const channelMultiplier = params.channels ?? 1 ;
return (baseCost + addOnCost) * channelMultiplier;
}
Output
Budget-aware transcription with auto-blocking
Audio preprocessing to reduce billable minutes
Usage dashboard via Deepgram API
Cost-optimized model recommendation
Feature cost breakdown with estimation
Cost Optimization Quick Wins Strategy Savings Effort Remove silence from audio 10-40% Low (ffmpeg one-liner) Disable diarization when not needed ~50% Low (remove option) Use callback for long files Indirect (no timeouts) Low Cache repeated transcriptions 20-60% Medium (Redis) Speed up audio 1.25x 20% Low (ffmpeg) Use Nova-2 instead of Nova-3 0% (same price) None Batch pre-recorded vs streaming 37% ($0.0043 vs $0.0059) Medium
Error Handling Issue Cause Solution Budget exceeded No controls Enable budget check before transcription Unexpected charges Diarization always on Make diarization opt-in Usage API empty Wrong project ID Get ID from getProjects() Cost spike Batch job without limits Set concurrency limits + budget cap
Resources