Deepgram query params

42 params recognised on the Deepgram session (/v1/listen with a DG credential). Rendered live from app/api/v1/_dg_params.py.

SUPPORTED  Supported (10)

ParamBehaviourNote
encodingSUPPORTEDParakeet expects PCM-16 (linear16); transcode mulaw/alaw/opus.
sample_rateSUPPORTEDParakeet trained at 16 kHz; resample any declared rate.
endpointingSUPPORTEDSilero/WebRTC VAD; emit speech_final after silence>endpointing ms.
languageSUPPORTEDParakeet-TDT-0.6B-v3 supports 25 languages; pass as model hint.
numeralsSUPPORTEDParakeet TDT head includes ITN; enable via model config.
keywordsSUPPORTEDPOST-TRANSCRIPTION ONLY: repeatable 'kw[:intensifier]' is parsed, stored on the session, and used to drive phonetic + fuzzy correction of the FINAL transcript against the locale medical lexicon (Cologne Phonetics for de, Double Metaphone for en/fr/es). Interim results are NEVER rewritten, so live captions do not flicker. This is NOT acoustic/decoder-level biasing: the decode is byte-identical with or without it, because the service stays pinned to decoding strategy 'greedy' to dodge an NVRTC CUDA-graph capture bug (services/nemo_decoding.py). A 2026-08-03 spike found that pin's blocker gone but did NOT demonstrate a boosting tree loading (fusion_models stayed None), so true acoustic boosting remains unproven work. The intensifier suffix is accepted for Deepgram wire compatibility but does not weight the correction. Gated by DDX_STT_TERM_CORRECTION_ENABLED.
interim_resultsSUPPORTEDStream partial Results frames; if false buffer to final only.
utterance_end_msSUPPORTEDSilence (ms) after last word before UtteranceEnd fires; drives SDK end-of-speech timing. None falls back to VAD default.
vad_eventsSUPPORTEDSilero/WebRTC VAD; emit SpeechStarted + UtteranceEnd frames.
wordsSUPPORTEDParakeet provides word-level timestamps natively.

PARTIAL  Partial (11)

ParamBehaviourNote
channelsPARTIALAccept up to 2; mix to mono internally.
modelPARTIALAccept any value, route to Parakeet, echo in metadata.model_info.name.
punctuatePARTIALParakeet basic punctuation; post-processor for accuracy.
diarizePARTIALBaseline speaker:0. When DDX_STT_DIARIZE_ENABLED=1, real Sortformer speaker labels on words[] (en supported; de/fr/es EXPERIMENTAL).
smart_formatPARTIALBaseline: punctuate + numerals. When DDX_STT_SMART_FORMAT_ENABLED=1, engages WFST ITN on the FINAL transcript (en production; de/fr/es EXPERIMENTAL).
replacePARTIALRepeatable 'search:replace'; simple string-replace post-processor.
utterancesPARTIALPer-utterance segmentation via VAD + utterance_end_ms silence.
utt_splitPARTIALSilence threshold seconds; map to VAD min_silence_ms.
turn_detectionPARTIALDudoxx ext (shard 06). Silero endpointing is default. When DDX_STT_TURN_DETECTOR_ENABLED=1, a semantic EOU model REFINES each Silero speech_end (true turn-end vs mid-utterance pause); off = Silero only.
turn_decisionPARTIALDudoxx ext. When DDX_STT_TURN_DECISION_ENABLED=1, every is_final Results frame carries ddx_turn {decision: continue|complete|incomplete, status, source: llm|livekit, ...} — a dudoxx-LLM verdict over the turn text since the last complete, LiveKit EOU fallback (2-state). Advisory; never re-times a finalize.
filler_wordsPARTIALParakeet drops fillers by default; toggling needs model-config change.

NOOP  Noop (20)

ParamBehaviourNote
versionNOOPLegacy Deepgram field; accept silently, ignore.
tierNOOPLegacy Deepgram field; accept silently, ignore.
profanity_filterNOOPAccepted and echoed; the transcript is returned unfiltered. No profanity filtering is applied.
redactNOOPAccepted and echoed; the transcript is returned unredacted. No redaction is applied — do not rely on this param for PII handling.
keytermNOOPACCEPTED BUT INERT: Deepgram's Nova-3 keyterm surface (max 500 tokens) is parsed and echoed, but has no effect on the transcript — same decoder-side gap as 'keywords'. Not implemented, no acoustic or post-processing effect.
no_delayNOOPDG smart_format no-delay flag; our streaming path emits without an endpointing buffer delay already, so honour-but-noop (echoed).
tagNOOPRepeatable opaque analytics tag; accept silently, log only.
extraNOOPOpaque echo-back string; surface in opening Metadata transaction_key.
mip_opt_outNOOPModel-improvement opt-out; honour silently (no audio retention anyway).
callbackNOOPAsync callback URL; not applicable to streaming WS.
callback_methodNOOPPOST/GET/PUT/DELETE for async callback; ignored in streaming.
paragraphsNOOPAccept; omit paragraph structure from response.
summarizeNOOPInvariant 8: NEVER call server-side LLM; return null/empty.
detect_languageNOOPInvariant 8: NEVER call server-side LLM; return null languages.
detect_topicsNOOPInvariant 8: NEVER call server-side LLM; return empty topics.
detect_entitiesNOOPInvariant 8: NEVER call server-side LLM; return entities:[].
dictationNOOPSpoken commands as regular words; no command interpreter.
searchNOOPRepeatable; omit search_results from response.
alternativesNOOPAlways return 1 alternative; SDK handles missing N-best gracefully.
authorizationNOOPSDK per-request key override; the WS handler reads Authorization header.

ERROR  Error (1)

ParamBehaviourNote
multichannelERRORReject if true with channels>1: close 1008 'multichannel not supported'.

Opt-in capabilities (language support)

These params are honoured ONLY when their server env flag is on; otherwise they keep today's baseline behaviour (speaker:0 / verbatim text / Silero-only endpointing). EXPERIMENTAL languages run but correctness is not guaranteed.

ParamProduction langsEXPERIMENTAL langsNotes
diarizeende, es, frSortformer speaker labels on words[].speaker (additive extension field). Gated by DDX_STT_DIARIZE_ENABLED.
smart_formatende, es, frWFST inverse text normalization on the FINAL transcript. Gated by DDX_STT_SMART_FORMAT_ENABLED.
turn_detectionde, en, es, fr, it, nl, pt—Semantic end-of-utterance refinement over Silero (fail-open). Gated by DDX_STT_TURN_DETECTOR_ENABLED.
turn_decisionLLM: anyLiveKit fallback: its own language set (others → unavailable)Advisory ddx_turn object on every is_final Results frame: decision = continue | complete | incomplete (or null), plus status and source (llm | livekit | null). Never re-times a finalize. Gated by DDX_STT_TURN_DECISION_ENABLED.