← Back to projects

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.

Robust Bengali Speech Recognition Under Domain Shift

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.

  1. Step 1

    Data

    OOD-Speech scale corpus with dialect, noise, and channel shift across speakers.

  2. Step 2

    Baselines

    Whisper-small, IndicWav2Vec, and regional Bengali Whisper for fair comparison.

  3. Step 3

    Adaptation

    GroupDRO fine-tuning with Optuna to reduce worst-group error under shift.

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

ModelScoreNote
Whisper-smallWER 1.177
IndicWav2VecWER 0.557
BengaliAI Whisper (frozen)WER 0.288
BengaliAI Whisper + GroupDROWER 0.174Best

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)), weights

Stack

PyTorchTransformersWhisperWav2Vec2OptunaFastAPIGradioDeep LearningASRDomain Generalization

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.