Results
Table with columns: Test set, Metric, This model, Base model (zero-shot)| Test set | Metric | This model | Base model (zero-shot) |
|---|
| Òwe-Voice proverbs, 3 unseen speakers (750 utt.) | WER | 0.353 [0.338, 0.369] | 1.012 |
| CER | 0.118 | 0.572 |
| WER ignoring all diacritics | 0.263 | 0.873 |
| Tone error rate (on correctly recognised vowels) | 0.108 | 0.699 |
| FLEURS Yorùbá test (conventional read speech) | WER | 0.794 | 1.014 |
Seed variability on the proverb test set: single seed.
Scoring. References and hypotheses are normalised identically: Unicode NFC, lower-casing, removal of
.,!?;:"“”‘’()[]/\, whitespace collapsed; tone marks and underdots are kept. WER/CER are corpus-level (total
edits / total reference units) with 95% bootstrap confidence intervals over utterances. FLEURS = Yorùbá (yo_ng) test set,
817 utterances ≤ 30 s.
Intended use and limitations
- Intended for research on Yorùbá ASR, especially proverbial / culturally grounded speech.
- Domain-specialised. Fine-tuning on proverbs changes performance on conventional Yorùbá (FLEURS WER 1.014 → 0.794).
For general-domain Yorùbá, evaluate before use.
- Trained and tested on read studio speech; the test speakers are 3 adult female speakers. Conversational,
noisy or dialectal speech is not covered.
- Outputs follow standard Yorùbá orthography as used in the corpus, which is not fully consistent in word segmentation
(e.g. the progressive marker ń written attached or separate).
Usage
import torch, librosafrom transformers import WhisperProcessor, WhisperForConditionalGenerationproc = WhisperProcessor.from_pretrained("Haramiday/owe-voice-whisper-large-v3-yoruba", language="yoruba", task="transcribe")model = WhisperForConditionalGeneration.from_pretrained("Haramiday/owe-voice-whisper-large-v3-yoruba").eval()audio, _ = librosa.load("proverb.wav", sr=16000)features = proc.feature_extractor(audio, sampling_rate=16000, return_tensors="pt").input_featureswith torch.no_grad(): ids = model.generate(features, language="yoruba", task="transcribe")print(proc.tokenizer.batch_decode(ids, skip_special_tokens=True)[0]) # Convenience alternative (decoding can differ slightly from the reported numbers):# from transformers import pipeline# asr = pipeline("automatic-speech-recognition", model="Haramiday/owe-voice-whisper-large-v3-yoruba")# asr("proverb.wav", generate_kwargs={"language": "yoruba", "task": "transcribe"})
Audio must be 16 kHz mono.
Training
Training data. Òwe-Voice (Abolade, 2026): read Yorùbá proverbs recorded in a studio by 12 volunteer native speakers.
The corpus is not publicly released; access is at the discretion of its creators. Fine-tuning used a
speaker-disjoint split: 8 speakers / 3,996 utterances / 5.17 h for training, 1 speaker / 250 utterances for
checkpoint selection (dev), and 3 unseen speakers / 750 utterances / 0.95 h for testing. Each proverb was read exactly once.
Procedure. Full fine-tuning, learning rate 1e-5, linear warm-up 200 steps, batch size 16, fp16, gradient checkpointing, up to 10 epochs; the checkpoint with the lowest dev WER is kept. Language and task fixed to Yorùbá transcription. Seed 42.
Hardware: 1 × NVIDIA H200. Software: transformers 4.57.1, torch 2.8.
Citation
@inproceedings{owevoice2026speech, title = {Evaluating and Fine-Tuning Speech Technologies on Culturally Grounded Yor\`ub\'a Proverbs Using the \`Owe-Voice Proverb Speech Corpus}, author = {Fagoroye, Ayomide Emmanuel and Odumuyiwa, Victor and Abolade, Daud and Ola-obaado, Similoluwa and Taiwo, Iyanda}, booktitle = {Africa in AI Affinity Group at Neural Information Processing Systems (NeurIPS)}, year = {2026}}