sampathlonka/svarupa_asr_0.6b_v1
Svarupa ASR 0.6B v1 (svarupa_asr_0.6b_v1)
Svarupa ASR 0.6B v1 is a fine-tuned version of Nemotron_3.5_asr_0.6b (nvidia/nemotron-3.5-asr-streaming-0.6b), specialized for Hinglish (Hindi-English code-switching), conversational customer chatbot audio, rural telephony acoustics, and formal Hindi/Indian-English.
The model is built on NVIDIA's FastConformer Transducer (RNNT) cache-aware streaming architecture (600M parameters) and fine-tuned on a 2-node GB10 GPU cluster across multi-stage distributed optimization runs consuming nearly 3,000 cleaned audio hours and over 1.4 million speech cuts.
Model Details
- Base Pretrained Model:
nvidia/nemotron-3.5-asr-streaming-0.6b(NVIDIA) - Model Architecture: FastConformer-Transducer (RNNT) with Cache-Aware Streaming
- Parameter Count: ~600M parameters
- Sampling Rate: 16 kHz mono PCM
- Supported Languages & Dialects: Hindi (
hi), English (en), Hinglish (hi-encode-switching), 16+ Indian regional dialects - Streaming Latency: Cache-aware chunk size = 160ms with left-context caching
Training Data & Cleaned Hours
The model was trained on a curated multi-slice acoustic mix totaling 2,945.4 cleaned audio hours and 1,436,901 audio cuts across diverse real-world domains:
Training History & Step Strategy
- Initial Optimization Phase: ~71,000 – 85,000 sample-based steps on the primary 815,105-utterance corpus to establish initial transducer alignment.
- Duration-Batched Multi-Node Phase (V2 Pipeline): 20,000 cumulative steps across 2 nodes (8 H100 GPUs) using Lhotse dynamic duration batching (
batch_duration=240sper GPU = 480 seconds / 8 minutes of speech per step): - Run 5: 5,000 steps establishing code-switching foundation.
- Run 6: 5,000 steps incorporating Whisper-cleaned chatbot audio.
- Run 7 (Final): 10,000 steps (9 full epochs) ingesting rural telephony acoustics and synthetic pairs.
- Total Audio Throughput: Over 12,000 cumulative audio hours processed across optimization passes.
Key Performance Benchmarks
All evaluations performed with Lever 2 (v7 Normalizer) and Lever 1 (Beam Search Decoding, Beam=4):
Quickstart & Inference
1. Installation
pip install nemo_toolkit['asr'] torch torchaudio2. Loading the Model with NeMo
import nemo.collections.asr as nemo_asr
from omegaconf import open_dict
# Restore the model
model = nemo_asr.models.ASRModel.restore_from("svarupa_asr_0.6b_v1.nemo")
model.eval()
# Configure Beam Search Decoding (Beam Size = 4)
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)
# Transcribe audio file (16kHz mono WAV recommended)
transcriptions = model.transcribe(["sample.wav"], batch_size=4)
print("Transcription:", transcriptions[0])Intended Use & Limitations
- Intended Use: Real-time conversational AI, voice bots, telephony voice assistants, customer service automation, and transcription of bilingual Indian speech.
- Input Requirements: 16,000 Hz single-channel audio.
- Code-Switching Capabilities: Handles seamless switching between English and Hindi within the same sentence (matrix language Hindi with embedded English nouns, verbs, and tech terminology).
License & Attribution
- Base Model:
nvidia/nemotron-3.5-asr-streaming-0.6b(NVIDIA) - Fine-Tuned by: Svarupa Team
- License: Apache 2.0
- Citation: Please cite Svarupa ASR 0.6B v1 when using this model in academic or commercial applications.
