language:
- sw
license: cc-by-nc-4.0
base_model: facebook/mms-tts-swh
tags:
- text-to-speech
- tts
- vits
- swahili
- mms
datasets:
- google/WaxalNLP
pipeline_tag: text-to-speech
waxal_swahili-tts-mms
A Swahili text-to-speech model, finetuned from Meta's MMS-TTS Swahili checkpoint on the swa_tts split of google/WaxalNLP, using the VITS finetuning recipe from ylacombe/finetune-hf-vits.
Model details
- Base model:
facebook/mms-tts-swh(Meta's Massively Multilingual Speech TTS, Swahili) - Architecture: VITS (single-speaker)
- Training data: google/WaxalNLP,
swa_ttsconfig — 1,387 train utterances (805 after duration/length filtering), single Swahili speaker, 16kHz audio, sourced via the Loud & Clear initiative. - Training checkpoint: step 4,500 / 20,200 planned steps (~22 epochs of ~805 examples)
- Sample rate: 16,000 Hz
- Language: Swahili (
swh/ ISO 639-3)
Training configuration
| Setting | Value |
|---|---|
| Learning rate | 2e-5 |
| Batch size | 8 |
| Precision | fp16 |
| Max clip duration | 20s |
| Min clip duration | 0.5s |
| Loss weights | mel=35, kl=1.5, disc=3, gen/fmaps/duration=1 |
Training used the finetune-hf-vits recipe with transformers==4.35.1, datasets==2.14.7, accelerate==0.24.1, numpy<2.0 (this specific combination was required to avoid dependency-incompatibility crashes on Colab).
Usage
import numpy as np
from transformers import pipeline
import scipy.io.wavfile
synthesiser = pipeline("text-to-speech", model="Mwau/waxal_swahili-tts-mms")
speech = synthesiser("Habari yako, karibu Kenya.")
audio = np.squeeze(speech["audio"]) # squeeze extra dims before saving/playing
scipy.io.wavfile.write("output.wav", rate=speech["sampling_rate"], data=audio)
Verified loading cleanly with transformers pipeline("text-to-speech", ...) — no missing/unexpected weight warnings on load.
Intended use
Research and experimentation with Swahili TTS, particularly cross-lingual/low-resource TTS transfer techniques. Not yet suitable for production or user-facing applications given the early training stage.
Limitations
- Single speaker, single dataset: trained on one speaker's recordings from one dataset; may not generalize well to varied Swahili dialects, accents, or speaking styles.
- No formal evaluation yet: no MOS, WER, or MCD scores have been computed for this checkpoint. Qualitative spot-checks against WAXAL's held-out
testsplit suggest intelligible but rough output. - Small dataset: ~800 training utterances after filtering is a small corpus for TTS; may overfit to the training speaker's specific vocal characteristics.
License
This model is derived from facebook/mms-tts-swh, which is released under CC-BY-NC-4.0 (non-commercial). This finetuned model inherits that license. The swa_tts training data is released under CC-BY-SA-4.0.
Acknowledgements
- Meta MMS for the base checkpoint
- WAXAL / google/WaxalNLP for the training data
- ylacombe/finetune-hf-vits for the finetuning recipe