Skip to main content ホーム クリエイター comeonoliver skillshub 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".
インストールへ移動 Skills Marketplace コミュニティが作成したAIスキルを発見・探索
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/ComeOnOliver/skillshub --skill deepgram-cost-tuningコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Zipをダウンロード ダウンロード中... このリポジトリの他の Skills Review product and feature risk before an AI coding agent starts implementation.
Use Xquik for X data and confirmation-gated X actions: tweet search, user lookup, follower export, media download, monitors, webhooks, MCP, and SDK workflows.
Canton Network open-source ecosystem guide covering DAML SDK, Canton runtime, and Splice applications. Use when working with Canton Network, DAML smart contracts, or building decentralized applications.
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.0.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> compatible-with claude-code, codex, openclaw tags ["saas","deepgram","cost-optimization","billing"]
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