Piper-Scratch / README.md
Thorsten-Voice's picture
Upload folder using huggingface_hub
d3a9707 verified
|
Raw History Blame Contribute Delete
4.04 kB
---
license: cc0-1.0
language:
- de
pipeline_tag: text-to-speech
library_name: piper
tags:
- piper
- tts
- onnx
- vits
- thorsten-voice
- german
---
# Thorsten-Voice – Piper (German, trained from scratch, v0.1 experimental)
A German single-speaker [Piper](https://github.com/OHF-Voice/piper1-gpl) voice by
[Thorsten-Voice](https://www.thorsten-voice.de), **trained entirely from scratch on Thorsten's own
CC0 recordings**.
Most Piper voices are fine-tuned from the `en_US-lessac` checkpoint, whose underlying dataset is
licensed for research use only. This model uses **no third-party checkpoint at all** – no
`--ckpt_path`, no `--model.warmstart_ckpt`, no `--model.vocoder_warmstart_ckpt`. The weights are
derived exclusively from the CC0 dataset below and are released under **CC0 1.0**.
> **Status: experimental (v0.1).** Clearly intelligible and recognisably Thorsten's voice, but
> pronunciation and stress of some words are noticeably weaker than in the existing
> lessac-based Thorsten Piper voice (see *Limitations*). Published mainly as a clean,
> license-unencumbered base checkpoint.
## Files
| File | Description |
|---|---|
| `de_DE-thorsten_scratch-medium.onnx` | Voice model (epoch 1799, end of LR schedule) |
| `de_DE-thorsten_scratch-medium.onnx.json` | Voice config |
| `checkpoints/epoch=1799-last.ckpt` | Full Lightning checkpoint (generator + discriminators + optimizer) for fine-tuning |
| `checkpoints/epoch=1791-val_mos=3.3306.ckpt` | Checkpoint with best UTMOS score |
## Usage
```sh
pip install piper-tts
echo "Hallo, ich bin die Stimme von Thorsten." | \
piper -m de_DE-thorsten_scratch-medium.onnx -f hallo.wav
```
### Fine-tuning on top of this checkpoint
Use it as a lessac-free starting point (any espeak-ng language, `medium` quality):
```sh
python3 -m piper.train fit ... --model.warmstart_ckpt checkpoints/epoch=1799-last.ckpt
```
## Training data
- Dataset: **Thorsten-Voice 2022.10** (neutral), CC0
- 12,450 utterances, 11.22 h, 22,050 Hz, mono, mean utterance length 3.24 s
- Text: lower-cased, normalized; phonemized with espeak-ng (`de`)
- Split: 10 % validation (`validation_split 0.1`), 20 test examples – these were **not** used for training
## Training setup
| | |
|---|---|
| Code | piper1-gpl, commit `<COMMIT>` (version `<VERSION>`) |
| Framework | PyTorch 2.15.0+cu132, Lightning |
| Hardware | 1 × NVIDIA A40 (48 GB) |
| Duration | ~4.3 days (Nov 4–9, 2026) |
| Epochs | 1,800 (~214 vocoder passes over the training audio) |
| Batch size | 32, length bucketing enabled |
| Quality | medium, 22,050 Hz |
| LR schedule | exponential decay to 5 % of initial LR, derived from `max_epochs` |
### Final validation metrics
| Checkpoint | val_mel | val_mos (UTMOS) |
|---|---|---|
| epoch 1799 (`last`) | 0.3751 | – |
| epoch 1791 | – | 3.33 |
UTMOS is trained mainly on English; German voices typically land between 3.3 and 3.8.
## Limitations
- **Pronunciation/stress:** compared with the lessac-based Thorsten Piper voice, some words are
stressed or pronounced less accurately (e.g. *Intendantin, Rathaus, sprichst, Tobias,
Rheinufer, Gratiszeitungen*). Likely causes: only ~10 h of training audio without any
pretraining, combined with espeak-ng phonemization errors for these words that a model with
more data compensates for better.
- Single speaker, neutral style only.
## Export note
With PyTorch ≥ 2.9 the ONNX export in piper1-gpl needed two adjustments:
`pip install onnxscript`, and `dynamo=False` in the `torch.onnx.export(...)` call of
`src/piper/train/export_onnx.py` (the new exporter fails on the VITS spline flows).
## License
Model weights and this card: **CC0 1.0** (public domain dedication).
The Piper training/runtime code (piper1-gpl) and espeak-ng are GPL-3.0; this affects the software,
not the voice model.
## Credits
Voice and dataset: Thorsten Müller / [Thorsten-Voice](https://www.thorsten-voice.de).
Training framework: [Piper](https://github.com/OHF-Voice/piper1-gpl) by Michael Hansen and contributors.