Downloads · 30 days
31
21% of all-time downloads
neriqlabs/kasanoma-tts-twi-v0.5
kasanoma-tts-twi-v0.5 is a text-to-speech model from neriqlabs. Use it when you need text read aloud. It is set up for cosyvoice. The card lists the license as apache-2.0.
Twi/English code-switching TTS from Neriqlabs, built on CosyVoice3-0.5B (Apache-2.0). v0.5 is a silence fix over v0.4.
Downloads · 30 days
31
21% of all-time downloads
All-time downloads
145
Public
Repo size
7.7 GB
Likes
0
Public
Click a slice to open those files.
.pt3.4 GB · 45%
From the Hugging Face model README
Twi/English code-switching TTS from Neriqlabs, built on CosyVoice3-0.5B (Apache-2.0). v0.5 is a silence fix over v0.4.
v0.4 stalled mid-utterance: measured on its own raw output it emitted 66% silence, opened every utterance with ~1.1s of dead air, and returned wildly different durations for identical text (4.1s on one call, 9.2s on the next).
The cause was not the architecture or sampling. It was the training data. No data builder in the pipeline ever trimmed silence, so the corpus itself was ~47% silence — dominated by one source carrying ~1.0s of leading silence on every 3.55s clip. The model was faithfully reproducing its training distribution.
v0.5 = the same corpus re-cut with leading/trailing silence trimmed and internal pauses capped (corpus silence 47% -> 11.4%), then LoRA fine-tuned from v0.4.
4 sentences x 4 generations each, raw model output, no post-processing:
| silence | leading | internal pauses | pause count | duration | |
|---|---|---|---|---|---|
| v0.4 | 66.0% | 1.10s | 1.34s | 4 | 6.08s |
| v0.5 | 35.7% | 0.21s | 0.29s | 1 | 3.02s |
Intelligibility was gated on round-trip ASR (synthesise -> transcribe with TubaSTT -> CER against the reference) so the pauses could not be removed by simply degrading the speech. Round-trip CER: v0.4 0.259 -> v0.5 0.278 (+0.019, within tolerance).
The residual 35.7% counts every sub-frame gap including normal inter-word ones; on long-pause silence alone it is 40% -> 16.6%.
from cosyvoice.cli.cosyvoice import CosyVoice3
cv = CosyVoice3("path/to/kasanoma-tts-twi-v0.5", load_trt=False, fp16=False)
# CosyVoice3 REQUIRES this instruct prefix; omitting it degrades output badly
INSTRUCT = "You are a helpful assistant.<|endofprompt|>"
for out in cv.inference_cross_lingual(INSTRUCT + text, prompt_wav, stream=True,
text_frontend=False):
...
LoRA (rank 32, on the Qwen2 q/k/v/o projections; CosyVoice heads left trainable), initialised from v0.4, 3 epochs on 35,973 utterances (32.0h) of silence-trimmed Asante Twi. Sources: BibleTTS Asante (CC-BY-SA), Ashesi Financial Inclusion (CC-BY), Common Voice Twi (CC0), WAXAL twi_tts (CC-BY-4.0) — all commercially usable.