Downloads · 30 days
6
23% of all-time downloads
michsethowusu/stable-twi-tts
stable-twi-tts is a text-to-speech model from michsethowusu. Use it when you need text read aloud. It is set up for piper. The card lists the license as cc-by-nc-4.0.
A Piper VITS voice for Twi that also reads the English words Ghanaian text is full of. It is driven by IPA phonemes rather than orthography, which is what lets one model serve both languages from a shared inventory.
Downloads · 30 days
6
23% of all-time downloads
All-time downloads
26
Public
Repo size
1 GB
Likes
0
Public
Click a slice to open those files.
.ckpt934 MB · 92%
From the Hugging Face model README
A Piper VITS voice for Twi that also reads the English words Ghanaian text is full of. It is driven by IPA phonemes rather than orthography, which is what lets one model serve both languages from a shared inventory.
Warm-started from en_US/libritts_r/medium and finetuned on 327 h (164 h Twi + 164 h Ghanaian
English), 22.05 kHz, 1,555 speaker embeddings.
pip install stable-twi-tts && pip install "stable-twi-tts[twi]" && apt install espeak-ng
stable-twi-tts --model . --voice twi-6 --text "Akwaaba, wo ho te sen?" --out hello.wav
stable-twi-tts --model . --language mixed --voice twi-1 \
--text "Mepe se mesua [computer science] wo [University of Ghana]." --out mixed.wav
Code: https://github.com/GhanaNLP/stable-twi-tts
12 voices are exposed of 1,555 speaker embeddings. Each synthesised the same held-out text,
which was re-recognised and scored for phoneme error -- Twi with ghana-speech-phoneme-asr, the
English spans with KoelLabs/xlsr-english-01.
| pick | for | best |
|---|---|---|
tiers.codeswitch | text mixing English into Twi | twi-1 (59.8%) |
tiers.twi_only | pure Twi | twi-6 (26.8%; floor 25.9%) |
The two rankings disagree sharply. twi-1 is the best code-switch voice yet 21st of 30 on
pure Twi. Two of the three best Twi voices have under 3.3 h of audio each and would never have
survived an hours-based shortlist. voices.json records every measurement.
Round-trip phoneme error against a real-audio floor, on held-out text:
| floor | model | gap | |
|---|---|---|---|
| Twi | 25.9% | 33.5% | +7.6 |
| English | 32.2% | 59.5% | +27.3 |
Twi is good; English is markedly weaker. English had a third of the utterances (43k vs 151k) at 3.5x the length, and VITS learns alignment per utterance, so English got far less practice on harder material. English audio was also 16 kHz upsampled to 22.05 kHz, so English voices are band-limited to 8 kHz and sound duller. Twi was 24 kHz and is unaffected.
finetune/ has the Lightning checkpoint, the phoneme id map, the training command and dataset
stats. The phoneme id map is required -- the weights encode "id 26 means /n/", so loading
them against a different map yields nonsense. See finetune/FINETUNING.md, which also documents
two traps: resize the speaker table before loading, and clear the phoneme cache or stale targets
are silently reused.