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.
⚡ Runs on a CPU, no GPU needed
Africa TTS speaks 2.5× faster than real time on 4 CPU cores (a dedicated 4-vCPU cloud
machine): a 10-second sentence takes about 4 seconds. It has 110M parameters and the int8 model is
about 190 MB, so it runs on laptops, servers and phones. Speed depends on the CPU: on a 2020
laptop (AMD Ryzen 5 4500U) it is about 1.3× real time. Measure your own machine with benchmarks/speed.py; details in
docs/BENCHMARKS.md.
🎯 Intelligible
On held-out sentences in 47 languages, transcribed by Omnilingual ASR, Africa TTS has a lower character error rate than MMS-TTS (9.0% vs 10.3%, better in 21 of 27 languages) and the 3.3B Sunbird Orpheus (5.9% vs 10.3%), and is close to the 813M OmniVoice (8.8% vs 8.4%) at a seventh of its size: benchmark.
Install
pip install africa-tts
# English also needs espeak-ng: apt install espeak-ng / brew install espeak-ng
No PyTorch and no GPU: it runs on ONNX Runtime (sherpa-onnx). The first time, it asks before
downloading the model (about 190 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.
Use
africa-tts "Akwaaba! Yɛfrɛ me Kofi." --lang twi -o twi.wav
africa-tts --list-languages
from africa_tts import AfricaTTS
tts = AfricaTTS.load()
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")
- Languages: ISO 639-3 codes (
twi,hau,yor,swh,zul,amh,eng, ...); seeafrica-tts --list-languages. - Numbers: spell them out ("twenty", not "20").
Run it elsewhere
| API server | HTTP, WebSocket streaming, OpenAI-compatible; Docker or Modal, CPU only: 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 / Ghana NLP.
Metadata
Release files for africa-tts 0.2.0
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.2.0.tar.gz | 792.2 kB | With provenance | Details for africa_tts-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| africa_tts-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for africa_tts-0.2.0-py3-none-any.whl |
Total release size: 823.0 kB
Release files / africa_tts-0.2.0.tar.gz
| Download URL | africa_tts-0.2.0.tar.gz |
|---|---|
| Size | 792.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11dc906a49a65e98ae99511c35841bcec16e79f922ed40b45ce6e0b30904c99d
|
|
BLAKE2b-256 checksum How to use checksums |
a8db79a530b13a60dcb93208ae1b5a7c884def943eed35f0d5d45887996afc66
|
| 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 7, 2026.
Transparency logRelease files / africa_tts-0.2.0-py3-none-any.whl
| Download URL | africa_tts-0.2.0-py3-none-any.whl |
|---|---|
| Size | 30.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2618039b926ad1859c1cda02764ae15b77b3749181b2aeffb0e3efca10b02883
|
|
BLAKE2b-256 checksum How to use checksums |
233312096f6ca45db455f2da64b3209287742fe0c933c7b40d9fbae41d8c243f
|
| 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 7, 2026.
Transparency logSecurity for africa-tts 0.2.0
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.2.0.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 7, 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.