miro-dietiker commited on
Commit
1f53891
·
verified ·
1 Parent(s): 7e4f4d6

Model card: document the espeak-ng 1.52 /ʊɐ fix and the ç phonemizer-patch note

Browse files
Files changed (1) hide show
  1. README.md +22 -10
README.md CHANGED
@@ -45,16 +45,28 @@ The result loads and synthesizes in sherpa-onnx with the weights unchanged.
45
 
46
  - `model.onnx` — the Martin ONNX with sherpa-onnx Kokoro metadata injected
47
  - `voices.bin` — the voice style vector (510×1×256 float32)
48
- - `tokens.txt` and `espeak-ng-data/` — from the k2-fsa sherpa-onnx Kokoro release
49
-
50
- ## Known limitation
51
-
52
- sherpa-onnx phonemizes German with espeak-ng / piper-phonemize, whose G2P emits the German
53
- **ich-laut /ç/ decomposed** (`c` + combining cedilla, U+0327); the precomposed Kokoro token set
54
- drops it, so `ich`, `nicht` and `-lich` / `-ig` words don't render cleanly from raw text. This is
55
- a property of the sherpa-onnx Kokoro G2P pipeline, not of the voice, and affects any Kokoro voice
56
- run this way. The usual sherpa workaround applies: supply the affected words through a lexicon so
57
- their phonemes bypass the runtime G2P.
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  ## How it was built
60
 
 
45
 
46
  - `model.onnx` — the Martin ONNX with sherpa-onnx Kokoro metadata injected
47
  - `voices.bin` — the voice style vector (510×1×256 float32)
48
+ - `tokens.txt` — from the k2-fsa sherpa-onnx Kokoro release
49
+ - `espeak-ng-data/` — from **espeak-ng 1.52** (see the pronunciation note below)
50
+
51
+ ## Pronunciation notes (German G2P)
52
+
53
+ sherpa-onnx phonemizes German with espeak-ng / piper-phonemize, and two properties of that
54
+ pipeline affect raw-text rendering. Both are properties of the sherpa-onnx Kokoro G2P, not of the
55
+ voice weights.
56
+
57
+ - **`ʊɐ` ("ur") vowel fixed in this package.** The espeak-ng-data shipped by k2-fsa's base
58
+ Kokoro release is stale and emits a literal `?` for the vocalized-r `ʊɐ`, so `durch`, `kurz`,
59
+ `wurde`, … mispronounce. This package instead bundles current **espeak-ng 1.52** data, which
60
+ resolves `ʊɐ` correctly (`durch` → `dˈʊɐç`). A build-time check guards it.
61
+ - **ich-laut `/ç/` — needs a phonemizer patch, not a lexicon.** piper-phonemize NFD-decomposes
62
+ `ç` into `c` + combining cedilla (U+0327), which the precomposed Kokoro token set drops, so
63
+ `ich`, `nicht`, `-lich` / `-ig` don't render cleanly. **Note the usual "add a lexicon entry"
64
+ workaround does _not_ apply here:** sherpa-onnx consults the Kokoro lexicon only for its
65
+ dictionary languages (en/zh); for espeak-driven languages (incl. German) it goes straight to
66
+ espeak and never reads the lexicon. The fix has to be in the phonemizer — recompose the pair
67
+ back to `ç` when that codepoint is a known token. The [Page Reader](https://github.com/) app
68
+ that consumes this package carries exactly that patch in its bundled sherpa-onnx build; if you
69
+ run this archive on **stock** sherpa-onnx, ç-words are still affected.
70
 
71
  ## How it was built
72