Downloads · 30 days
311
52% of all-time downloads
kazalbrur/bangla-asr-conformer-120m-dialects
bangla-asr-conformer-120m-dialects is a automatic speech recognition model from kazalbrur. Use it when you need speech turned into text. It is set up for nemo. The card lists the license as apache-2.0.
A fine-tuned Conformer-CTC model for Bangladeshi regional Bangla speech recognition — the accuracy champion of a two-model family, and the most accurate open Bangla ASR model in its weight class on our evaluation. It…
Downloads · 30 days
311
52% of all-time downloads
All-time downloads
597
Public
Repo size
489 MB
Likes
1
Public
Click a slice to open those files.
.nemo487 MB · 100%
From the Hugging Face model README
bangla-asr-conformer-120m-dialectsA fine-tuned Conformer-CTC model for Bangladeshi regional Bangla speech recognition — the accuracy champion of a two-model family, and the most accurate open Bangla ASR model in its weight class on our evaluation. It leads every accuracy metric and every noise condition, and is the default choice for dialect, noisy, and telephone audio.
ভাটিয়ালি (Bhatiyali) — the boatman's song that drifts downstream along every river of Bengal, carrying the voice of each region it passes. Like the song, this model listens to the whole land — Barishal, Chittagong, Noakhali, Rangpur, Sylhet — and writes down what it hears.
Greedy single-pass decoding, no external language model.
| Property | Value |
|---|---|
| Architecture | Conformer-CTC large (EncDecCTCModelBPE), 4× subsampling |
| Parameters | 121.5M |
| Tokenizer | SentencePiece BPE, 128 tokens (near-character) |
| Sample rate | 16 kHz, mono |
| Decoding | Greedy, single pass (no language model) |
| Training data | joint3 — 400k clips / 970 h, 22 curated Bangla sources |
| eval_export macro WER / CER | 27.45 / 13.22 |
| 9-set macro (incl. SVQ noise) | 22.31 / 9.26 |
| Framework | NVIDIA NeMo |
Word / Character Error Rate (%), strict scoring — Unicode-normalized and punctuation-stripped identically on references and hypotheses:
| Evaluation set | WER | CER |
|---|---|---|
| banspeech (BD broadcast) | 19.94 | 6.21 |
| dialect5 (15 BD dialects) | 40.64 | 27.73 |
| indicvoices (spontaneous) | 12.65 | 3.52 |
| macro-valid (clean read) | 7.30 | 1.22 |
| regspeech12 (BD regional) | 56.78 | 27.46 |
| eval_export macro | 27.45 | 13.22 |
| SVQ spoken-queries · clean | 13.73 | 3.40 |
| SVQ · background speech | 15.38 | 4.34 |
| SVQ · media noise | 18.27 | 5.25 |
| SVQ · traffic noise | 16.15 | 4.22 |
| 9-set macro (incl. SVQ) | 22.31 | 9.26 |
Fine-tuned in a single stage on the joint3 mixture — 400k clips / 970 hours across 22 curated Bangla sources (~30% Bangladeshi-dialect-adjacent), spanning broadcast, spontaneous, read, and regional-dialect speech.
| Setting | Value |
|---|---|
| Steps | 60,000 |
| Effective batch | 32 (bs 8 × grad-accum 4) |
| Learning rate | 1e-4, cosine decay, 1,000-step warmup |
| Precision | bf16 |
| Augmentation | speed / white-noise / gain perturbation + SpecAugment |
| Checkpoint selection | 3-checkpoint weight average (steps 51.25k + 59.25k + final) |
| Hardware | single 12 GB GPU (~28 h) |
Fine-tuning on the broad regional mixture cut eval_export macro WER from the base checkpoint's ~38.1 (zero-shot) to 27.45, with the largest gains on the dialect sets (e.g. dialect5 74.0 → 40.6).
pip install nemo_toolkit[asr]
import nemo.collections.asr as nemo_asr
model = nemo_asr.models.ASRModel.restore_from(
"bangla-stt-conformer-120m-dialects.nemo"
)
model.eval()
result = model.transcribe(["audio_16k_mono.wav"])
print(result[0].text)
# e.g. "ডাক্তার পরশু দিনই সকালে রাজশাহী রওনা হয়ে গেছেন"
Input: 16 kHz mono audio. Output: lowercase, unpunctuated Bangla graphemes — add a punctuation-restoration / normalization pass downstream for human-facing text.
Exact reference-vs-prediction matches from the validation sets — transcribed word-for-word across read, broadcast, and spontaneous speech:
| Reference (= prediction, exact) | Domain |
|---|---|
| বিদ্যালয়ের সামনে একটি খেলার মাঠ এবং মূল ভবনের সামনে একটি পুকুর রয়েছে | clean read |
| বুর্কিনা ফাসো এপর্যন্ত একবারও ফিফা বিশ্বকাপে অংশগ্রহণ করতে পারেনি | clean read |
| ডাক্তার পরশু দিনই সকালে রাজশাহী রওনা হয়ে গেছেন | BD broadcast |
| সেখান থেকে রাতের অন্ধকারে ফাইল গেল সামাদের বাসায় | BD broadcast |
| তুমি কি আরেকটু জোরে কথা বলতে পারবে | spontaneous |
| তুমি কি আমাকে বলতে পারবে কোন সিনেমার সেরা রিভিউ আছে | spontaneous |
On deep regional dialect the model faithfully transcribes dialect forms (মুই for আমি, আমনে for আপনি, লগে for সাথে) rather than normalizing to standard Bangla — accurate to what was spoken, though standard-text references score these as substitutions (see Limitations).
Scope: this table is our three in-house systems only, on the project's internal 9-condition suite (5 read/broadcast/dialect sets + 4 SVQ noise conditions). For a comparison against the public field on contamination-audited slices, see Independent benchmark — BanglaBench-v1 below, where the picture is more qualified.
| Model | Params | Decode | 9-set macro WER / CER | Notable |
|---|---|---|---|---|
| Bhatiyali (this model) | 121.5M | greedy | 22.31 / 9.26 | wins 10 of these 11 conditions |
Srotoswini (fastconformer-116m) | 115.6M | greedy | 27.89 / 11.85 | ~2× throughput |
| w2v-BERT + KenLM (retired) | 580M | beam + LM | 25.12 / 11.00 | clean read speech only |
Among these three, Bhatiyali wins every macro average at every normalization level, sweeps all four noise conditions, and is the most robust under simulated telephone channel (GSM 8 kHz: +2.3 WER on dialect, vs +6.2 for Srotoswini-Fast) — while using ~1/5 the parameters and ~1/22 the compute of the 580M language-model system it replaced. A 1,000-hour archive transcribes in ~4 GPU-hours (~250× real-time, batch 16); ~51× real-time single-stream on 8 CPU threads.
Scored against 19 other open-weight Bangla ASR models on 11 slices, 4,042 clips, 8.29 h, one scoring pipeline, contamination audited.
Slices are grouped by who they favour, and the headline macro deliberately excludes the tier drawn from our own training corpora. Tier A = the corpora we fine-tune on, tier B = neutral (Google SVQ bn_bd, held out for everyone), tier C = FLEURS-bn + CommonVoice-bn, which the public baselines trained on and we did not.

