The highest-accuracy Igbo automatic speech recognition system to date. Fine-tunes only 2.5M parameters (0.25%) of Meta's MMS-1B-all via adapter training, combined with a 5-gram KenLM language model for beam search rescoring.
Six consecutive training runs crashed with NaN loss before we identified the fix. The root cause: when expanding vocabulary (89 → 153 chars), the randomly initialized classification head creates alignment paths with zero probability → infinite CTC loss → corrupted gradients.
21.1% of evaluation references contain tone marks that CTC-based ASR cannot produce, inflating WER by ~2.1 pp. We recommend tone-normalized WER as the primary metric:
1from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
2from safetensors.torch import load_file
3import torch
4
5# Load processor and base model
6processor = Wav2Vec2Processor.from_pretrained("path/to/asr_checkpoint")
7model = Wav2Vec2ForCTC.from_pretrained(
8 "facebook/mms-1b-all",
9 vocab_size=processor.tokenizer.vocab_size, # 153, NOT len(tokenizer)
10 ignore_mismatched_sizes=True,
11)
12
13# Overlay adapter weights
14adapter_weights = load_file("path/to/adapter.ibo.safetensors")
15state = model.state_dict()
16state.update(adapter_weights)
17model.load_state_dict(state)
18model.eval()
19
20# Transcribe
21inputs = processor(audio_array, sampling_rate=16000, return_tensors="pt")
22with torch.no_grad():
23 logits = model(**inputs).logits
24
25# Greedy decoding
26pred_ids = torch.argmax(logits, dim=-1)
27text = processor.batch_decode(pred_ids)[0]
28
29# Or beam search with KenLM (recommended, −7pp WER)
30from pyctcdecode import build_ctcdecoder
31# See GitHub repo for full beam search setup
A FastAPI server is available at
api/server.py:
Model weights are not hosted on this repository. See the
GitHub repo for access instructions.
This model is released under
CC-BY-NC-SA 4.0.
1@misc{chimezie2026igboasr,
2 title={From 48\% to 28\%: Building Igbo ASR with Adapter Fine-Tuning, KenLM Rescoring, and a TTS Feedback Loop},
3 author={Chimezie, Emmanuel},
4 year={2026},
5 url={https://github.com/chimezie90/igbotts}
6}