--- title: Varuna STT emoji: 🌊 colorFrom: blue colorTo: indigo sdk: gradio sdk_version: "6.3.0" python_version: "3.10" app_file: app.py pinned: false license: other license_name: skunkworks-modified-mit short_description: Hindi ASR — upload mono/stereo, transcript per-channel models: - SkunkWorkLabs/varuna-stt - nvidia/nemotron-speech-streaming-en-0.6b datasets: - SkunkWorkLabs/hindi-asr-benchmark hf_oauth: false hardware: zero-gpu --- # Varuna STT 🌊 Hindi ASR by **SkunkWorks Labs** — a 0.6 B-parameter Conformer-RNNT model fine-tuned from NVIDIA's [`nemotron-speech-streaming-en-0.6b`](https://huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b). Upload mono or stereo audio; stereo channels are transcribed independently (useful for call-center recordings where the agent and customer are on separate channels). > ⚡ **This Space runs on ZeroGPU (NVIDIA A100).** Inference is fast — > a 5-second clip transcribes in under a second. The same weights hit > **RTFx 25×** (≈175 ms p50 latency per clip) on an H100; quality is > identical across hardware. ## What is "Nemotron 0.6 B streaming, cache-aware"? The base model is a **streaming, cache-aware Conformer**. Two things to know: - **Streaming** — the encoder consumes audio in small chunks (tens of ms) rather than requiring the full utterance up-front. This means you can start emitting tokens while the speaker is still talking, instead of waiting for end-of-speech. - **Cache-aware** — attention key/value states are carried over across chunks. The model "remembers" what came before without re-encoding the whole audio every step, so per-chunk compute is bounded and constant in memory. **Why this matters for voice calling / IVR / real-time agents:** - **Low first-token latency** — partial transcripts within a few hundred ms of speech start, suitable for live captions and barge-in detection. - **Bounded compute per chunk** — predictable latency under load; a single GPU can serve many concurrent calls because per-stream memory stays flat. - **No "wait until they stop talking"** — important for natural turn-taking in voicebots; the LLM downstream can start reasoning while the user is still speaking. - **Per-channel stereo** — agent/customer separation comes for free when call audio is recorded on two channels (this Space demos that). ## Why Varuna - 🥇 **Best WER on indictts (9.75 %)** out of Varuna, ElevenLabs Scribe v1, Deepgram Nova-2, and Sarvam Saarika v2.5 on the [SkunkWorkLabs Hindi ASR benchmark](https://huggingface.co/datasets/SkunkWorkLabs/hindi-asr-benchmark). - **Trained on ~3 K hours of Hindi** (Shrutilipi, IndicVoices, Kathbath, Gramvaani, Vaani, Lahaja, IndicTTS, …). - **ITN output by default** — digits, ordinals (`1st`/`3rd`), Indian-numbering commas (`2,50,000`), and Devanagari punctuation (`।`). Drops straight into IVR / transcription pipelines with no separate ITN postprocessor. - See the [model card](https://huggingface.co/SkunkWorkLabs/varuna-stt) for full per-subset WER/CER tables, training mix, and inference example. ## Limitations - **No code-switching yet.** Trained on monolingual Hindi audio. Hindi-English mid-sentence switches may produce transliteration artifacts. Bilingual fine-tune is on the roadmap. - **Codec-degraded audio** (telephony, heavy compression) is weaker than studio-clean speech. - **16 kHz mono internally** — other rates are resampled automatically. ## 📬 Contact Need help with the **training recipe** or want to **fine-tune Varuna** on your own data? Reach out: **harshris2314@gmail.com**.