| Bhatiyali | best public model | Whisper large-v3 | |
|---|---|---|---|
| parameters | 121M | 121M | 1550M |
| headline WER (tier B+C) | 14.43 | 14.39 | 78.67 |
| headline CER | 3.92 | 4.40 | 42.68 |
| tier A — BD dialect + project sets | 27.46 | 38.13 | 83.46 |
| dialect5 (Bangladeshi regional) | 40.64 | 76.73 | 101.18 |
| RegSpeech12 (12 districts) | 56.78 | 61.66 | 94.35 |
| SVQ clean (neutral) | 14.57 | 15.06 | 79.58 |
| FLEURS-bn (favours public) | 14.66 | 14.32 | 77.06 |
What the fine-tuning bought is Bangladeshi dialect capability at no cost to general accuracy: −36.1 WER on dialect5 and −8.1 on IndicVoices, with the neutral tier unchanged (−0.17, not significant).

So: choose this model when your audio is Bangladeshi — regional, telephone, or noisy. For generic or Indian-Bengali read speech the public base is equally good and free.
It is nonetheless the strongest model in the field on dialect: no evaluated system does better, and the best public model is 33 WER points behind on dialect5 (Bengali.AI winner, 73.75 vs 40.64).

Intended use:
Limitations:
@misc{bangla-asr-conformer-120m-dialects,
author = {kazalbrur},
title = {Bhatiyali: Bangla Regional Dialects ASR (120M, Conformer)},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/kazalbrur/bangla-asr-conformer-120m-dialects}
}
Bhatiyali (ভাটিয়ালি, the song) listens deepest; Srotoswini (স্রোতস্বিনী, the river) runs fastest. Same 970-hour regional training, same greedy decoding, same ~120M class — two points on one frontier. Run Bhatiyali when every word matters, Srotoswini when every second does; or run both and let a confidence referee pick per utterance (measured oracle ceiling: −2.35 macro WER).