miro-dietiker commited on
Commit
649ff37
·
verified ·
1 Parent(s): b313869

Drop product name; pull samples pending ich-laut (espeak-ng-data) fix

Browse files
Files changed (1) hide show
  1. README.md +16 -35
README.md CHANGED
@@ -17,27 +17,11 @@ tags:
17
  # Kokoro German "Martin" — sherpa-onnx package
18
 
19
  The German Kokoro voice **Martin**, repackaged for **[sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx)**
20
- so it runs as **fully offline, on-device** German text-to-speech. This is the voice shipped in
21
- **Page Reader** (scan or paste text → read it aloud, entirely on the phone, no network at runtime).
22
 
23
- ## Samples
24
-
25
- Synthesized with *this* package via sherpa-onnx, with Page Reader's German correction lexicon
26
- applied (see below).
27
-
28
- **Introduction**
29
-
30
- <audio controls src="https://huggingface.co/miro-dietiker/kokoro-de-martin/resolve/main/example-intro.wav"></audio>
31
-
32
- > „Hallo, ich bin Martin, die deutsche Stimme von Page Reader. Ich lese Ihre Dokumente vor,
33
- > vollständig offline auf dem Gerät."
34
-
35
- **Numbers & dates** — expanded to spoken German by the app *before* synthesis:
36
-
37
- <audio controls src="https://huggingface.co/miro-dietiker/kokoro-de-martin/resolve/main/example-numbers.wav"></audio>
38
-
39
- > „Am vierundzwanzigsten Juni benötigten rund sechshundertachtzigtausend Menschen humanitäre Hilfe."
40
- > *(from the raw text „Am 24. Juni … 680 000 Menschen …")*
41
 
42
  ## What's in the archive
43
 
@@ -46,28 +30,25 @@ applied (see below).
46
  - `model.onnx` — the Martin ONNX with sherpa-onnx metadata injected (`model_type=kokoro`,
47
  `sample_rate=24000`, `style_dim=510,1,256`, `n_speakers=1`, `id2speaker=0->martin`, …)
48
  - `voices.bin` — the voice style vector (510×1×256 float32)
49
- - `tokens.txt` and `espeak-ng-data/` — from the base k2-fsa Kokoro release
50
 
51
  ## Reading German correctly (the quality layer)
52
 
53
  A good voice is only half the story — the phonemes it's given have to be right. Both Kokoro and
54
  Piper phonemize German with **espeak-ng**, so any word espeak's G2P gets wrong is mispronounced by
55
- *every* espeak-based voice. Page Reader fixes that with two reproducible, open pieces layered on
56
- top of this voice:
57
-
58
- - **Pronunciation-correction lexicon.** We audit espeak-ng against the **WikiPron** (Wiktionary)
59
- pronunciation dictionary across ~**49k** German words, fold away espeak's *systematic*
60
- conventions (which the models were trained on and render correctly), and turn the remaining
61
- *word-specific* errors into a sherpa-onnx Kokoro lexicon (**2,000+ entries**) plus a corrected
62
- espeak `de_dict`. Word **stress** is corrected from Wiktionary — top-5k error rate **6.8% → 1.6%**.
63
- English anglicisms/names Germans actually use get Germanized pronunciations too.
64
  - **Language-aware text normalization.** Numbers, dates, currency and ordinals are expanded to
65
- spoken German keyed to the *document's* language and surviving OCR line-wraps — e.g.
66
- **680 000" → „sechshundertachtzigtausend"** (not „sechshundertachtzig null"), „24. Juni" →
67
- „vierundzwanzigsten Juni".
68
 
69
  Both are built by reproducible tooling (an espeak-vs-WikiPron audit + a Kokoro-lexicon generator,
70
- and this repackager) rather than hand-editing — so they can be regenerated and improved.
71
 
72
  ## Provenance & license
73
 
@@ -89,4 +70,4 @@ sherpa-onnx and synthesizes a German clip to confirm it works before publishing.
89
 
90
  Extract `kokoro-de-martin.tar.bz2` and point sherpa-onnx's Kokoro config at `model.onnx`,
91
  `voices.bin`, `tokens.txt`, and `espeak-ng-data/` with `lang=de` (add the German lexicon for the
92
- corrected pronunciations shown above).
 
17
  # Kokoro German "Martin" — sherpa-onnx package
18
 
19
  The German Kokoro voice **Martin**, repackaged for **[sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx)**
20
+ so it runs as **fully offline, on-device** German text-to-speech.
 
21
 
22
+ > **Note:** audio samples are temporarily removed while a phoneme-rendering issue is fixed —
23
+ > the bundled `espeak-ng-data` emits the German ich-laut /ç/ decomposed, so some words
24
+ > (`ich`, `-lich`, `-ig`) don't render cleanly yet. Fix in progress.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  ## What's in the archive
27
 
 
30
  - `model.onnx` — the Martin ONNX with sherpa-onnx metadata injected (`model_type=kokoro`,
31
  `sample_rate=24000`, `style_dim=510,1,256`, `n_speakers=1`, `id2speaker=0->martin`, …)
32
  - `voices.bin` — the voice style vector (510×1×256 float32)
33
+ - `tokens.txt` and `espeak-ng-data/`
34
 
35
  ## Reading German correctly (the quality layer)
36
 
37
  A good voice is only half the story — the phonemes it's given have to be right. Both Kokoro and
38
  Piper phonemize German with **espeak-ng**, so any word espeak's G2P gets wrong is mispronounced by
39
+ *every* espeak-based voice. Two reproducible, open pieces sit on top of this voice:
40
+
41
+ - **Pronunciation-correction lexicon.** An audit of espeak-ng against the **WikiPron** (Wiktionary)
42
+ dictionary across ~**49k** German words folds away espeak's *systematic* conventions (which the
43
+ models render correctly) and turns the remaining *word-specific* errors into a sherpa-onnx Kokoro
44
+ lexicon (**2,000+ entries**) plus a corrected espeak `de_dict`. Word **stress** is corrected from
45
+ Wiktionary top-5k error rate **6.8% → 1.6%**. English anglicisms/names get Germanized too.
 
 
46
  - **Language-aware text normalization.** Numbers, dates, currency and ordinals are expanded to
47
+ spoken German e.g. **„680 000" „sechshundertachtzigtausend"** (not „…achtzig null"),
48
+ 24. Juni" → „vierundzwanzigsten Juni" surviving OCR line-wraps.
 
49
 
50
  Both are built by reproducible tooling (an espeak-vs-WikiPron audit + a Kokoro-lexicon generator,
51
+ and this repackager) rather than hand-editing.
52
 
53
  ## Provenance & license
54
 
 
70
 
71
  Extract `kokoro-de-martin.tar.bz2` and point sherpa-onnx's Kokoro config at `model.onnx`,
72
  `voices.bin`, `tokens.txt`, and `espeak-ng-data/` with `lang=de` (add the German lexicon for the
73
+ corrected pronunciations).