Today we're releasing whisper-som-small, our first public Somali ASR checkpoint. Fine-tuned from OpenAI's Whisper-small on 67.2 hours of transcribed Somali read speech, it achieves 11.4% WER on held-out radio speech, a 38% relative improvement over the zero-shot multilingual baseline.
Background
Whisper is a strong multilingual ASR model, but Somali is severely underrepresented in its training data. The zero-shot Whisper-small baseline on our radio test set gives 18.4% WER, usable in some contexts, but not reliable enough for production transcription or downstream NLP tasks that depend on accurate text.
Fine-tuning on in-domain data is the obvious fix. The challenge is data: high-quality aligned speech is expensive to produce. Our Somali STT Corpus gave us the raw material to do this properly.
The dataset
Somali STT Corpus contains 67.2 hours of Somali read speech: 35,810 clips from 39 speakers, each reading prompted sentences on everyday topics such as proverbs, recipes, weddings and school. In total the speakers read 14,270 distinct sentences, and several speakers read the same sentence. Every clip is a 48 kHz mono recording with a sentence-level transcript.
67.2h
Total audio
35,810
Clips
39
Speakers
14,270
Distinct sentences
Each clip comes with the sentence it was read from, the speaker's gender, age and dialect, and the topic. About 89% of the hours are male voices and 11% female. Three quarters of the hours are the Maxaa tiri dialect and the rest are two variants labelled Maxaatiri. Other regional varieties, such as Maay, are not covered, so the model is best at standard read speech.
Training setup
We fine-tuned Whisper-small (244M parameters) for 8,000 steps on a single A100 40GB GPU, using Hugging Face transformers with Seq2SeqTrainer, a learning rate of 1e-5, linear warmup over 500 steps, and gradient accumulation over 4 steps for an effective batch size of 16.
We froze the encoder for the first 2,000 steps to preserve general acoustic representations before allowing end-to-end fine-tuning. This reduced early divergence and improved final WER by ~1.2 points over full fine-tuning from step 0.
Results
On the held-out radio test set, whisper-som-small achieves 11.4% WER, down from 18.4% zero-shot. The absolute improvement is largest on broadcast news (−8.2%) and smallest on conversational speech (−4.1%), where our training data was thinner.
Usage
import whisper
# Load the fine-tuned model
model = whisper.load_model("goobolabs/whisper-som-small")
# Transcribe audio
result = model.transcribe("somali_audio.wav", language="so")
print(result["text"])
# 'Beeraha Soomaaliya waxay u baahan yihiin tignoolajiyad cusub.'
# With word-level timestamps
result = model.transcribe("audio.wav", language="so", word_timestamps=True)
for seg in result["segments"]:
print(f"{seg['start']:.1f}s to {seg['end']:.1f}s: {seg['text']}")Writing about Somali language technology, data, and AI from the team in Mogadishu.