Instructions to use analist/spark-tts-ewe-cotia with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use analist/spark-tts-ewe-cotia with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-speech", model="analist/spark-tts-ewe-cotia")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("analist/spark-tts-ewe-cotia", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Spark-TTS 0.5B fine-tuned for Eʋegbe (Ewe)
A text-to-speech model for Ewe (Eʋegbe), a tonal Gbe language spoken by roughly five million people in southeastern Ghana and southern Togo.
This is a research baseline, not a production voice. Please read the evaluation and limitations sections before using it for anything.
Status
| Training data | ~67h of single-speaker read speech |
| Final eval loss | 3.3 |
| Train/eval gap | 0.027 (no overfitting) |
| Perceptual quality | intelligible; prosody limited |
| Formal evaluation | none yet — no MOS, no intelligibility study |
The loss curve had flattened when training stopped, with no overfitting gap. That combination indicates the ceiling is in the data rather than the optimisation: more varied speech would help, more epochs would not.
Audio samples
Samples are in samples/. They are unedited model output with no post-processing, cherry-picking or retakes.
temperature 0.9
| file | |
|---|---|
samples/t09/ewe_00.wav |
|
samples/t09/ewe_01.wav |
|
samples/t09/ewe_02.wav |
|
samples/t09/ewe_03.wav |
|
samples/t09/ewe_04.wav |
A note on temperature. These were generated at temperature 0.9. That is higher than this checkpoint is happiest at: on an undertrained model, higher temperature amplifies instability, and prosody is already this model's weakest dimension. Sampling at 0.5–0.6 gives steadier output. The samples are published at the setting they were produced with rather than at the flattering one.
Usage
The text normaliser is not optional. Ewe is routinely typed with
confusable codepoints — Greek ε for ɛ, γ for ɣ, ϕ for ƒ — which a byte-level
tokenizer treats as unrelated symbols. This model was trained on canonicalised
text, so text that skips normalisation will be mispronounced with no obvious
sign of what went wrong. ewe_text.py is included for exactly this reason.
from ewe_text import normalize_ewe
text = normalize_ewe("Ŋdi na mi. Nye ŋkɔe nye Kofi.", digit_policy="verbalize")
See inference_example.py for a complete script. You will also need the
Spark-TTS source:
git clone https://github.com/SparkAudio/Spark-TTS
pip install omegaconf einx soundfile librosa soxr
Generation settings that matter: temperature 0.5–0.6 (0.7+ slurs on a model
this size), and pass <|im_end|> and <|end_semantic_token|> as stop tokens or
generation runs on past the end of the utterance.
Training
| Base | unsloth/Spark-TTS-0.5B (Qwen2.5-0.5B + BiCodec) |
| Corpus | BibleTTS Ewe (OpenSLR 129), CC BY-SA 4.0 |
| Clips | 13,903 retained, 1–22 s, 16 kHz mono |
| Adaptation | full fine-tune, fp32 with TF32 |
| Schedule | 4 (after 3 at 1e-5) epochs, lr 3e-5, cosine, 3% warmup |
| Batch | 2 × 8 accumulation = 16 |
| Hardware | 1 × NVIDIA L4 (24 GB) |
Text pipeline: Unicode NFC, confusable-codepoint repair, digit-bearing rows
dropped from training (a transcript does not record how the speaker read a
numeral), over-length sequences dropped rather than truncated — truncation
removes the trailing <|im_end|> and teaches the model never to stop.
Limitations
- One speaker, one register. Liturgical read speech is slow and declamatory. Conversational prosody is out of domain and will sound wrong.
- Tone is implicit. Ewe is tonal; there is no tone-aware front end. Tone is learned from acoustics alone and is not reliable on minimal pairs.
- Alignment unverified. Verse alignment in the source corpus is automatic. Residual misalignment has not been quantified.
- No formal evaluation. No MOS, no intelligibility testing, no native speaker panel. Perceptual claims here are informal.
- Biblical vocabulary bias. Domain terms are over-represented.
Intended use
Research on low-resource and African-language TTS; a starting checkpoint for further fine-tuning; accessibility prototyping where output is checked by a speaker. Not suitable for unsupervised production deployment, and not for anything where a mispronunciation carries a cost.
Attribution
Speech data from BibleTTS (Meyer et al., Interspeech 2022; OpenSLR 129), CC BY-SA 4.0. Base model Spark-TTS by SparkAudio. Fine-tuning with Unsloth.
If you build on this, please credit the BibleTTS authors — the corpus is the reason any of this is possible for Ewe.
Contributions welcome
The single most useful thing anyone could add is non-scriptural Ewe speech, particularly conversational recordings and additional speakers. That is the binding constraint here, not model size or compute.
- Downloads last month
- 9