YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
kikiri-tts
This repository was formerly named
kokoro-deutsch. The Python package and the published HuggingFace model still use the oldkokoro-deutschname.
Training recipe for fine-tuning Kokoro-82M for German with a patched StyleTTS2 submodule.
What This Is
- A reproducible fine-tuning workflow (dataset prep -> Stage 1 -> Stage 2 -> voicepack extraction)
- Original scripts for data preparation and checkpoint/voicepack conversion
- A patched
StyleTTS2/submodule with the fixes required for stable Stage 2 training
What This Is Not
- Not a general-purpose Kokoro replacement repository
- Not a bundled upstream mirror of
demo/,examples/,kokoro.js/, ortests/ - Not a redistributable training dataset
Start Here
I want to train my own German voice
Start with docs/TRAINING_GUIDE.md.
I am debugging training failures
Go to docs/TROUBLESHOOTING.md.
I want architecture details and compatibility notes
See docs/ARCHITECTURE.md.
Status
The end-to-end pipeline is working:
Dataset preparation -> Weight conversion -> Stage 1 -> Stage 2 -> Voicepack extraction -> KModel inference
Published Models & Voices
All checkpoints are compatible with the Kokoro-82M inference pipeline.
Base Model
dida-80b/kokoro-deutsch-hui-base is a German multi-speaker Stage 1 base model
trained on ~51 hours of audio. It is not a finished single-speaker voice โ
use it as a starting point for training your own with
docs/TRAINING_GUIDE.md.
| Specification | Value |
|---|---|
| Speakers | 51 (24M / 27F) |
| Training Audio | ~51 hours (effective) |
| Train Samples | 20,495 |
| Val Samples | 418 |
| Final Mel Loss | 0.3264 |
| License | CC0-1.0 |
| Model | dida-80b/kokoro-deutsch-hui-base |
| Dataset | dida-80b/hui-german-51speakers |
Fine-Tuned Voices
Stage 2 single-speaker fine-tunings. Each ships with a speaker voicepack. Click the links to hear speech demos directly from HuggingFace.
German (de)
| Voice | Speaker | Samples | License | Demo |
|---|---|---|---|---|
| kikiri-german-martin | Martin Harbecke (male) | 627 | Apache 2.0 | Speech Demo |
| kikiri-german-victoria | Victoria Asztaller (female) | 455 | Apache 2.0 | Speech Demo |
More voices and languages coming soon. Check the kikiri-tts HuggingFace organization for updates.
Running Verification Tests
To run a quick text-to-speech sanity check โ e.g. after updating phonemizer
packages like misaki, bumping dependencies, or making model changes โ run the
inference script with no arguments:
uv run scripts/test_inference.py
On first run this downloads a reference model
(kikiri-tts/kikiri-german-martin)
and voicepack into a local cache (test_output/.model_cache/), synthesizes the
standard German phonetic test sentences, and writes the audio to test_output/.
It runs on CPU automatically when no GPU is available, so it works on any machine
and in CI/CD pipelines. Subsequent runs reuse the cached files.
To test a specific checkpoint or voice instead, pass explicit paths:
uv run scripts/test_inference.py \
--model voices/kokoro_german_epoch3.pth \
--voicepack voices/dm_daniel_epoch3.pt \
--device cpu
Repository Layout
kokoro/ # Kokoro fork submodule (contains the `kokoro/` Python package)
StyleTTS2/ # Patched training code (git submodule: semidark/StyleTTS2)
scripts/ # Dataset prep, voicepack extraction, inference testing
configs/ # Training config(s)
docs/ # Training guide, troubleshooting, architecture notes
training/ # Local training artifacts metadata (audio excluded)
Contributing
Contributions are welcome, especially:
- Reproducible runs on public datasets
- Fine-tuning recipes for other languages
- Training stability and quality improvements
Attribution
See NOTICE for upstream attribution and license details.
License
Apache License 2.0 โ see LICENSE.