Devnagri
Shivaani ASR
Shivaani Live

True cache-aware streaming, four lookaheads.

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.

Live microphone

idle
Lookahead
Applies to the next utterance (mid-utterance switches queue until you pause).
Noise suppression (experimental)
RNNoise pre-filter, off by default. Helps in some noisy conditions but can occasionally seed a wrong first word early in an utterance that then persists — worth A/B-ing on your own mic/room before trusting it. Change before you hit Start.
Source language
Drives number/date/currency normalization and spelling correction on the final transcript of each line -- independent of translation below. The model itself identifies language from audio alone and isn't biased by this choice; it only affects post-processing. Change before you hit Start.
Live translation (optional)
Translates each finalised line. Covers 22 Indic languages + English (narrower than the 65 languages Shivaani can transcribe). Uses the source language above. Change before you hit Start.
Translate to →
Auto-play translation audio
Spoken by Devnagri TTS. Turn off to only see the translated text — every line still gets a replay button (▶) so you can hear it whenever you want.
Streaming TTS (experimental)
Play audio as it's generated instead of waiting for the whole clip -- lower time-to-first-audio, more noticeable on longer lines. Off by default; falls back to one complete clip per line either way for the replay button. Change before you hit Start.
Response timing
How long to wait after you stop talking before committing to a final transcript. Lower values respond faster but are more likely to cut a sentence into fragments on a natural mid-thought pause. Change before you hit Start.
End-of-speech pause 900ms
Extra bridge wait 1.6s
ASR Engine
DAI CLD ASR runs in the cloud with fast, natively punctuated output. DAI LCL runs entirely on this device -- fully private, tunable lookahead and response timing, no network dependency for transcription itself. Change before you hit Start.
Your transcript will appear here once you start speaking.

About this page

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.