Views
No views yet
nvidia/nemotron-3.5-asr-streaming-0.6b
(638M) for multi-dialect Arabic speech recognition (undiacritized output).Private / internal model. Evaluate on your own data before production use.
| WER | CER | |
|---|---|---|
| Base (nemotron-3.5-asr-streaming-0.6b, zero-shot) | 0.592 | 0.252 |
| This model (fine-tuned) | 0.422 | n/a |
clean_text scoring (strip tashkil + tags,
keep punctuation + dialect spelling) — so every row is directly comparable.| Model | Params | Zero-shot WER | Fine-tuned WER | CER (best) |
|---|---|---|---|---|
| whisper-large-v3-turbo 🏆 | 809M | 0.590 | 0.344 | 0.115 |
| cohere-transcribe-arabic | 2.0B | 0.457 | 0.357 | 0.137 |
| whisper-medium | 769M | 0.717 | 0.358 | 0.123 |
| nemotron-3.5-asr (streaming) | 638M | 0.592 | 0.422 | — |
| whisper-small | 244M | ~0.77 | 0.428 | 0.151 |
| qwen3-asr-0.6b | 938M | 0.756 | 0.676 | 0.408 |
| qwen3-asr-1.7b | 1.7B | — | training | — |
whisper-large-v3-turbo (WER 0.344), with cohere-transcribe-arabic
a close second (0.357).cohere-transcribe-arabic (0.457, Arabic-specialized). A full
fine-tune (all ~2B params, low LR) now improves it to 0.357; an earlier 32 GB
LoRA attempt had instead degraded it (0.510, overfit) — full-parameter tuning
with best-checkpoint selection was the fix.nemotron-3.5-asr.oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented (private).augmentation column. Derived from
oddadmix/dialectal-arabic-lahgtna-v2-smaller.[laughter], [exhale], [inhale], [mumble], [cough], timestamps, …).nvidia/nemotron-3.5-asr-streaming-0.6b · full fine-tune (no LoRA)ar prompt)train_nemotron.py, export_nemo_data.py, normalize.py, eval_nemotron.py) plus requirements.txt. See FINETUNE.md for the full walkthrough + lessons learned. Trained on oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented (private) — swap in any HF audio dataset with audio + text columns. normalize.py is the shared text cleaning (strip tashkil + non-verbal tags, keep dialectal letters گ ڨ چ).1pip install -r requirements.txt # NeMo main + Blackwell pins
2
3python export_nemo_data.py --out data/nemo # wav + NeMo manifests (per-sample lang=ar)
4
5NUMBA_CUDA_USE_NVIDIA_BINDING=1 PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
6 python train_nemotron.py --run_name my-run --precision 32 --batch_duration 40
7
8python eval_nemotron.py --model runs/my-run/.../checkpoints/my-run.nemo--precision 32 is required (the numba RNNT loss can't take bf16), and
NUMBA_CUDA_USE_NVIDIA_BINDING=1 lets numba compile for sm_120. The model is
prompt-conditioned, so the manifests carry a per-sample lang=ar field.1# needs NeMo main: pip install "nemo_toolkit[asr] @ git+https://github.com/NVIDIA/NeMo.git@main"
2import nemo.collections.asr as nemo_asr
3m = nemo_asr.models.ASRModel.from_pretrained("oddadmix/nemotron-3.5-asr-arabic-dialectal")
4print(m.transcribe(["clip.wav"], prompt={"target_lang": "ar"})[0].text)numba==0.61.2 + NUMBA_CUDA_USE_NVIDIA_BINDING=1 +
cuda-python<13 to emit sm_120 code, and fp32 (the numba loss can't take
bf16). Nemotron 3.5 requires NeMo main (its EncDecRNNTBPEModelWithPrompt
class isn't in any release) and a per-sample lang=ar prompt.