Ẹtí — Whisper-small fine-tuned for Yoruba ASR

Ẹtí (Yoruba: ẹtí, "ear") is a fine-tuned Whisper-small model for Yoruba automatic speech recognition, released as open source by DevBlock Technology Limited (devblocktechnologies.com).

Yoruba is spoken by ~50M people but has limited commercial ASR coverage. Ẹtí is an early, openly-licensed step toward filling that gap — with a CPU-friendly CTranslate2 build so it can run on edge hardware and low-cost servers.


Model Details

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

Transformers (PyTorch)

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

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.

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}},
}

License & Contact

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

Downloads last month
33
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for devblockHQ/eti-yoruba-asr

Finetuned
(3714)
this model

Datasets used to train devblockHQ/eti-yoruba-asr

Evaluation results

  • WER on Yoruba read-speech test (base corpus)
    self-reported
    0.557
  • WER (no diacritics) on Yoruba read-speech test (base corpus)
    self-reported
    0.473
  • WER on Yoruba conversational (thisniyi/yoruba-speech-project-v2)
    self-reported
    1.087
  • WER (no diacritics) on Yoruba conversational (thisniyi/yoruba-speech-project-v2)
    self-reported
    0.822