# kikuyu-tts
English-to-Kikuyu translation and speech synthesis pipeline with an MMS-first TTS workflow.
## Current TTS Paths
- Preferred: MMS full-checkpoint continuation on Waxal via `configs/train_mms_tts_kik_waxal.yaml` and `scripts/bootstrap_mms_kikuyu_tts_finetune.py`
- Baseline: MMS base-model selection and export via `configs/finetune_mms_tts_kik.yaml` and `scripts/prepare_mms_tts_finetune.py`
- Secondary: scratch Coqui VITS training via `scripts/colab_train_vits_scratch.py`
## Current ASR Path
- Preferred: MMS ASR fine-tuning via `configs/train_mms_asr_kik.yaml` and `scripts/train_mms_asr_kik.py`
Run it with:
```bash
python scripts/train_mms_asr_kik.py \
--config configs/train_mms_asr_kik.yaml
```
This trains `facebook/mms-1b-all` with the Kikuyu MMS head (`kik`) on the paired `audio` + `text` data from `google/WaxalNLP`, config `kik_tts`. Metrics and hyperparameters are logged to **MLflow** by default (`report_to: mlflow`); see `docs/mms_asr_finetune_kikuyu.md`.
## Recommended Workflow
### English To Kikuyu Audio
The first end-to-end app surface is a script. It translates English text to Kikuyu with NLLB, then synthesizes Kikuyu audio with the current best Waxal MMS/VITS checkpoint, `G_77100`.
Smoke test the Waxal audio path with known Kikuyu text:
```bash
python scripts/english_to_kikuyu_audio.py \
--translation-backend identity \
--text "Ni wega gukwona umuthi." \
--output-wav artifacts/english_to_kikuyu_audio/smoke_identity.wav
```
Run English text through translation and TTS:
```bash
python scripts/english_to_kikuyu_audio.py \
--input path/to/shakespeare_chapter.txt \
--output-wav artifacts/english_to_kikuyu_audio/shakespeare_chapter.wav \
--translated-output artifacts/english_to_kikuyu_audio/shakespeare_chapter.kik.txt \
--manifest-json artifacts/english_to_kikuyu_audio/shakespeare_chapter.manifest.json \
--translation-device cpu \
--tts-device cpu
```
The compatibility wrapper `scripts/pipeline.py` calls the same implementation:
```b …