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, WhisperForConditionalGeneration
import 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_features
ids = 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-whisper
python -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 ctranslate2
ct2-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