--- 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. > **Note:** audio samples are temporarily removed while a phoneme-rendering issue is fixed — > the bundled `espeak-ng-data` emits the German ich-laut /ç/ decomposed, so some words > (`ich`, `-lich`, `-ig`) don't render cleanly yet. Fix in progress. ## 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/` ## 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. Two reproducible, open pieces sit on top of this voice: - **Pronunciation-correction lexicon.** An audit of espeak-ng against the **WikiPron** (Wiktionary) dictionary across ~**49k** German words folds away espeak's *systematic* conventions (which the models render correctly) and turns 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 get Germanized too. - **Language-aware text normalization.** Numbers, dates, currency and ordinals are expanded to spoken German — e.g. **„680 000" → „sechshundertachtzigtausend"** (not „…achtzig null"), „24. Juni" → „vierundzwanzigsten Juni" — surviving OCR line-wraps. Both are built by reproducible tooling (an espeak-vs-WikiPron audit + a Kokoro-lexicon generator, and this repackager) rather than hand-editing. ## 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).