You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Add experimental --backend omnivoice for OmniVoice TTS via onnxruntime
--omnivoice-steps to configure MaskGIT decode steps (default: 32)
--omnivoice-ref-dir for custom voices: a directory of voices organized
as <language>/<voice_name>/, loaded at startup and advertised as voices.
Each voice directory is either a cloning voice (ref.{wav,txt}) or a
voice-design voice (instruct.txt, whose text describes the desired voice
style). A default voice is also advertised for every supported language;
it (or an empty/unknown voice name) uses the built-in speaker.
--omnivoice-language to set the default synthesis language (default:
English); per-request language codes (en_US, en-US) are also honored.
The default voice is advertised for the ~128 languages with an ISO 639-1
tag (plus Cantonese, Standard Arabic and Odia) rather than all 646 codes
OmniVoice lists; the rest are still reachable, just not advertised
--omnivoice-onnx-repo to override the HuggingFace repo for the ONNX graph
block-wise int4 quantization is hardcoded for now (clean audio at low step
counts, e.g. --omnivoice-steps 10); reproduce with script/quantize_omnivoice.py
the ONNX model is used from a --data-dir if present there, otherwise
downloaded into --download-dir (used as the HuggingFace cache)
install with the omnivoice optional dependencies. For Docker, this is a
separate rhasspy/wyoming-piper:omnivoice image (amd64 only) so the
default image doesn't grow a torch/transformers dependency.
Require Python 3.10 or later (the omnivoice dependencies need it)
Add --local-files-only to run the HuggingFace loader in offline mode
Add --web-server for a web UI (runs alongside the Wyoming server) to manage
custom and cloned voices. Custom Piper voices are managed across every --data-dir, not just --download-dir (where uploads still land). Missing
dependencies and an unavailable port are reported at startup, before the
backend loads its model.
Fix voices added or removed while the server runs being ignored until the
process restarted. The voice list was built once at startup, so a voice added
through the web UI was never advertised, and requesting it silently fell back
to the OmniVoice built-in speaker. Voices are now rescanned per Describe and
when an unknown voice is requested.
Fix custom voices being advertised under their dataset name instead of their
file name, which made them impossible to synthesize when the two disagreed.
The dataset name is still accepted as an alias, including as --voice.
Fix a custom voice with missing or unreadable files (a leftover .onnx with no .onnx.json, for example) stopping the server from starting. It is now skipped
with a warning; a broken --voice is still an error.