Swahili TTS
Authors: Zephania and Isack Odero
Swahili text-to-speech at 24 kHz. Input is Swahili text; output is speech in a female narration voice. The voice follows a reserved prompt shipped as reference.wav. That prompt is not a scored clip and is not a training speaker.
This is not Sukuma TTS. For Sukuma speech, translate with nileagi/nileagi-suk-mt first, then synthesize with nileagi/nileagi-suk-tts.
| Companion recognizer | nileagi/nileagi-sw-stt |
| Collection | nileagi/nileagi-sw |
Demo
| File | Text |
|---|---|
samples/sample_01.wav |
Habari za asubuhi. Karibu kwenye sauti hii. |
Digits are spoken as words. 2500 becomes elfu mbili na mia tano. A paragraph that does not fit in one generation is split on sentences, then clauses, then words, and joined.
Summary
| Task | Text-to-speech |
| Language | Swahili (sw) |
| Direction | Swahili text → Swahili speech |
| Sample rate | 24 kHz mono |
| Voice | Reserved female prompt (6.7 s) |
| Continue-trained on that prompt | No |
| Long text | Split, then joined. Up to 4,000 characters in the local service |
| Primary check | CER of a readback, plus listening |
Evaluation
Read back with nileagi/nileagi-sw-stt. The prompt clip is not in the score.
| Set | n | WER | CER |
|---|---|---|---|
| Unseen short lines | 5 | 2.2% | 0.5% |
| Paragraph (64 s, 563 characters) | 1 | 9.5% | 5.4% |
How to use
After access is approved:
HTTP API (port 8093):
curl -s -H 'Content-Type: application/json' \
-d '{"text":"Habari za asubuhi. Salio lako ni 2500."}' \
http://127.0.0.1:8093/v1/speech -o speech.wav
The local service applies the text frontend and the long-form split. Prefer that path for paragraphs.
Intended use
- Research synthesis of Swahili narration and short service lines
- Paragraphs that must stay intelligible after a split
- Non-commercial teaching demos
Out of scope
- Commercial products, hosted paid APIs, or advertising
- Sukuma or English as input
- A scripture clip as the voice prompt
- Training on recognizer guesses
- One unsplit generation of a long paragraph
Limitations
- A noisy or mis-transcribed prompt will sound wrong
- One generation holds about fifteen seconds of new speech beside the prompt
- A join can be audible if the cut falls mid-phrase
- Number expansion is a heuristic
Related
- Recognizer:
nileagi/nileagi-sw-stt - Sukuma TTS:
nileagi/nileagi-suk-tts - Technical report:
TECHNICAL_REPORT.tex
Access
Weights are gated under CC BY-NC 4.0.
- Open Request access at the top of this page and describe your intended use.
- After approval, authenticate (
hf auth loginorHF_TOKEN) and download.
Attribute NileAGI when you use the packaged release. The non-commercial term is inherited from the pretrained speech model and the published Swahili adaptation used as the starting checkpoint. Commercial licensing: hi@nileagi.com.
License
Weights: CC BY-NC 4.0.
See LICENSE and NOTICE.md.
Citation
@misc{nileagi-sw-tts-2026,
title = {Swahili text-to-speech},
author = {Zephania and Isack Odero},
year = {2026},
howpublished = {Hugging Face},
url = {https://huggingface.co/nileagi/nileagi-sw-tts},
note = {NileAGI}
}