Model Details
Table with columns: Field, Value| Field | Value |
|---|
| Base model | openai/whisper-small (MIT) |
| Task | Automatic speech recognition (Yoruba, yo) |
| Adaptation | LoRA on q_proj + v_proj, rank 16 / alpha 32, merged |
| Parameters | ~244M (Whisper-small) |
| Formats | Transformers (repo root) · CTranslate2 / faster-whisper (ct2/) |
| Released | 2026-08-15 |
| License | MIT |
The decoder is standard Whisper (language token <|yo|>, task transcribe).
Audio is expected at 16 kHz mono; the feature extractor handles mel
computation on CPU/GPU.
Quickstart
from transformers import WhisperProcessor, WhisperForConditionalGenerationimport librosa repo = "devblockHQ/eti-yoruba-asr"model = WhisperForConditionalGeneration.from_pretrained(repo)proc = WhisperProcessor.from_pretrained(repo, language="yoruba", task="transcribe") audio, sr = librosa.load("yoruba_clip.wav", sr=16000, mono=True)feats = proc(audio=audio, sampling_rate=16000, return_tensors="pt").input_featuresids = model.generate(feats, language="yoruba", task="transcribe")print(proc.batch_decode(ids, skip_special_tokens=True)[0])
faster-whisper (CTranslate2, CPU-friendly)
from faster_whisper import WhisperModel model = WhisperModel("devblockHQ/eti-yoruba-asr/ct2", device="cpu", compute_type="int8")segments, info = model.transcribe("yoruba_clip.wav", language="yo", beam_size=5)print(" ".join(s.text for s in segments))
Command line (faster-whisper)
pip install faster-whisperpython -c "from faster_whisper import WhisperModel; \m = WhisperModel('devblockHQ/eti-yoruba-asr/ct2', device='cpu', compute_type='int8'); \print(' '.join(s.text for s in m.transcribe('yoruba_clip.wav', language='yo', beam_size=5)[0]))"
Training Data
Table with columns: Source, Content, License, Use| Source | Content | License | Use |
|---|
| Base corpus | Yoruba read speech (train/dev/test) | verify before commercial use | train / dev / test |
| IroyinSpeech | Yoruba news, ~5h validated | CC-BY 4.0 | extra train |
WAXAL voicedata/final_yoruba | West African speech (capped sample, 6k clips) | verify before commercial use | extra train |
Attribution: IroyinSpeech © its contributors, licensed CC-BY 4.0. The
base Whisper model is © OpenAI, MIT.
⚠️ Before commercial use, verify the license terms of the base corpus
and WAXAL sample against the current source terms (see data_licensing.md).
Evaluation
WER (word error rate, lower is better) measured on held-out sets — neither
set was used to train the model.
Table with columns: Set, n, WER (raw), WER (no diacritics)| Set | n | WER (raw) | WER (no diacritics) |
|---|
| Read speech (base-corpus test) | 40 | 0.557 | 0.473 |
Conversational (thisniyi/yoruba-speech-project-v2) | 50 | 1.087 | 0.822 |
- No-diacritics strips tone marks and dot-below (
ẹọṣ → eos) before scoring,
isolating word-level errors from tonal/diacritic ones.
- Conversational Yoruba is substantially harder than read/news speech; the
drop from 0.47 → 0.82 shows where the model needs more (conversational)
training data.
- Example (conversational): ref
ọpẹlẹ → pred ọ̀pẹ̀nẹ̀; ref olóriawo →
pred Olóhi àwó ó — the gist is caught, fine-grained words are not.
Note on targets: DevBlock's production gate is WER ≤ 0.20 (API) /
≤ 0.28 (telephony). This release does not yet meet that gate; it is an
open baseline, not a production claim.
Intended Use & Limitations
Intended use: general-purpose Yoruba speech-to-text research and
prototyping, low-resource ASR benchmarking, and building blocks for voice
agents.
Known limitations:
- Conversational and code-mixed speech degrades significantly.
- Tonal and dot-below errors are common — prefer diacritic-insensitive
scoring/processing downstream.
- Trained on a capped WAXAL sample; accent and register coverage is limited.
- Whisper-small capacity caps accuracy on harder audio (noise, overlap,
distant mics).
Reproduce
- Training pipeline:
train/train_yoruba_asr.ipynb (Colab, T4-friendly;
LoRA on q_proj/v_proj, transformers 4.44.2 + peft 0.12.0).
- Held-out WER benchmark:
scripts/bench_wer.py.
- Rebuild the CTranslate2 format:
pip install ctranslate2ct2-transformers-converter --model devblockHQ/eti-yoruba-asr \ --output_dir ct2 --quantization int8
Citation
@misc{eti2026, title = {{Ẹtí}: An Open Yoruba ASR Model based on Whisper-small}, author = {DevBlock Technology Limited}, year = {2026}, howpublished = {\url{https://huggingface.co/devblockHQ/eti-yoruba-asr}},}
MIT License — © 2026 DevBlock Technology Limited. Whisper base weights are
MIT (OpenAI); training-data terms are noted above.
Questions: devblocktechnologies.com ·
GitHub: DEVBLOCK-TECHNOLOGIES-LIMITED/eti-yoruba-asr