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 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.txtandespeak-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
- Fine-tune: kikiri-tts/kikiri-german-martin (Martin Harbecke voice, StyleTTS2)
- Architecture: 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).