CoolFace
Modelpublic

kazalbrur/bangla-asr-conformer-120m-dialects

sourceHugging Faceapache-2.0updated 17d agoView on Hugging Face
1likes191downloads
Model Card

Bhatiyali — ভাটিয়ালি

Bangla Regional Dialects ASR (120M) · bangla-asr-conformer-120m-dialects

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


Model Details

PropertyValue
ArchitectureConformer-CTC large (EncDecCTCModelBPE), 4× subsampling
Parameters121.5M
TokenizerSentencePiece BPE, 128 tokens (near-character)
Sample rate16 kHz, mono
DecodingGreedy, single pass (no language model)
Training datajoint3 — 400k clips / 970 h, 22 curated Bangla sources
eval_export macro WER / CER27.45 / 13.22
9-set macro (incl. SVQ noise)22.31 / 9.26
FrameworkNVIDIA NeMo

Accuracy

Word / Character Error Rate (%), strict scoring — Unicode-normalized and punctuation-stripped identically on references and hypotheses:

Evaluation setWERCER
banspeech (BD broadcast)19.946.21
dialect5 (15 BD dialects)40.6427.73
indicvoices (spontaneous)12.653.52
macro-valid (clean read)7.301.22
regspeech12 (BD regional)56.7827.46
eval_export macro27.4513.22
SVQ spoken-queries · clean13.733.40
SVQ · background speech15.384.34
SVQ · media noise18.275.25
SVQ · traffic noise16.154.22
9-set macro (incl. SVQ)22.319.26

Training

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.

SettingValue
Steps60,000
Effective batch32 (bs 8 × grad-accum 4)
Learning rate1e-4, cosine decay, 1,000-step warmup
Precisionbf16
Augmentationspeed / white-noise / gain perturbation + SpecAugment
Checkpoint selection3-checkpoint weight average (steps 51.25k + 59.25k + final)
Hardwaresingle 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).

Usage

bash
pip install nemo_toolkit[asr]
python
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.

Qualitative Examples

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

How it compares — our own systems

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.

ModelParamsDecode9-set macro WER / CERNotable
Bhatiyali (this model)121.5Mgreedy22.31 / 9.26wins 10 of these 11 conditions
Srotoswini (fastconformer-116m)115.6Mgreedy27.89 / 11.85~2× throughput
w2v-BERT + KenLM (retired)580Mbeam + LM25.12 / 11.00clean 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.

Independent benchmark — BanglaBench-v1

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.

[image]

Bhatiyalibest public modelWhisper large-v3
parameters121M121M1550M
headline WER (tier B+C)14.4314.3978.67
headline CER3.924.4042.68
tier A — BD dialect + project sets27.4638.1383.46
dialect5 (Bangladeshi regional)40.6476.73101.18
RegSpeech12 (12 districts)56.7861.6694.35
SVQ clean (neutral)14.5715.0679.58
FLEURS-bn (favours public)14.6614.3277.06

Read this honestly

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

[image]

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

[image]

  • —Best CER of all 20 models evaluated; wins 6 of the 11 slices
  • —Beats 15 of the 19 other models on accuracy and throughput simultaneously
  • —Every dialect slice is same-corpus with our training data — see the benchmark card's contamination matrix before quoting tier A

Intended Use & Limitations

Intended use:

  • —Accurate transcription of Bangladeshi regional Bangla — dialect, noisy, or telephone audio
  • —Retail customer records, call transcripts, spoken-query understanding
  • —Offline / batch pipelines where accuracy is the priority

Limitations:

  • —Noakhali dialect remains the hard wall (~55 WER) — the most acoustically divergent BD region; reproducible across every eval. Closing it needs Noakhali training data, not decoding.
  • —Trained on punctuation-stripped text → emits no punctuation or numeral normalization.
  • —Optimised for Bangladeshi regional Bangla; performance on other languages will be poor.
  • —WER on dialect sets scored against standard references understates true quality — the model faithfully transcribes dialect forms, which standard references count as errors.

Citation

bibtex
@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}
}

The pair

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