A fine-tune of openai/whisper-base that transcribes Hindi, English and
code-switched Hinglish speech from India directly into Roman script, the way people type it
(kya scene hai, not क्या सीन है). English stays verbatim and Hindi comes out in everyday Roman spelling.
| Path | Format | Size | Use with |
|---|---|---|---|
/ (root) |
Transformers, fp32 safetensors | 290 MB | transformers |
ct2/fp32/ |
CTranslate2, float32 | 290 MB | faster-whisper |
ct2/int8/ |
CTranslate2, int8 | 76 MB | faster-whisper (fast on CPU) |
The int8 build is within 0.2 WER points of fp32 on the held-out test sets below (same decoding, GPU).
Transformers
from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="abhishekgautamm/whisper-base-hinglish", chunk_length_s=30)
print(asr("clip.wav", generate_kwargs={"language": "en", "task": "transcribe"})["text"])
faster-whisper (CTranslate2)
from huggingface_hub import snapshot_download
from faster_whisper import WhisperModel
path = snapshot_download("abhishekgautamm/whisper-base-hinglish-v2", allow_patterns=["ct2/int8/*"])
model = WhisperModel(f"{path}/ct2/int8", device="cpu", compute_type="int8")
segments, _ = model.transcribe("clip.wav", language="en", beam_size=1, without_timestamps=True)
print("".join(s.text for s in segments).strip())
Always decode with language="en" and without timestamps (without_timestamps=True in faster-whisper; transformers does this by default). The model was trained to emit Roman text under the English token,
for Hindi speech too. Adding no_repeat_ngram_size=3, repetition_penalty=1.1 (as in the evaluation) suppresses
rare repetition loops.
Word / character error rate (%), greedy decoding, fp32. References and outputs are lower-cased, punctuation-stripped and digits spelled out; Devanagari references are romanized with LIPI (the same tool used to build the training targets).
Public benchmarks, full test sets (none of these were used in training)
| Dataset | Domain | Clips | WER | CER |
|---|---|---|---|---|
| Svarah | Indian-accented English | 6,656 | 24.1 | 13.9 |
| Monsoon en-IN | Indian English | 2,102 | 16.4 | 8.7 |
| CoSHE-Eval | Long-form Hinglish (~60 s clips) | 1,985 | 36.6 | 19.8 |
| FLEURS hi_in | Hindi (read) | 418 | 34.5 | 16.0 |
Held-out test sets of the training corpora (official test splits; SPIRE/wSPIRE by held-out speaker, VoiceBench by held-out prompt)
| Dataset | Domain | Clips | WER | CER |
|---|---|---|---|---|
| IISc wSPIRE | Indian English, incl. whispered | 150 | 2.4 | 1.2 |
| IISc SPIRE-SIES | Spontaneous technical English | 150 | 23.9 | 14.8 |
| MUCS 2021 (Hi-En) | Hindi-English code-switch | 250 | 28.4 | 19.3 |
| MUCS 2021 (Hindi) | Hindi (read) | 250 | 29.2 | 12.6 |
| HiACC (adult) | Hinglish | 150 | 18.1 | 8.4 |
| HiACC (children) | Hinglish | 150 | 17.8 | 7.8 |
| VoiceBench | Spoken assistant prompts | 250 | 16.9 | 8.7 |
| SLURP | Assistant commands | 250 | 25.3 | 16.2 |
| Fluent Speech Commands | Short commands | 100 | 2.9 | 1.9 |
| Timers and Such | Numbers / times | 200 | 2.9 | 2.4 |
About 250 hours, with every target romanized by LIPI: MUCS 2021 Hindi-English (86 h), Common Voice English (48 h),
IISc wSPIRE (31 h), IISc SPIRE-SIES (26 h), MUCS 2021 Hindi (14 h), VoiceBench (13 h), SLURP (7 h),
Timers and Such (5 h), HiACC (4 h), Fluent Speech Commands (0.5 h). The language token is forced to en. Training ran for 3 epochs (released checkpoint),
LR 1e-4 with 300 warm-up steps, fp16 mixed precision.
hai / hain, ki / kii).ct2/fp32/model.bin 290 MBmodel.safetensors 290 MBct2/int8/model.bin 76 MBopenai/whisper-base