Svarupa ASR 0.6B v2 (svarupa_v2-asr-0.6b)
Svarupa ASR 0.6B v2 continues Svarupa ASR 0.6B v1 (sampathlonka/svarupa_asr_0.6b_v1), itself a fine-tune of NVIDIA Nemotron 3.5 ASR 0.6B (nvidia/nemotron-3.5-asr-streaming-0.6b). It is specialized for Hinglish (Hindi-English code-switching), conversational chatbot audio, rural telephony, and formal Hindi / Indian English.
The architecture is NVIDIA FastConformer-Transducer (RNNT), cache-aware streaming, about 600M parameters. This release is the step-4000 checkpoint of a 10,000-step continuation (the run was stopped at step 4049).
Model Details
- Parent checkpoint:
sampathlonka/svarupa_asr_0.6b_v1(Svarupa ASR v1, Run-7 step 10,000) - This checkpoint: global step 4,000 (
v8_step4000_phase2) - Base pretrained model:
nvidia/nemotron-3.5-asr-streaming-0.6b - Architecture: FastConformer-Transducer (RNNT) with cache-aware streaming
- Parameter count: ~637M
- Sampling rate: 16 kHz mono
- Languages: Hindi (
hi), English (en), Hinglish code-switching - Prompt mode used at eval:
langID
Training mix
Continued from v1 on the v8 mix (2,939.3 hours, 1,436,235 cuts). Sampling weights are mix weights, not hour shares. The chatbot slice is the Silero-VAD cleaned set.
| Slice | Domain | Hours | Cuts | Mix weight |
|---|---|---|---|---|
Hinglish (hien) |
Hindi-English code-mixed speech | 937.8 | 474,195 | 50% |
Formal Hindi (hi) |
Broadcast, read, and conversational Hindi | 1,320.2 | 694,666 | 25% |
| Vaani | Rural telephony (upsampled) | 480.5 | 182,400 | 10% |
| Chatbot | Silero-VAD cleaned customer voice-bot audio | 4.5 | 2,664 | 7% |
Indian English (enin) |
Indian-accented English | 120.1 | 69,709 | 4% |
| Svara | Vedic / recited domain | 76.2 | 12,581 | 4% |
Schedule: Noam peak from lr=0.015, warmup 400 steps, batch_duration=200 s, max_steps=10000. The published weights are step 4,000.
Benchmarks
Scored 27 Sep 2026 with the v7 text normalizer. Beam-4 (malsd_batch) is reported when the set has at most 2,000 clips. Lahaja (6,152 clips) is greedy only. Full tables are in benchmark_results.md.
| Benchmark | Samples | v2 WER |
|---|---|---|
Hinglish code-switched (val_hien) |
250 | 21.22% (beam 4) |
Formal Hindi (val_hi) |
250 | 22.85% (beam 4) |
| Conversational chatbot | 236 | 29.83% (beam 4) |
| FLEURS Hindi | 418 | 14.54% (beam 4) |
| Kathbath Hindi | 1,929 | 11.06% (beam 4) |
| Gramvaani rural telephony | 1,032 | 39.80% (beam 4) |
| Combined evaluation | 630 | 23.01% (beam 4) |
| Curated Lahaja multi-dialect | 6,152 | 24.54% (greedy) |
Same protocol as the published v1 card. Chatbot and the combined set are a bit lower than v1; Hinglish, formal Hindi, FLEURS, Kathbath, and Gramvaani are a bit higher. Lahaja matches v1.
Quickstart
pip install nemo_toolkit['asr'] torch torchaudio
import nemo.collections.asr as nemo_asr
from omegaconf import open_dict
model = nemo_asr.models.ASRModel.restore_from("svarupa_v2-asr-0.6b.nemo")
model.eval()
cfg = model.cfg.decoding
with open_dict(cfg):
cfg.strategy = "malsd_batch"
if "beam" not in cfg:
cfg.beam = {}
cfg.beam.beam_size = 4
cfg.beam.max_symbols = 35
cfg.beam.return_best_hypothesis = True
cfg.beam.score_norm = True
cfg.beam.allow_cuda_graphs = False
model.change_decoding_strategy(cfg)
transcriptions = model.transcribe(["sample.wav"], batch_size=4)
print(transcriptions[0].text if hasattr(transcriptions[0], "text") else transcriptions[0])
svarupa_v2-asr-0.6b.pt is the matching state_dict. config.yaml is the NeMo config restored with the .nemo.
Intended use
Real-time transcription of bilingual Indian speech: voice bots, telephony, and Hindi-English code-switching. Input is 16 kHz mono.
License
Apache 2.0. Fine-tuned by the Svarupa team from nvidia/nemotron-3.5-asr-streaming-0.6b via sampathlonka/svarupa_asr_0.6b_v1.