This page runs Shivaani Live — a genuinely incremental streaming decoder, unlike the offline model on the main page. Pick a lookahead below; lower lookahead means lower latency but a noticeably higher word-error rate, since the model has less future context to disambiguate each word.
DAI CLD ASR is a cloud speech engine with fast built-in endpointing and natively punctuated, cased output. DAI LCL is Shivaani Live, a cache-aware streaming FastConformer with a CTC decoding head running entirely on this device — each audio block is decoded exactly once and never re-processed, with tunable lookahead and response timing. Word-level timestamps aren't exposed by either, so file download/diarization stay on the offline page.
WebSocket protocol: ws://<host>/ws/live?api_key=...&engine=cloud&lookahead=480&source_lang=hin_Deva&target_lang=eng_Latn&min_silence_ms=900&finalize_silence_s=1.6&tts_streaming=0
— engine is cloud (DAI CLD ASR, default) or local (DAI LCL);
lookahead/min_silence_ms/finalize_silence_s only apply to
local. Send 16kHz mono PCM16 frames, receive
{type: partial|status|final|translation_update|tts_update|tts_stream_start|tts_chunk|tts_stream_end|lookahead_changed, ...}.
final carries the transcript (text, an id, and
translation_pending) the moment ASR finishes — it does not wait on translation or TTS.
When a language pair is set, translation_update {id, translation} follows once ready, then
audio: by default one tts_update {id, tts_audio} (base64 WAV, 24kHz mono, spoken by
Devnagri TTS) once the whole
clip is generated; with tts_streaming=1, a tts_stream_start {id, sample_rate, channels,
bit_depth} followed by a run of tts_chunk {id, seq, pcm} (base64 raw PCM16) as each
chunk finishes generating, then tts_stream_end {id, ok} — lower time-to-first-audio, since
playback of earlier chunks can start before later ones exist. Either way this page auto-plays audio as it
becomes available and patches the matching line in place. status {id, stage} events
(pausing, finalizing, translating, synthesizing) narrate
progress in between. Switch lookahead mid-connection with {"type":"set_lookahead","ms":80}
(language pair, silence-timing, and streaming-mode params are fixed for the life of the connection —
reconnect to change them). Full API reference (including how to get your own key) is in the
developer docs.