Repository navigation
What's new
#92 complete: every validated-locale catalog voice installs and speaks offline. German (#82, v1.9.0) → English migration + MMS validation + license-corrected bundles (#98) → fr/es/pt/it/ru locale flips (#99).
Seven languages on the codepoints path
| language | bundle | whisper round-trip |
|---|---|---|
| de | deu (expanded) | v1.9.0 |
| en | eng-US (expanded) | "I have 42 houses and 1,000 acres" — numbers spoken, was dropped |
| fr | fra (expanded) | quarante-deux + un virgule cinq audible |
| es | spa-ES (expanded) | "Tengo 42 casas" exact |
| pt | por-BR (expanded) | "Eu tenho 42 casas" exact (medium) |
| it | ita (expanded) | "ho 42 case" exact (medium) |
| ru | ru (base) | "У меня 42 дома" exact |
Every language has a per-locale digit normalizer (Russian new: paucal agreement, feminine одна/две in thousands, comma decimals). The old lexicon path silently dropped OOV/number words — the codepoints path speaks them through the bundle's dictionary.
Hyphenated dictionary lookups (all languages)
Audited: no bundle lexicon carries hyphenated entries — "forty-two"/"Kfz-Kennzeichen" previously letter-spelled through the WFST fallback. Interior hyphen runs now split into dictionary lookups (typed and digit-expanded).
MMS digit words
MMS front-ends read raw characters and their token files carry 0–9, so digits articulated one-by-one (user-verified through speakers). Digits now expand to words in the model's language; spot-validation: spa perfect, deu/eng good (whisper round-trips). MMS readiness: unverified pending registry sha256s.
Catalog readiness (installer contract)
needs_bundle now covers de/en/fr/es/pt/it/ru — download, then tts_provision_sherpa_g2p_bundle(model_id), then speak offline. English degrades to the auto-lexicon path without the bundle (upgrade, not requirement); the others report blocked:g2p-unavailable on front-end-less builds. Variant note: es voices default to spa-ES (Castilian) and pt to por-BR phonemes; per-variant rows are a follow-up.
voicegarden-lexicons v0.4.0
All bundles relabeled CC BY-SA 4.0 (data) + MIT (tooling) with Wiktionary attribution — data byte-identical to v0.3.1. The fetcher follows releases/latest; provisioning re-verified end-to-end.
Dasher: gate modelNeedsLexicon on readiness == "needs_bundle", call the provisioning ABI after download — see the #92 comments for the integration sketch.