Files
VoiceStudio/docs/engines/README.md
T
Palash DebnathandClaude Fable 5 48c9a3b1f8 feat(settings): compute-device override (auto / CUDA / ROCm / XPU / MPS / CPU) (#1557)
* feat(settings): compute-device override — auto | CUDA | ROCm | XPU | MPS | CPU

Auto-detect stays the default; the override kills the 'auto-detect picked
wrong' issue class. Applied at the single choke point (_probe()'s family
selection) so routing, get_best_device(), and every badge inherit it.
Resolution: OMNIVOICE_DEVICE env > Settings pick (prefs.json) > auto (#981
pattern). An override can steer, never invent hardware: a family the host
lacks is noted and ignored; cpu is always honorable. Applies at next
backend start (host caps are immutable per process — same restart contract
as the rest of the Performance tab, RestartBadge shown).

GET/PUT /api/settings/compute-device (admin-gated) reports resolved vs
applied so the panel shows restart-required truthfully and disables itself
under an env pin instead of pretending.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(changelog): entry for the compute-device override (#1557)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(device-override): harvest — the override reaches CT2 ASR, full i18n, honest edge states

- _ctranslate2_cuda_ok() and the ASR sidecar now gate on the probe's family,
  so a cpu pin (or ROCm host) can never hand CTranslate2 a CUDA device —
  the override reaches every CT2 loader through one shared gate
- override_ignored exposed by the API and shown by the panel (env pin naming
  a device this machine lacks: auto is in effect, restart won't change it)
- all 8 panel strings + 5 device-family labels translated into all 21
  locales; failed saves keep their error visible through the re-sync
- test isolation: cleanup drops OMNIVOICE_DEVICE before re-probing so no
  overridden caps leak into later tests; panel tests wait for loaded state
- xpu/intel search keywords; oxfmt formatting

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(device-override): round 2 — fail-safe probe fallbacks, complete i18n, combined pin state

- a broken capability probe now means CPU everywhere (CT2 gate + ASR
  sidecar) — never a torch-derived guess that would bypass a cpu pin or
  re-open #1529 on ROCm; regression test added
- env-pinned AND not-detected shows both facts in one subtitle
- device_load_failed/perf_save_failed translated into all 21 locales;
  CJK/th/vi/ar strings no longer say literal 'Auto'
- test_ctranslate2_never_gets_cuda_on_a_rocm_build pins the probe family
  (it was order-dependent on the lru_cache before)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(test): pin the probe family in the faster-whisper OOM-fallback test

Same class as the rocm-build test: it mocked torch but not the probe the
new override gate consults first, so on a cpu-family CI host the CUDA
fallback chain under test was unreachable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 05:08:51 +00:00

4.4 KiB

Engine guides

One page per engine: what it's for, what it needs, how to enable it, and its quirks. Select engines in Model Catalogue → Engines (or quick-switch with Ctrl/Cmd+E), or pin one with OMNIVOICE_TTS_BACKEND / OMNIVOICE_ASR_BACKEND.

The compute device (CUDA/ROCm/MPS/CPU) is auto-detected; pin it under Settings → Performance & Device (or OMNIVOICE_DEVICE) if auto-detect picks wrong — see performance.

Measured speed/VRAM numbers live in benchmarks; what each engine can do expressively in expressive-speech; sidecar disk footprints in disk-usage; the bar a new engine must clear in engine-acceptance.

New to VoiceStudio? Install the app first — macOS (first launch needs the one-time right-click → Open Gatekeeper approval), Windows, Linux, Docker.

Text-to-speech

Engine Guide Runs on Cloning Enabled by
VoiceStudio (OmniVoice) — default omnivoice CUDA · MPS · CPU installed by default
VoxCPM2 voxcpm2 CUDA · MPS · CPU + voice design pip install "voxcpm>=2.0.3"
MOSS-TTS-Nano moss-tts-nano CUDA · CPU (ref only) clone + uv pip install -e .
KittenTTS kittentts CPU — (8 preset voices) pip install kittentts
MLX-Audio (Kokoro, CSM, Dia, …) mlx-audio Apple Silicon model-dependent pip install mlx-audio
CosyVoice 3 cosyvoice CUDA · CPU clone + requirements
GPT-SoVITS gpt-sovits external server its own API server
Sherpa-ONNX sherpa-onnx CUDA · CPU pip install sherpa-onnx + model dir
IndexTTS 2.5 indextts CUDA · CPU + emotion one-click sidecar install
OmniVoice GGUF omnivoice-gguf CUDA · MPS · CPU bundled binary
Supertonic-3 supertonic3 CPU — (7 preset voices) uv sync --extra supertonic + license
MOSS-TTS-v1.5 (8B) moss-tts-v15 CUDA · CPU clone + env var
dots.tts (2B) dots-tts CUDA · CPU (not Windows) clone + env var
OmniVoice (subprocess) omnivoice-subprocess CUDA · MPS · CPU opt-in pick, no install
PocketTTS (Kyutai) pockettts CPU (not Intel Mac) uv sync --extra pockettts + license
Confucius4-TTS confucius4-tts CUDA · CPU clone + env var

Speech-to-text

Engine Guide Runs on Best at Enabled by
WhisperX whisperx CUDA · CPU dubbing (word timestamps + diarization) installed by default
Faster-Whisper faster-whisper CUDA · CPU general transcription installed by default
Faster-Whisper (isolated) faster-whisper-isolated CUDA · CPU unattended batches opt-in pick
MLX Whisper mlx-whisper Apple Silicon Mac default pip install mlx-whisper
PyTorch Whisper pytorch-whisper CUDA · MPS · CPU ROCm hosts installed by default
Parakeet TDT (NeMo) nemo-parakeet CUDA · CPU 25 languages, fast CPU separate venv (never the app's)
Parakeet TDT (MLX) parakeet-mlx Apple Silicon dictation, 25 EU languages default on mac-ARM source installs
Moonshine moonshine CPU edge/low-power, no timestamps pip install (see guide)
FunASR (SenseVoice) funasr CUDA · CPU 50+ languages, inline diarization pip install funasr
Sherpa-ONNX dictation sherpa-onnx-asr CPU live streaming dictation curated model download
OpenAI-compatible (remote) openai-compatible-asr network offloading to a server (audio leaves the machine) Model Catalogue

Speaker diarization is not an engine registry of its own — the dub pipeline uses pyannote (HF-gated; see diarization) and FunASR can diarize inline with its cam++ speaker model.