Case study
Robust Bengali Speech Recognition Under Domain Shift
Domain-robust Bengali ASR with GroupDRO. Mean WER drops from 0.288 to 0.174 versus a frozen regional Whisper.
At a glance
Plain summary for recruiters and visitors. Technical detail follows below.
- What it is
- I built a Bengali speech recognizer that stays useful when dialect, noise, and recording quality change. The published benchmark shows a large drop in word error versus a generic Whisper baseline.
- What I owned
- Solo end to end. Corpus prep, baseline runs, GroupDRO fine tuning, evaluation, and the portfolio transcript gallery.
- Why it matters
- Lower word error means fewer bad captions and transcripts in Bangla audio products. The table shows about 40% extra relative gain after domain robust fine tuning on top of a strong regional Whisper baseline.
- Try it on this page vs full project
- This page runs a free transcript gallery on fixed sample clips. Full Whisper weights with Gradio and FastAPI serving stay on request for hiring managers.
Quick comparison
- Gallery sample
Each chip compares model transcripts on the same Bengali clip. Whisper-small often drifts more than GroupDRO on hard domains.
- Published overall WER
Whisper-small 1.177. Frozen regional Whisper 0.288. GroupDRO 0.174 on the published table.

Problem
Bengali ASR models degrade under domain shift across dialects, noise, and recording conditions in large speech corpora.
Method
Benchmarked Whisper-small, IndicWav2Vec, and regional Whisper on OOD-Speech. Applied GroupDRO domain-generalization fine-tuning with Optuna. Portfolio play uses a Cloudflare transcript gallery.
Result
Mean WER 0.174 with GroupDRO versus 0.288 frozen regional and 1.177 Whisper-small on the published table. Interactive weight-backed demos stay on request.
Architecture
How the system is shaped. Full implementation stays private.
Step 1
Data
OOD-Speech scale corpus with dialect, noise, and channel shift across speakers.
Step 2
Baselines
Whisper-small, IndicWav2Vec, and regional Bengali Whisper for fair comparison.
Step 3
Adaptation
GroupDRO fine-tuning with Optuna to reduce worst-group error under shift.
Step 4
Serving
Portfolio Cloudflare gallery for recruiters. Full Gradio/FastAPI with weights on request.
Mean WER (published eval)
Published overall WER table aligned with the ACM TALLIP writeup. Frozen regional Whisper drops WER by about 76% versus Whisper-small. GroupDRO drops WER by about 40% versus that frozen regional run.
| Model | Score | Note |
|---|---|---|
| Whisper-small | WER 1.177 | |
| IndicWav2Vec | WER 0.557 | |
| BengaliAI Whisper (frozen) | WER 0.288 | |
| BengaliAI Whisper + GroupDRO | WER 0.174 | Best |
Algorithm
GroupDRO domain-robust fine-tuning
Optimize for high-loss domains so the model does not overfit easy recording conditions.
for step in training:
losses = [loss(batch_d) for d in domains]
weights = soft_update(weights, losses) # up-weight hard domains
total = sum(w * L for w, L in zip(weights, losses))
total.backward(); optimizer.step()Key logic
Compact illustrative snippet (Worst-group emphasis (illustrative)). Not the full codebase.
def group_dro_loss(losses: list[float], weights: list[float], eta: float):
# Raise weight on domains with higher loss
weights = normalize([w * exp(eta * L) for w, L in zip(weights, losses)])
return sum(w * L for w, L in zip(weights, losses)), weightsStack
Try a transcript gallery
Free Cloudflare demo with published WER numbers and curated Bangla transcript comparisons. Does not run Whisper in the browser.
Sample
Source code
Full source is available to hiring managers on request. The public page shows architecture, algorithms, and compact proofs only.