Fine-tuned speech and language models for African languages, trained on the Waxal dataset from Google.
# AFW Waxal African Language Models
Fine-tuned speech and language models for African languages, trained on the Waxal dataset from Google.
## Overview
This repo contains training scripts for three model types, all integrated with the A.I-African-dubbing production system:
| Model | Base | Dataset | Task |
|---|---|---|---|
| TTS | Coqui XTTS v2 / VITS | Waxal TTS (180+ hrs, 16 langs) | African language speech synthesis |
| ASR | OpenAI Whisper Large v3 | Waxal ASR (1,250 hrs, 19 langs) | African language transcription |
| Translation | Meta NLLB-200 | WaxalNLP (google/WaxalNLP) | African ↔ English translation |
## Supported Languages
### TTS Languages (16)
Acholi, Luganda, Kiswahili, Nyankole, Akan (Fante, Twi), Fula, Igbo, Hausa, Yoruba, Nigerian Pidgin, Kikuyu, Luo
### ASR Languages (19)
Acholi, Luganda, Masaaba, Nyankole, Soga, Akan, Ewe, Dagbani, Dagaare, Ikposo, Fula, Lingala, Shona, Malagasy, Amharic, Oromo, Sidama, Tigrinya, Wolaytta
## Setup
```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
Requires CUDA GPU with at least 16GB VRAM. Recommended: A100 40GB (AWS `p4d.xlarge` or `g5.2xlarge`).
## Training Workflow
### 1. TTS (Text-to-Speech)
```bash
# Prepare dataset
python tts/prepare_dataset.py --output_dir data/tts
# Train Coqui XTTS v2 (multi-language, recommended)
python tts/train_xtts.py --config tts/configs/xtts_config.json
# Or train per-language VITS (higher quality, single language)
python tts/train_vits.py --config tts/configs/vits_yoruba.json --language yor
```
#### MacOS MPS smoke test
```bash
# Train on MacOS MPS (smoke test — not full GPU/CUDA)
python tts/train_xtts.py --config tts/configs/xtts_smoke_macos.json
```
Expected output:
```
outputs/tts/afw_xtts_v2_waxal_yb/
xtts_v2_smoke_macos- /
checkpoint_10.pth ← 5.2 GB — the trained model
config.json ← config used for the run
trainer_0_log.txt ← the logs of training
train_xtts.py ← copy of the training script (saved by Tra …