Africa TTS
Text-to-speech for 92 African languages and English, with voice cloning, built on Kyutai's Pocket TTS. Every language has a default voice, so all you need is text and a language code.
🎙️ Try it live · 🔊 Samples · 🤗 Model
An ongoing project: native-speaker feedback is what improves it most. See CONTRIBUTING.md.
⚡ Fast and high-fidelity speech on CPU, no GPU needed
Africa TTS runs on PyTorch (fp32 unquantised) by default: fast, full-fidelity audio without
quantization degradation, faster than real time on an ordinary CPU. On a 4-vCPU cloud machine it speaks 2.4×
faster than real time (speed benchmark).
It also runs on an NVIDIA GPU with device="cuda".
🎯 Intelligible
On held-out sentences transcribed by Omnilingual ASR, Africa TTS is more intelligible than MMS-TTS in 21 of 27 languages. The 813M OmniVoice, seven times its size, is more intelligible in 24 of 29, by small margins: benchmark.
Install
pip install africa-tts
English also needs espeak-ng (apt install espeak-ng / brew install espeak-ng). The first time,
it asks before downloading the model (about 440 MB) from Hugging Face, then caches it and works
offline. In scripts, approve the download with --yes, AfricaTTS.load(download=True), or
africa-tts --download beforehand. On a CPU-only Linux machine, you can install the CPU build of
PyTorch with pip install --extra-index-url https://download.pytorch.org/whl/cpu africa-tts.
Use
africa-tts "Akwaaba! Yɛfrɛ me Kofi." --lang twi -o twi.wav
africa-tts --list-languages
africa-tts serve # the API server below, on port 8000
from africa_tts import AfricaTTS
tts = AfricaTTS.load() # PyTorch, CPU (default)
audio = tts.generate("Akwaaba! Yɛfrɛ me Kofi.", lang="twi") # default Twi voice
audio = tts.generate("Hello Ghana!", lang="eng", voice="my_voice.wav") # clone a 3-10 s clip
tts.save(audio, "out.wav")
# Code-switching: English loanwords & entities are spoken in English (enabled by default)
audio_cs = tts.generate("Mepɛ sɛ mekɔ high school wɔ regional hospital no nkyɛn.", lang="twi")
for chunk in tts.stream("Akwaaba! Yɛfrɛ me Kofi.", lang="twi"): # 80 ms chunks
...
tts_gpu = AfricaTTS.load(device="cuda") # PyTorch on NVIDIA GPU
- Languages: ISO 639-3 codes (
twi,hau,yor,swh,zul,amh,eng, ...); seeafrica-tts --list-languages. - Code-switching: In multilingual speech, African languages frequently borrow English nouns,
technical terms, and named entities. Africa TTS automatically detects English words and phrases
(curated and language-ID-verified from
AfriSpeech/africa-nounsandAfriSpeech/african-named-entities) and pronounces them with English phonetics (espeak-ng) while preserving the surrounding words in native African phonology. Disable withcodeswitch=False. - Numbers: spell them out ("twenty", not "20").
Run it elsewhere
| API server | africa-tts serve: HTTP, WebSocket streaming, OpenAI-compatible; PyTorch CPU/GPU; Docker or Modal: server/ |
| On device | sherpa-onnx bundles, C front end, Android wrapper: mobile/ |
| Experimental languages | 657 untrained languages, read through their closest trained one; help us test: docs/EXPERIMENTAL_LANGUAGES.md |
More
- Benchmarks: speed, and intelligibility per language
- Model, how it was made, data and limitations
- Training recipe · ONNX export · training code
- Status and roadmap · Contributing
License
Code: MIT (LICENSE). Model and default voices: CC-BY-NC-4.0. espeak-ng (English) is GPL-3.0-or-later. Built by AfriSpeech.
Metadata
Release files for africa-tts 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| africa_tts-0.5.1.tar.gz | 721.3 kB | With provenance | Details for africa_tts-0.5.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| africa_tts-0.5.1-py3-none-any.whl | Python 3 | none | any | Details for africa_tts-0.5.1-py3-none-any.whl |
Total release size: 765.0 kB
Release files / africa_tts-0.5.1.tar.gz
| Download URL | africa_tts-0.5.1.tar.gz |
|---|---|
| Size | 721.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4fd956da8c827f10a214bf1bb1f769303c5d415ce1700e62a12bcbad1dbde46a
|
|
BLAKE2b-256 checksum How to use checksums |
9d85cbc084225641abfd65f6ac827a672d0c60f7711a7a16486c09006b630165
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logRelease files / africa_tts-0.5.1-py3-none-any.whl
| Download URL | africa_tts-0.5.1-py3-none-any.whl |
|---|---|
| Size | 43.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
04da7a38efe53f338a70ad745868b9ec472d25f566690bb5b7d211c03f2a2b7f
|
|
BLAKE2b-256 checksum How to use checksums |
035ead78bb2a250a7d2dd8b4748adf110d53799873f4f169dfa2e0838751a5e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logSecurity for africa-tts 0.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for africa_tts-0.5.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.