This release is a pre-release and may not be stable for production use.
ovos-tts-plugin-omnivoice
TTS plugin for OpenVoiceOS wrapping OmniVoice, a massively-multilingual (600+ language) zero-shot text-to-speech model from the k2-fsa / sherpa / icefall team, built on a diffusion language-model architecture.
OmniVoice has no fixed speaker catalogue. It produces a voice in one of three modes, all wired through this plugin:
| Mode | How | Plugin config |
|---|---|---|
| Auto | model picks a speaker | voice: "auto" (default) |
| Voice design | describe the voice in free text | voice: "female"/"male", or instruct: "..." |
| Voice cloning | clone a short reference clip | ref_audio (+ optional ref_text) |
Languages
OmniVoice supports 600+ languages. This plugin ships explicit BCP-47 → model
language_id mappings for the languages below. Any other tag falls back to its
primary sub-tag, which the plugin passes straight to the model, so unmapped
languages still work if the model knows them.
lang |
language_id |
Language |
|---|---|---|
en, en-US, en-GB |
en |
English |
es |
es |
Spanish |
fr |
fr |
French |
de |
de |
German |
it |
it |
Italian |
pt |
pt |
Portuguese |
ru |
ru |
Russian |
zh, zh-CN |
zh |
Chinese |
ja |
ja |
Japanese |
ko |
ko |
Korean |
hi |
hi |
Hindi |
tr |
tr |
Turkish |
fa |
fa |
Persian |
ur |
ur |
Urdu |
Set the OVOS lang (or per-request lang) to any of these tags. To reach one of
the 600+ languages that isn't mapped here, pass its ISO code as the lang. The
model accepts a language name ("English") or code ("en") directly.
Arabic varieties
OmniVoice was trained on many Arabic varieties, so regional Arabic tags route to a distinct trained variety instead of collapsing to Modern Standard Arabic:
lang |
language_id |
Variety |
|---|---|---|
ar |
arb |
Modern Standard Arabic |
ar-SA |
ars |
Najdi (Saudi) |
ar-AE, ar-KW, ar-QA, ar-BH |
afb |
Gulf |
ar-MA |
ary |
Moroccan / Darija |
ar-EG |
arz |
Egyptian |
ar-TN |
aeb |
Tunisian |
ar-LY |
ayl |
Libyan |
ar-DZ |
arq |
Algerian |
ar-SD |
apd |
Sudanese |
ar-LB, ar-SY, ar-JO, ar-PS |
apc |
Levantine |
ar-IQ |
acm |
Mesopotamian |
ar-OM |
acx |
Omani |
ar-TD |
shu |
Chadian |
Voice design across languages: OmniVoice's voice-design (
instruct) mode is trained mainly on English and Chinese. It generalizes to other languages but is less stable than the auto voice or a cloned reference clip. For the most stable output in other languages, prefervoice: "auto"or supplyref_audio.
Install
The OmniVoice runtime (PyTorch + the multi-GB omnivoice package) is a core
dependency, so a plain install is enough to synthesize:
pip install ovos-tts-plugin-omnivoice
It runs on CPU or GPU. A GPU is optional and only makes synthesis faster; it is not required. The default install pulls PyPI's default torch build (CPU-capable). To target a specific accelerator, reinstall torch from the matching index:
# NVIDIA CUDA:
pip install torch==2.8.0+cu128 torchaudio==2.8.0+cu128 \
--extra-index-url https://download.pytorch.org/whl/cu128
# ...or AMD ROCm:
pip install torch torchaudio --index-url https://download.pytorch.org/whl/rocm6.2
# ...or a slim CPU-only build:
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
The plugin auto-detects the device (CUDA/ROCm if available, else CPU). Weights
download automatically from k2-fsa/OmniVoice on the first synthesis.
Configuration
mycroft.conf:
{
"tts": {
"module": "ovos-tts-plugin-omnivoice",
"ovos-tts-plugin-omnivoice": {
"lang": "en",
"voice": "auto",
"num_step": 32
}
}
}
Config keys:
| Key | Default | Meaning |
|---|---|---|
lang |
session lang | BCP-47 tag, mapped to an OmniVoice language_id (tables above) |
voice |
auto |
auto, female, male, or a preset name |
instruct |
none | free-text voice-design string (overrides voice) |
ref_audio |
none | path to a 3 to 10 s reference clip → voice cloning mode |
ref_text |
none | transcript of ref_audio (auto-transcribed if omitted) |
device |
auto | cuda:0, cpu, mps, or xpu, auto-detected (CUDA if available, else CPU) |
dtype |
auto | torch dtype, float16 on CUDA, float32 on CPU |
num_step |
32 |
diffusion steps (16 = faster, 32 = higher quality) |
speed |
none | speaking-rate factor (>1 faster, <1 slower) |
Example: clone a reference voice:
{
"tts": {
"module": "ovos-tts-plugin-omnivoice",
"ovos-tts-plugin-omnivoice": {
"lang": "en",
"ref_audio": "/home/ovos/voices/ref.wav",
"ref_text": "Welcome to the voice assistant."
}
}
}
Serve it via ovos-tts-server
Install the server alongside this plugin, then point it at the module:
pip install ovos-tts-server ovos-tts-plugin-omnivoice
ovos-tts-server \
--engine ovos-tts-plugin-omnivoice \
--port 9666 \
--cache
Then request audio (the lang selects the language / variety):
# English
curl -G "http://localhost:9666/synthesize/hello there" --data-urlencode "lang=en" -o en.wav
# Modern Standard Arabic
curl -G "http://localhost:9666/synthesize/مرحبا" --data-urlencode "lang=ar" -o msa.wav
# Najdi (Saudi) Arabic
curl -G "http://localhost:9666/synthesize/مرحبا" --data-urlencode "lang=ar-SA" -o najdi.wav
Docker
A batteries-included image runs the plugin as an ovos-tts-server:
docker run -p 9666:9666 -v omnivoice-cache:/home/ovos/.cache \
ghcr.io/openvoiceos/ovos-tts-plugin-omnivoice:latest
The image is built and pushed to GHCR on every push to dev/master. See
docs/docker.md for configuration and the bundled
docker-compose.yml.
License
Apache-2.0. The k2-fsa team distributes OmniVoice itself under its own license. See the upstream repository.
Metadata
Release files for ovos-tts-plugin-omnivoice 0.0.2a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ovos_tts_plugin_omnivoice-0.0.2a1.tar.gz | 14.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ovos_tts_plugin_omnivoice-0.0.2a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.3 kB
Release files / ovos_tts_plugin_omnivoice-0.0.2a1.tar.gz
| Download URL | ovos_tts_plugin_omnivoice-0.0.2a1.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
433a5b0920711b11a82f43409a5cc51832c53ed2f847caf2655975b6b2419886
|
|
BLAKE2b-256 checksum How to use checksums |
03619fb4056f574a53f9d63a26446425f3ba6a8ac9f34954bbc0704dabd68ef4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ovos_tts_plugin_omnivoice-0.0.2a1-py3-none-any.whl
| Download URL | ovos_tts_plugin_omnivoice-0.0.2a1-py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
beb9c2dff068e97a4143abc27a927dcac827f73f019003662790d8514982fb96
|
|
BLAKE2b-256 checksum How to use checksums |
24eb12cdb6b41ffa2a3833d618db56b91d2c6cfe35d0b93673b7ae4526b20d7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|