# Shona F5-TTS
Clean F5-TTS pipeline for Shona training, identity adaptation, checkpoint audition, inference, dataset publishing, and model publishing.
## Architecture
```text
shona-f5-tts/
├── jobs/
│ ├── modal_f5_job.py
│ ├── modal_f5_hf_job.py
│ ├── modal_f5_identity_job.py
│ ├── modal_f5_infer.py
│ ├── modal_f5_checkpoint_audition.py
│ ├── modal_publish_f5_to_hf.py
│ └── modal_upload_dataset.py
├── f5_runtime/
│ ├── configs/
│ ├── scripts/
│ └── sna_f5_tts/
├── README.md
└── pyproject.toml
```
## Folder Intent
- `jobs/`: the Modal entrypoints you actually run
- `f5_runtime/`: bundled F5 configs, trainer helpers, inference code, and lightweight project runtime support
The goal is to keep the architecture obvious:
- operational entrypoints live together
- bundled F5 internals live together
- no dependency on a separate mutable local checkout
## Main Flows
- `jobs/modal_f5_hf_job.py`: phase 1 full adaptation on the broader Shona dataset from Hugging Face
- `jobs/modal_f5_identity_job.py`: phase 2 LoRA identity adaptation on the 150-sample single-speaker dataset
- `jobs/modal_f5_infer.py`: normal inference against a final checkpoint
- `jobs/modal_f5_checkpoint_audition.py`: one-sample-per-checkpoint listening pass
- `jobs/modal_publish_f5_to_hf.py`: publish a final model repo to Hugging Face
- `jobs/modal_upload_dataset.py`: publish the 150-sample dataset to Hugging Face
## Example Commands
```bash
uv run modal run -d jobs/modal_f5_hf_job.py --epochs 30
uv run modal run -d jobs/modal_f5_identity_job.py --epochs 50
uv run modal run jobs/modal_f5_infer.py
uv run modal run jobs/modal_f5_checkpoint_audition.py
uv run modal run -d jobs/modal_publish_f5_to_hf.py --hf-username manassehzw --repo-name sna-f5-tts
```