Views
No views yet
First public Automatic Speech Recognition model for Balti, a critically low-resource Tibetic language spoken in Gilgit-Baltistan, Pakistan.
| Model | WER (%) | CER (%) |
|---|---|---|
| Whisper-small (zero-shot) | 159.19 | 152.52 |
| Whisper-base (fine-tuned) | 44.54 | 15.61 |
| Whisper-small (fine-tuned, this model) | 26.74 | 8.67 |
Zero-shot WER above 100% indicates hallucination — the model generates words not present in the reference. Fine-tuning on 16.8 hours of Balti speech reduces this to an impressive 26.74% WER and 8.67% CER on the 538-utterance speaker-disjoint validation set.
pip install transformers torch librosa1from transformers import pipeline
2
3asr = pipeline(
4 "automatic-speech-recognition",
5 model="mohdali1/whisper-small-balti",
6 generate_kwargs={"language": "urdu", "task": "transcribe"}
7)
8
9result = asr("your_balti_audio.wav")
10print(result["text"])1from transformers import WhisperForConditionalGeneration, WhisperProcessor
2import torch
3import librosa
4
5model_id = "mohdali1/whisper-small-balti"
6processor = WhisperProcessor.from_pretrained(
7 model_id, language="urdu", task="transcribe"
8)
9model = WhisperForConditionalGeneration.from_pretrained(model_id)
10
11audio, sr = librosa.load("your_balti_audio.wav", sr=16000)
12inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
13
14with torch.no_grad():
15 generated_ids = model.generate(inputs.input_features)
16
17transcription = processor.batch_decode(
18 generated_ids, skip_special_tokens=True
19)[0]
20print(transcription)GroupShuffleSplit on
client_id, seed 42)| Split | Samples | Speakers |
|---|---|---|
| Train | 9,519 | 122 |
| Validation | 538 | 14 |
| Parameter | Value |
|---|---|
| Base model | openai/whisper-small |
| Language token | urdu (closest Nastaliq script in Whisper) |
| Task | transcribe |
| Learning rate | 1e-5 |
| Effective batch size | 16 (8 × 2 gradient accumulation) |
| Max steps | 1,000 |
| Optimizer | AdamW |
| Precision | fp16 |
| Gradient checkpointing | Enabled |
| Hardware | NVIDIA Tesla T4 (Google Colab) |
| Training time | 1h 54m |
| Step | Train Loss | Val Loss | Raw WER (%) |
|---|---|---|---|
| 250 | 0.7905 | 0.4037 | 40.19 |
| 500 | 0.5968 | 0.3208 | 33.37 |
| 750 | 0.4542 | 0.2963 | 31.37 |
| 1000 | 0.4652 | 0.2830 | 30.07 |
Note: The raw training WER at step 1,000 was 30.07%. However, the final normalized evaluation (with punctuation removed) on the speaker-disjoint held-out set yielded the reported 26.74% WER and 8.67% CER, confirming the model generalizes well to unseen speakers.
1@misc{ali2026baltivoice,
2 author = {Muhammad Ali},
3 title = {BaltiVoice: A Speech Corpus and Fine-tuned Whisper ASR System for the Balti Language},
4 year = {2026},
5 eprint = {2606.03504},
6 archivePrefix = {arXiv},
7 primaryClass = {cs.CL},
8 url = {https://arxiv.org/abs/2606.03504}
9}