ddx-cuda-live-stt

Streaming ASR · NVIDIA Parakeet-TDT-0.6B-v3 · :4600 · Deepgram-shaped wire format (v1.0.0 frozen).

Recommended SDK drop-in: point the official @deepgram/sdk base URL at the bare host. The SDK appends /v1/listen itself. Send a Deepgram credential (Authorization: Token <key> header, or the token, <key> subprotocol in the browser) and the connection routes to the Deepgram-compatible session. With no credential it falls through to the native handler. /v1/listen/dg and /deepgram/v1/listen are explicit aliases — not what you configure in the SDK.

Auth forms

FormWireUsed by
HeaderAuthorization: Token <key> (capital T, single space)server SDK (Node, Python)
SubprotocolSec-WebSocket-Protocol: token, <key>browser SDK (cannot set headers)

Audio format

16 kHz mono linear16 (int16 LE). Chunk 3200 bytes (=100 ms) every ~50 ms so live VAD/endpointing runs. Other rates/channels are resampled/downmixed server-side.

Frame sequence

On a Deepgram session: Metadata (open) → Results (interim + final) → UtteranceEnd (on VAD speech-end) → Metadata (final, on CloseStream). SpeechStarted + UtteranceEnd require vad_events=true.

Query params (live registry)

Full table with behaviour badges + notes: /v1/help/params. Rendered live from the dispatch registry — never drifts.

ParamBehaviourNote
encodingSUPPORTEDParakeet expects PCM-16 (linear16); transcode mulaw/alaw/opus.
sample_rateSUPPORTEDParakeet trained at 16 kHz; resample any declared rate.
channelsPARTIALAccept up to 2; mix to mono internally.
endpointingSUPPORTEDSilero/WebRTC VAD; emit speech_final after silence>endpointing ms.
modelPARTIALAccept any value, route to Parakeet, echo in metadata.model_info.name.
versionNOOPLegacy Deepgram field; accept silently, ignore.
tierNOOPLegacy Deepgram field; accept silently, ignore.
languageSUPPORTEDParakeet-TDT-0.6B-v3 supports 25 languages; pass as model hint.
punctuatePARTIALParakeet basic punctuation; post-processor for accuracy.
profanity_filterNOOPAccept; return unfiltered initially. Regex pass deferred.
redactNOOPAccept; return unredacted. Roadmap.
diarizePARTIALBaseline speaker:0. When DDX_STT_DIARIZE_ENABLED=1, real Sortformer speaker labels on words[] (en supported; de/fr/es EXPERIMENTAL).
multichannelERRORReject if true with channels>1: close 1008 'multichannel not supported'.
numeralsSUPPORTEDParakeet TDT head includes ITN; enable via model config.
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.
keywordsPARTIALRepeatable 'kw[:intensifier]'; pass to NeMo hot-word biasing if avail.
keytermPARTIALNova-3 only; max 500 tokens; no-op initially.
interim_resultsSUPPORTEDStream partial Results frames; if false buffer to final only.
utterancesPARTIALPer-utterance segmentation via VAD + utterance_end_ms silence.
utt_splitPARTIALSilence threshold seconds; map to VAD min_silence_ms.
utterance_end_msSUPPORTEDSilence (ms) after last word before UtteranceEnd fires; drives SDK end-of-speech timing. None falls back to VAD default.
no_delayNOOPDG smart_format no-delay flag; our streaming path emits without an endpointing buffer delay already, so honour-but-noop (echoed).
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.
vad_eventsSUPPORTEDSilero/WebRTC VAD; emit SpeechStarted + UtteranceEnd frames.
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.
wordsSUPPORTEDParakeet provides word-level timestamps natively.
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.
filler_wordsPARTIALParakeet drops fillers by default; toggling needs model-config change.
alternativesNOOPAlways return 1 alternative; SDK handles missing N-best gracefully.
authorizationNOOPSDK per-request key override; the WS handler reads Authorization header.