OmniVoice zero-shot multilingual TTS (600+ languages) with voice cloning and voice design. Launcher scripts live in the repo root; application code is under app/.
- Installs PyTorch via
torch.js(per platform), then Python deps fromapp/requirements.txt(includingomnivoice). - Validated against
omnivoice>=0.1.3,<0.2,gradio>=5.0,<7andtransformers>=5.3,<6. These pins live inapp/requirements.txt— bump them there and re-run Install or Update when upgrading. - Starts the Gradio UI from
app/app.py(same flow as the Hugging Face Space). - Uses one Pinokio virtual environment:
env/at the project root (not underapp/). If you see bothenv/andapp/env/, removeapp/env/and rely on Install so PyTorch and packages live in the rootenv/only.
- Install — creates
env/, runstorch.js(platform-specific PyTorch), thenuv pip install -r app/requirements.txt. - Start — from the project root runs
python app/app.pywithOMNIVOICE_PORT={{port}}(next free port). Gradio binds to127.0.0.1by default; see environment variables below. - Update —
git pull(if this folder is a git repo), thenuv pip install -U -r app/requirements.txt. - Reset — removes
env/for a clean reinstall. - Save Disk Space —
link.jsdeduplicates venv library files.
| Variable | Purpose |
|---|---|
OMNIVOICE_MODEL |
Hugging Face repo or checkpoint (default k2-fsa/OmniVoice). |
OMNIVOICE_DEVICE |
Force cuda, mps, directml, or cpu (default: auto cuda → mps → directml → cpu). Unknown or unavailable values fall back to auto-detection with a warning. |
OMNIVOICE_LOAD_ASR |
0 / false to skip Whisper ASR (less VRAM; supply reference text for clone). |
OMNIVOICE_HOST |
Gradio server_name (default 127.0.0.1). Use 0.0.0.0 to listen on all interfaces. |
OMNIVOICE_PORT, PORT, GRADIO_SERVER_PORT |
Gradio port, 1-65535 (Pinokio sets OMNIVOICE_PORT). Unparseable or out-of-range values are ignored with a warning and Gradio picks the port. |
The first Start downloads checkpoints from the Hub (several GB). You may see:
Warning: You are sending unauthenticated requests— set a Hugging Face token asHF_TOKENin Pinokio (environment / secrets) or in your user environment so Hub rate limits are higher and downloads are faster.- Slow transfer — this launcher sets
HF_XET_HIGH_PERFORMANCE=1instart.js(Xet high-performance mode;hf_transfer/HF_HUB_ENABLE_HF_TRANSFERare no longer used byhuggingface_hub1.x). - Mirror (e.g. region / connectivity) — optional:
HF_ENDPOINT(see OmniVoice README forhf-mirrorand similar).
Logs like Loading model ... to cpu mean PyTorch selected CPU (no usable CUDA/MPS/DirectML, or CPU-only PyTorch). For NVIDIA acceleration, install with Install so torch.js installs the CUDA build, and ensure a recent GPU driver. Forcing OMNIVOICE_DEVICE=cuda (or mps) only takes effect when that backend is actually available; otherwise the app warns and falls back to auto-detection rather than failing to load. On Windows + AMD, torch.js installs torch-directml and the app auto-detects it (or force OMNIVOICE_DEVICE=directml).
After Start, open the URL from Pinokio (“Open Web UI”) or the logs. The server is http://127.0.0.1:<port> by default.
curl -sS "http://127.0.0.1:PORT/"Replace PORT with the port shown in Pinokio.
Use the Gradio Python client against http://127.0.0.1:PORT (same port as in the launcher).
Use the Gradio JavaScript client (@gradio/client) with the same base URL.
project-root/
├── app/
│ ├── app.py
│ └── requirements.txt
├── install.js, start.js, update.js, reset.js, link.js, torch.js
├── pinokio.js, pinokio.json
└── README.md
OmniVoice: arXiv:2604.00688, GitHub.