Whisper-Medium + Adaptive Layer Attention — Noise-Robust Hinglish ASR

A noise-robust Hinglish (Hindi–English code-switched) speech recognition model for adult and children's speech. It adds an Adaptive Layer Attention (ALA) fusion head to Whisper-medium and trains it with parallel clean/noisy knowledge distillation: a frozen teacher hears clean audio, the student hears the noisy version of the same utterance, and the student is pulled toward the teacher across four different signals.

Relative to the fine-tuned baseline this recovers a substantial amount of the accuracy lost to additive noise, at the cost of ~5.2 M extra parameters (0.7% of the model).

Why layer fusion

Whisper's decoder only ever sees the final encoder layer. But lower encoder layers carry acoustic and phonetic detail that survives noise better than the top layer's semantic abstraction. ALA lets the decoder attend over both.

The 24 encoder layers are split into two blocks (1–12, 13–23) and mean-pooled into two summary representations. A multi-head attention layer uses the final layer as its query and the two block summaries as keys/values, then adds the result back as a residual. The output projection is zero-initialised, so at step 0 the module is an exact identity over base Whisper — training only ever moves away from a known-good starting point, which is what makes it stable to bolt onto an already fine-tuned model.

Training objective

Distillation from a clean-audio teacher into a noisy-audio student, over four terms:

Term Weight What it aligns
Cross-entropy 1.0 Ground-truth transcript
KL divergence (T=2) 0.5 Output token distribution
Encoder cosine distance 0.5 Fused encoder representations
Decoder hidden MSE 0.5 Final decoder hidden states
Cross-attention MSE 0.2 Encoder–decoder alignment, upper layers weighted 2×

Utterances that are pure noise with no speech are mapped to an empty target and excluded from the distillation terms via a mask, so the model learns to emit nothing rather than hallucinate text on non-speech input — a common Whisper failure mode.

Setup: batch 2 × grad-accum 2, AdamW, LR 1e-5, 100 warmup steps with linear decay, fp16 AMP, grad-norm clip 1.0, 15 epochs. Base model is openai/whisper-medium fine-tuned on the clean Hinglish corpus first, then given the ALA head.

Results

Word Error Rate (%), lower is better. This release is epoch 7, selected on combined noisy WER — the best of all 15 epochs under both decode languages.

Test condition Adult Children Combined
Noisy, language="hi" 29.90 24.99 28.21
Noisy, language="en" 30.22 24.87 28.38
Clean, language="hi" 11.46 13.15 12.04
Clean, language="en" 11.37 13.00 11.93

Children's speech is consistently harder on clean audio (13.00% vs 11.37%) but easier under noise (24.87% vs 30.22%), which suggests the adult recordings in this corpus carry more channel variability than the children's.

On clean audio, epoch 8 is marginally better (11.88% combined vs 11.93%). Epoch 7 was released because noise robustness is the objective this model is built for.

Usage

The ALA head is a custom module, so trust_remote_code=True is required.

import torch, torchaudio
from transformers import AutoModelForSpeechSeq2Seq, WhisperProcessor

model_id = "ajju3513/whisper-medium-ala-hinglish-noise-robust"
model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, trust_remote_code=True, attn_implementation="eager"
).eval()
processor = WhisperProcessor.from_pretrained(model_id)

waveform, sr = torchaudio.load("audio.wav")
if sr != 16000:
    waveform = torchaudio.functional.resample(waveform, sr, 16000)
waveform = waveform.mean(dim=0)  # to mono

features = processor(
    waveform.numpy(), sampling_rate=16000, return_tensors="pt"
).input_features

with torch.no_grad():
    ids = model.generate(features, max_length=225, task="transcribe", language="hi")

print(processor.batch_decode(ids, skip_special_tokens=True)[0])

Use language="hi" for Devanagari output and language="en" for romanised output. Both were evaluated; pick whichever matches your downstream text pipeline.

pipeline("automatic-speech-recognition") is not supported, because the fused encoder pass has to run before generate. Use the explicit call above.

Limitations

  • Not a general-purpose ASR model. Fine-tuned on a specific Hinglish corpus with a specific microphone and noise profile. Expect degradation on other domains.
  • Short-form only. Trained and evaluated on utterances under 30 s. Whisper's long-form chunking path is untested here.
  • Noise conditions are synthetic. Noise was mixed in offline; real-world reverberant or overlapping-speaker audio is out of distribution.
  • Absolute WER is high (~28% noisy) because code-switched speech under additive noise is genuinely hard. Read these numbers against the baseline, not against clean English benchmarks.
  • Evaluated in fp32. fp16 inference should be close but was not measured.

Citation

@misc{velpula2026whisperala,
  author = {Velpula, Ajay Kumar},
  title  = {Adaptive Layer Attention for Noise-Robust Hinglish Speech Recognition},
  year   = {2026},
  url    = {https://huggingface.co/ajju3513/whisper-medium-ala-hinglish-noise-robust}
}

Built on openai/whisper-medium (Radford et al., 2022).

Downloads last month
11
Safetensors
Model size
0.8B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ajju3513/whisper-medium-ala-hinglish-noise-robust

Finetuned
(965)
this model

Evaluation results

  • WER (noisy, hi decode) on Hinglish Adult Speech (noisy test split)
    self-reported
    29.900
  • WER (noisy, en decode) on Hinglish Children Speech (noisy test split)
    self-reported
    24.870