File size: 4,042 Bytes
d3a9707
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---
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.