Results
Table with columns: Split, Books held out, WER| Split | Books held out | WER |
|---|
| Val | LUK, PHP, PRO, PSA | ~30.4% |
Evaluated on 400 randomly sampled clips from the val split of alhassanprince/kusaal-asr-dataset. Test-set WER (JON, MAT, REV, RUT) to be reported in the accompanying paper.
Context: Kusaal had no prior ASR system or public speech corpus before this work. A 30.4% WER on a first model trained on ~82 hours of scripture audio, with book-held-out evaluation, represents a strong baseline for a zero-resource language.
Sample outputs
PSA.89.22
REF: dataa kae na nyaŋ oo bugusim sɔb kae na mugus oo
HYP: m taa kae na nyaŋ o bugusim sɔb kae na mugus o
PRO.26.15
REF: gbanyaa na nɔk o nuugu tɔm laan amaa ka ukim niŋ nɔɔrin la an yɛl
HYP: yaa ya na nɔk o nuugu tɔm laan amaa ka o ku m niŋ nɔɔrin la an yɛl
PSA.98.5
REF: nwɛɛm kɔnne tis zugsɔb la yɔɔm ka nwɛ kɔn
HYP: nwɛɛm kɔn nɛ tis zugsɔb la yɔɔm ka nwɛɛ kɔɔn
The model correctly handles Kusaal-specific characters: ŋ ɔ ɛ ʋ.
Training details
Table with columns: Parameter, Value| Parameter | Value |
|---|
| Base model | openai/whisper-small (241M params) |
| Method | LoRA (PEFT) |
| LoRA rank | 32 |
| LoRA alpha | 64 |
| LoRA targets | q_proj, v_proj |
| Trainable params | 3,538,944 (1.44% of total) |
| Epochs | 2 |
| Optimizer steps | 3,074 |
Training data
Trained on alhassanprince/kusaal-asr-dataset:
- 30,820 verse-level WAV clips, ~81.7 hours
- 16 kHz mono 16-bit PCM WAV
- Kusaal orthographic transcripts (lowercase; includes ŋ ɔ ɛ ʋ)
- Book-held-out splits across 63 books of the Bible
- Train split: 24,597 clips · 69.33 hrs · 55 books
Usage
Load and transcribe
import torch
import soundfile as sf
from transformers import WhisperProcessor, WhisperForConditionalGeneration
from peft import PeftModel
base = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")
model = PeftModel.from_pretrained(base, "PrinceAlhassanNasamu/kusaal-whisper-small-lora")
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model.eval()
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
audio, sr = sf.read("your_audio.wav", dtype="float32")
inputs = processor.feature_extractor(audio, sampling_rate=16000, return_tensors="pt")
input_features = inputs.input_features.to(device)
with torch.no_grad():
ids = model.generate(
input_features=input_features,
max_length=160,
no_repeat_ngram_size=3,
)
transcript = processor.batch_decode(ids, skip_special_tokens=True)[0]
print(transcript)
Requirements
pip install transformers peft soundfile torch
Limitations
- Single domain — trained on scripture audio only; may underperform on conversational, broadcast, or spontaneous Kusaal speech
- Single speaker style — limited speaker diversity in training data
- Book-domain gap — val/test books (LUK, PSA, MAT, REV etc.) represent a distribution shift; conversational speech will be larger
- Orthography — transcripts are lowercase normalised; punctuation limited
- Repetition — rare hallucination loops on difficult clips (mitigated with
no_repeat_ngram_size=3)
Audio sources & acknowledgments
The speech audio underlying this model's training data comes from scripture recording ministries who record and distribute audio in minority languages as a free public service. Their work made this dataset possible.
Faith Comes By Hearing (FCBH) / Hosanna
- New Testament audio: Kusaal NT Drama recording (
KUSTBLN2DA)
- © Wycliffe / Hosanna (1996, 2005); distributed by Faith Comes By Hearing
- faithcomesbyhearing.com
Davar Partners International
GILLBT — Ghana Institute of Linguistics, Literacy and Bible Translation
- Kusaal Bible text (GILLBT translation) used for all transcript alignment
- gillbt.org
Global Recordings Network (GRN)
- Additional audio: Kusal "Look, Listen & Live" series and "Words of Life" programs
- globalrecordings.net
Please respect their terms when using this model: non-commercial and research/education use only. Do not redistribute the underlying audio commercially without clearing rights with the original rights-holders directly.
License
This model is a derivative work with multiple licensing layers:
Table with columns: Layer, Source, Terms| Layer | Source | Terms |
|---|
| Base model weights | openai/whisper-small | MIT |
| LoRA adapter weights | This repo | CC BY 4.0 (research use) |
| Training audio | FCBH, Davar, GRN | Non-commercial only |
| Training text | GILLBT Kusaal Bible | Non-commercial only |
For commercial deployment, contact the original audio rights-holders:
Citation
@misc{alhassanprince_kusaal_asr_2026,
author = {Alhassan, Prince Nasamu},
title = {Kusaal Whisper-small LoRA: First ASR Model for Kusaal},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/PrinceAlhassanNasamu/kusaal-whisper-small-lora},
note = {LoRA fine-tune of openai/whisper-small; VAL WER ~30.4\%;
trained on 81.7h of verse-level Kusaal scripture audio}
}
Author
Prince Nasamu Alhassan
Independent NLP Researcher · University of Ghana, Legon · GhanaNLP
HuggingFace: PrinceAlhassanNasamu
Kaggle: alhassanprince