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 runs on audio.cpp by default: a 144 MB model, no PyTorch, faster than real time on an ordinary laptop, streaming its first audio about 0.1 s after it gets the text. On a 2020 laptop CPU (AMD Ryzen 5 4500U, 4 threads) it speaks 2.3-2.8× faster than real time. It has 110M parameters, so it runs on laptops, servers and phones.
The unquantised PyTorch engine is optional (pip install "africa-tts[torch]"): it also runs on a
GPU, and on a 4-vCPU cloud machine it speaks 2.4× faster than real time
(speed benchmark).
🎯 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 # default: audio.cpp on the CPU, no PyTorch
pip install "africa-tts[torch]" # optional: the unquantised PyTorch engine (CPU or GPU)
English also needs espeak-ng (apt install espeak-ng / brew install espeak-ng). The first time,
it asks before downloading the model (about 150 MB; 440 MB for PyTorch) 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. For PyTorch on a CPU-only
Linux machine, add --extra-index-url https://download.pytorch.org/whl/cpu to get the small
CPU build.
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() # audio.cpp, CPU
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")
for chunk in tts.stream("Akwaaba! Yɛfrɛ me Kofi.", lang="twi"): # 80 ms chunks
...
tts = AfricaTTS.load(backend="torch") # PyTorch, unquantised (pip install "africa-tts[torch]")
tts = AfricaTTS.load(device="cuda") # PyTorch on an NVIDIA GPU
- 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 | africa-tts serve: HTTP, WebSocket streaming, OpenAI-compatible; audio.cpp on CPU, or PyTorch (CPU/GPU) with the torch extra; 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.4.2
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.4.2.tar.gz | 722.5 kB | With provenance | Details for africa_tts-0.4.2.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| africa_tts-0.4.2-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details for africa_tts-0.4.2-py3-none-win_amd64.whl |
| africa_tts-0.4.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details for africa_tts-0.4.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
| africa_tts-0.4.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 | Details for africa_tts-0.4.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
| africa_tts-0.4.2-py3-none-macosx_14_0_x86_64.whl | Python 3 | none | macOS 14.0+ x86-64 | Details for africa_tts-0.4.2-py3-none-macosx_14_0_x86_64.whl |
| africa_tts-0.4.2-py3-none-macosx_14_0_arm64.whl | Python 3 | none | macOS 14.0+ ARM64 | Details for africa_tts-0.4.2-py3-none-macosx_14_0_arm64.whl |
Total release size: 28.6 MB
Release files / africa_tts-0.4.2.tar.gz
| Download URL | africa_tts-0.4.2.tar.gz |
|---|---|
| Size | 722.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3a399e82b0765a29d93ee0b3dea39e031028fbfd0a675d86279d439c5ba6b17
|
|
BLAKE2b-256 checksum How to use checksums |
b50f2b8b22ac2e35d11ebdd3e82ebda19277aa9c81e51a76cc50a24da5c35942
|
| 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 8, 2026.
Transparency logRelease files / africa_tts-0.4.2-py3-none-win_amd64.whl
| Download URL | africa_tts-0.4.2-py3-none-win_amd64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
41fc5984c20d8d59f09fbc643b5193255547352dc5e515e982ffe4d62a5fd7c3
|
|
BLAKE2b-256 checksum How to use checksums |
06bb3c302a444b3b2fcb8b069fbc12c8c995458aa2c169e182492887f38eda38
|
| 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 8, 2026.
Transparency logRelease files / africa_tts-0.4.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | africa_tts-0.4.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.7 MB |
| Tags | Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
9d9479971afd5f33ca3ec6d16b40bc8be38b85883afed1acfab1ce7a52c5112a
|
|
BLAKE2b-256 checksum How to use checksums |
275c4aa7366fc20a819ef6ae97918f5380b63a60d1a32446d549257a797df4ab
|
| 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 8, 2026.
Transparency logRelease files / africa_tts-0.4.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | africa_tts-0.4.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
77705a14f71dbdca620b2fdf4e5e31256635217a2b1fe8cc69956c4868ef681f
|
|
BLAKE2b-256 checksum How to use checksums |
01e6676dce6c8d791b9f95103a91dff5eeb3484451df15b6d5c30f70cc0afd52
|
| 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 8, 2026.
Transparency logRelease files / africa_tts-0.4.2-py3-none-macosx_14_0_x86_64.whl
| Download URL | africa_tts-0.4.2-py3-none-macosx_14_0_x86_64.whl |
|---|---|
| Size | 4.9 MB |
| Tags | Python 3 macOS 14.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
a3c85291402e135184456c47d61463c883b614ebedc42bc434bedb097a553ee7
|
|
BLAKE2b-256 checksum How to use checksums |
7653242e3735ca4f6bd8ac0cc61b0b564ebb4c9114115bad0a227efbb2ee6e5c
|
| 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 8, 2026.
Transparency logRelease files / africa_tts-0.4.2-py3-none-macosx_14_0_arm64.whl
| Download URL | africa_tts-0.4.2-py3-none-macosx_14_0_arm64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | Python 3 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b41ec00d8e9dcd722f16d655b6bab49e1b98ccb3beddcd130c542bc8f2b0f91f
|
|
BLAKE2b-256 checksum How to use checksums |
f5132bc44c625b23eea7ae527d5ad9ee4f238ccb54f6e4b87f09a4d61824c937
|
| 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 8, 2026.
Transparency logSecurity for africa-tts 0.4.2
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
All 6 files in this release have been uploaded with provenance metadata.
Attestation for africa_tts-0.4.2.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 8, 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.