CoolFace
Modelpublic

sampathlonka/svarupa_asr_0.6b_v1

sourceHugging Faceapache-2.0updated 12d agoView on Hugging Face
0likes8downloads
Model Card

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-en code-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:

Dataset SliceDomain & AcousticsCleaned HoursAudio CutsSampling Weight
Formal Hindi (`hi`)High-quality formal broadcast, read & conversational Hindi1,320.2 hrs694,66642%
Hinglish Code-Switched (`hien`)Real-world Hindi-English intra-sentential code-mixed speech937.8 hrs474,19535%
Vaani Rural Telephony (`vaani`)Dialectal rural telephony conversations (8 kHz upsampled)480.5 hrs182,40010%
Indian English (`enin`)Indian-accented English aligned with Devanagari script120.1 hrs69,7094%
Svara Vedic Domain (`svara`)Chanted & recited Vedic, Sanskrit, and ceremonial mantras76.2 hrs12,5814%
Conversational Chatbot (`chatbot`)Real customer voice bot audio re-transcribed with Whisper-v310.6 hrs3,3505%
Total Cleaned DatasetMulti-Domain Acoustic Mix2,945.4 hrs1,436,901100%

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=240s per 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):

BenchmarkDomainSvarupa ASR v1
Hinglish Code-Switched (val_hien)Code-mixed conversational speech20.76%
Formal Hindi (val_hi)Formal broadcast & domain Hindi22.38%
Conversational ChatbotReal-world customer voice bot queries30.11%
FLEURS HindiRead speech benchmark14.25%
Kathbath Hindi (AI4Bharat)Standard crowdsourced read Hindi10.81%
Gramvaani Rural TelephonyNoisy telephony audio38.95%
Combined EvaluationMulti-dialect mixed verification23.34%
Curated Lahaja Multi-Dialect16+ regional dialects across India24.54%

Quickstart & Inference

1. Installation

bash
pip install nemo_toolkit['asr'] torch torchaudio

2. Loading the Model with NeMo

python
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.