---
license: apache-2.0
language:
- de
pipeline_tag: text-to-speech
library_name: sherpa-onnx
base_model: Godelaune/Kokoro-82M-ONNX-German-Martin
tags:
- onnx
- kokoro
- sherpa-onnx
- text-to-speech
- german
- single-speaker
---
# Kokoro German "Martin" — sherpa-onnx package
The German Kokoro voice **Martin**, repackaged for **[sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx)**
so it runs as **fully offline, on-device** German text-to-speech. This is the voice shipped in
**Page Reader** (scan or paste text → read it aloud, entirely on the phone, no network at runtime).
## Samples
Synthesized with *this* package via sherpa-onnx, with Page Reader's German correction lexicon
applied (see below).
**Introduction**
> „Hallo, ich bin Martin, die deutsche Stimme von Page Reader. Ich lese Ihre Dokumente vor,
> vollständig offline auf dem Gerät."
**Numbers & dates** — expanded to spoken German by the app *before* synthesis:
> „Am vierundzwanzigsten Juni benötigten rund sechshundertachtzigtausend Menschen humanitäre Hilfe."
> *(from the raw text „Am 24. Juni … 680 000 Menschen …")*
## What's in the archive
`kokoro-de-martin.tar.bz2` is everything sherpa-onnx's Kokoro TTS needs:
- `model.onnx` — the Martin ONNX with sherpa-onnx metadata injected (`model_type=kokoro`,
`sample_rate=24000`, `style_dim=510,1,256`, `n_speakers=1`, `id2speaker=0->martin`, …)
- `voices.bin` — the voice style vector (510×1×256 float32)
- `tokens.txt` and `espeak-ng-data/` — from the base k2-fsa Kokoro release
## Reading German correctly (the quality layer)
A good voice is only half the story — the phonemes it's given have to be right. Both Kokoro and
Piper phonemize German with **espeak-ng**, so any word espeak's G2P gets wrong is mispronounced by
*every* espeak-based voice. Page Reader fixes that with two reproducible, open pieces layered on
top of this voice:
- **Pronunciation-correction lexicon.** We audit espeak-ng against the **WikiPron** (Wiktionary)
pronunciation dictionary across ~**49k** German words, fold away espeak's *systematic*
conventions (which the models were trained on and render correctly), and turn the remaining
*word-specific* errors into a sherpa-onnx Kokoro lexicon (**2,000+ entries**) plus a corrected
espeak `de_dict`. Word **stress** is corrected from Wiktionary — top-5k error rate **6.8% → 1.6%**.
English anglicisms/names Germans actually use get Germanized pronunciations too.
- **Language-aware text normalization.** Numbers, dates, currency and ordinals are expanded to
spoken German keyed to the *document's* language and surviving OCR line-wraps — e.g.
**„680 000" → „sechshundertachtzigtausend"** (not „sechshundertachtzig null"), „24. Juni" →
„vierundzwanzigsten Juni".
Both are built by reproducible tooling (an espeak-vs-WikiPron audit + a Kokoro-lexicon generator,
and this repackager) rather than hand-editing — so they can be regenerated and improved.
## Provenance & license
**Apache-2.0**, inherited from upstream. This is a **repackaging**, not a new training run:
- ONNX source: [Godelaune/Kokoro-82M-ONNX-German-Martin](https://huggingface.co/Godelaune/Kokoro-82M-ONNX-German-Martin)
- Fine-tune: [kikiri-tts/kikiri-german-martin](https://huggingface.co/kikiri-tts/kikiri-german-martin)
(Martin Harbecke voice, StyleTTS2)
- Architecture: [hexgrad/Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M)
- `tokens.txt` + `espeak-ng-data/`: k2-fsa sherpa-onnx Kokoro release
## How it was built
Reproducibly, by the `martin-repackage` build chain: inject the sherpa-onnx Kokoro metadata,
convert the voice `.npz` to `voices.bin`, and assemble the archive. A `verify` step loads it with
sherpa-onnx and synthesizes a German clip to confirm it works before publishing.
## Usage
Extract `kokoro-de-martin.tar.bz2` and point sherpa-onnx's Kokoro config at `model.onnx`,
`voices.bin`, `tokens.txt`, and `espeak-ng-data/` with `lang=de` (add the German lexicon for the
corrected pronunciations shown above).