Sukuma STT
Authors: Zephania and Isack Odero
Sukuma speech recognition for the macron orthography (ā ē ī ō ū). Input is Sukuma audio; output is Sukuma text.
This is not English or Swahili ASR. For Swahili → Sukuma text, use nileagi/nileagi-suk-mt.
| Lite sibling | nileagi/nileagi-suk-stt-lite |
| Collection | nileagi/nileagi-suk |
Demo
One short demo clip (16 kHz mono), pitch-shifted so the raw speaker identity is not exposed:
| File | Reference (Sukuma) |
|---|---|
samples/sample_01.wav | Ū Luuzi ūhaya, "Mayū nakwīta gīt'ūmo ūlīhayīla." |
from transformers import pipeline
stt = pipeline(
"automatic-speech-recognition",
model="nileagi/nileagi-suk-stt",
chunk_length_s=30,
ignore_warning=True,
)
print(stt("samples/sample_01.wav")["text"])
Prefer 16 kHz mono. Split longer files into ≤30 s chunks.
Summary
| Task | Automatic speech recognition |
| Language | Sukuma (suk) |
| Direction | Sukuma speech → Sukuma text |
| Orthography | Latin with vowel macrons |
| Training windows | 16,792 · ~98.1 h |
| Validation windows | 636 · ~3.6 h |
| Test windows | 94 · ~0.5 h |
| Window length | 0.5–30 s |
| Split rule | whole document groups |
| Primary metrics | WER, CER |
Evaluation
Held-out document-group test (94 windows) — the number to quote:
| Split | WER | CER |
|---|---|---|
| Test (94) | 21.3% | 4.9% |
Lite on the same split: WER 26.1%, CER 6.4%. Conversational or noisy audio will be worse than read-aloud Sukuma.
How to use
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
import torch
repo = "nileagi/nileagi-suk-stt"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if device.startswith("cuda") else torch.float32
processor = AutoProcessor.from_pretrained(repo)
model = AutoModelForSpeechSeq2Seq.from_pretrained(repo, torch_dtype=torch_dtype)
model.to(device)
stt = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
chunk_length_s=30,
batch_size=8,
device=device,
ignore_warning=True,
)
print(stt("sukuma.wav")["text"])
from huggingface_hub import hf_hub_download
wav = hf_hub_download("nileagi/nileagi-suk-stt", "samples/sample_01.wav")
print(stt(wav)["text"])
Intended use
- Research transcription of Sukuma read-aloud speech
- Offline batch ASR for narrative Sukuma
- Downstream pipelines that already have Sukuma audio
Out of scope
- English or Swahili speech recognition
- Conversational, telephone, or high-noise field audio
- Legal / medical transcripts
- Real-time assistants without further adaptation
- Commercial products without a licence from NileAGI
Limitations
- Single read-aloud speaker setting
- Small document-group test (94 windows); scores move if the test documents change
- Names and rare stems are often approximated
- Macron spelling may differ from other Sukuma orthographies
Related
- Lite STT:
nileagi/nileagi-suk-stt-lite - MT:
nileagi/nileagi-suk-mt - TTS:
nileagi/nileagi-suk-tts
Access
Weights are gated under CC BY-NC-SA 4.0.
- Open Request access at the top of this page and describe your intended use.
- After approval, authenticate (
huggingface-cli loginorHF_TOKEN) and download or load the model.
Attribute NileAGI when you use or redistribute the weights. Adapted weights must stay under CC BY-NC-SA 4.0. Commercial licensing: hi@nileagi.com.
License
Weights: CC BY-NC-SA 4.0.
See LICENSE and NOTICE.md.
Citation
@misc{nileagi-suk-stt-2026,
title = {Sukuma speech-to-text},
author = {Zephania and Isack Odero},
year = {2026},
howpublished = {Hugging Face},
url = {https://huggingface.co/nileagi/nileagi-suk-stt},
note = {NileAGI}
}