Text-to-Speech
Chatterbox
voice-cloning
multilingual
hausa
yoruba
igbo
nigerian-english
african-languages
Instructions to use PlotweaverAI/naija-tts with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Chatterbox
How to use PlotweaverAI/naija-tts with Chatterbox:
# pip install chatterbox-tts import torchaudio as ta from chatterbox.tts import ChatterboxTTS model = ChatterboxTTS.from_pretrained(device="cuda") text = "Ezreal and Jinx teamed up with Ahri, Yasuo, and Teemo to take down the enemy's Nexus in an epic late-game pentakill." wav = model.generate(text) ta.save("test-1.wav", wav, model.sr) # If you want to synthesize with a different voice, specify the audio prompt AUDIO_PROMPT_PATH="YOUR_FILE.wav" wav = model.generate(text, audio_prompt_path=AUDIO_PROMPT_PATH) ta.save("test-2.wav", wav, model.sr) - Notebooks
- Google Colab
- Kaggle
| language: [ha, yo, ig, en] | |
| license: mit | |
| pipeline_tag: text-to-speech | |
| tags: [text-to-speech, voice-cloning, chatterbox, multilingual, hausa, yoruba, igbo, nigerian-english, african-languages] | |
| base_model: ResembleAI/chatterbox | |
| # Naija TTS — multilingual Hausa / Yoruba / Igbo / Nigerian English | |
| One Chatterbox model covering four Nigerian languages, with zero-shot voice | |
| cloning. LoRA fine-tune of Chatterbox Multilingual (MIT), with the grapheme | |
| vocabulary extended for the characters these languages need. | |
| Base Chatterbox ships 23 languages, of which Swahili is the only African one. | |
| This model adds Hausa, Yoruba, Igbo and Nigerian English — the last under its | |
| own `en-ng` tag so base English is left intact. | |
| ## Evaluation | |
| | Language | n | CER | CER floor | WER | Speaker SIM | RTF | | |
| |---|---|---|---|---|---|---| | |
| | Hausa (`ha`) | 40 | 8.83 % | 4.87 % | 32.35 % | n/a | 0.680 | | |
| | Yoruba (`yo`) | 40 | 45.02 % | 12.13 % | 77.73 % | n/a | 1.065 | | |
| | Igbo (`ig`) | 40 | 14.87 % | 8.41 % | 42.57 % | n/a | 0.840 | | |
| | Nigerian English (`en-ng`) | 40 | 12.27 % | 13.09 % | 31.44 % | n/a | 0.932 | | |
| **Read each CER against its own floor**, not against zero. The floor is what | |
| MMS-ASR scores on genuine recordings of that language — its own error rate. | |
| A CER at the floor means the synthesized speech is as intelligible as real | |
| speech. The floors differ substantially between languages; a raw CER comparison | |
| across languages is meaningless. | |
| ## Usage | |
| ```python | |
| import torchaudio as ta | |
| import chatterbox.mtl_tts as M | |
| from chatterbox.mtl_tts import ChatterboxMultilingualTTS | |
| for code, name in [("ha","Hausa"), ("yo","Yoruba"), ("ig","Igbo"), | |
| ("en-ng","Nigerian English")]: | |
| M.SUPPORTED_LANGUAGES[code] = name | |
| model = ChatterboxMultilingualTTS.from_local("path/to/repo", device="cuda") | |
| wav = model.generate("Sannu da zuwa.", language_id="ha", | |
| audio_prompt_path="reference.wav") | |
| ta.save("out.wav", wav, model.sr) | |
| ``` | |
| Normalize text to Unicode NFC and keep the languages' special characters as | |
| written — for Yoruba this includes the combining tone marks. | |
| ## Limitations | |
| - **Hausa tone** is not modelled: Boko orthography marks neither tone nor vowel | |
| length, so a character-input model has no signal for it. Yoruba and Igbo write | |
| tone with diacritics and are not subject to this. | |
| - Long utterances can truncate (Chatterbox forces EOS on long tails). | |
| - The corpus was capped per language for balance, so no language sees its full | |
| available data. | |
| - Outputs carry Resemble's Perth watermark, inherited from the base model. | |
| ## Licence | |
| MIT, from base Chatterbox. | |