The Model Catalogue put the same decision on two axes: an Engines pane with TTS/ASR/LLM tabs and a Models pane with TTS/ASR/Dictation/Diarisation sections, dictation shown in both, plus storage stats, the HF token and the voice-preview toggle parked on the model list. Settings → Voice still carried Engines and Models entries that only pointed back here. Now the page reads top-down: a SetupSummary (speech, transcription, dictation, language model — engine, device, one status word, Change), the engine list for one family, and that family's downloadable weights under it (TTS under TTS; offline ASR, streaming dictation and diarisation under ASR; nothing for LLM, whose engines bring their own). One storage line points at Settings → Storage. - ModelStoreTab takes a `family` and scopes sections and the recommendation preset to it (scopeReco); stats strip, HF-token toolbar and previews panel removed from it. - Settings: Engines/Models categories and CataloguePointer removed; models directory → Storage, HF mirror → Network (both restart-flagged), voice previews → Storage. "Manage models" in disk usage opens the catalogue. - Store: openCatalogue takes a family (pane key tolerated, ignored); pendingCatalogueTab gone. - Engine matrix title is now the locale's plain "Engines". - i18n: catalogue.* summary keys in all 21 locales; pane/pointer keys dropped. - Docs: "Model Catalogue → Engines" is "Model Catalogue"; "→ Models" is "→ Downloaded weights".
2.7 KiB
VoiceStudio — Faster-Whisper (Crash-Isolated) Engine
The same CTranslate2 Whisper engine as faster-whisper, run in a separate child process ("sidecar"). CTranslate2's GPU teardown can segfault — the endemic faster-whisper crash — and a hung or crashed transcribe in-process takes the whole backend down with it. Isolated, the child can crash or be force-killed to reclaim a hung transcribe and its VRAM while the backend stays up (#730).
There is nothing extra to install: the sidecar reuses the app's own venv — only the process boundary is new.
Selecting it
- Model Catalogue, ASR tab → Use on the crash-isolated row, or
- pin it with
OMNIVOICE_ASR_BACKEND=faster-whisper-isolated.
It is never picked by auto-detect — it's an explicit opt-in escape hatch.
Best at
- Long batch runs where one bad file must not kill the backend.
- Machines where in-process faster-whisper has crashed or hung before: a sidecar crash fails only that job, and the next transcribe respawns a fresh sidecar automatically.
Platform support
Same as faster-whisper: CUDA float16 or CPU int8 on macOS, Windows, and Linux. The sidecar picks cuda/cpu itself and walks the same float16 → int8_float16 → int8 degrade chain on GPUs without efficient fp16 (#551).
Model selection
ASR_MODEL_FASTER— the shared model selection, same as the in-process engine: set it once and both variants load the same weights.ASR_MODEL_FW— optional sidecar-only override; when set it wins overASR_MODEL_FASTERfor this engine. Defaultlarge-v3.ASR_COMPUTE_TYPE— optional: pin the sidecar to one CTranslate2 compute type instead of the automatic degrade chain.
Weights download on first load — see downloading-models.
Trade-offs and quirks
- Slightly slower per call than in-process faster-whisper (IPC overhead); the model stays warm inside the sidecar between calls, so the cost is per request, not per chunk of audio.
- Word timestamps are Whisper-native (±100–300 ms) — no forced alignment. For dubbing lip-sync, use whisperx or mlx-whisper.
- If the sidecar dies mid-transcription the job fails with a clear "sidecar crashed" error and the backend stays up — retry to respawn.
- cuDNN 8 is still required on CUDA — same CTranslate2 requirement as the in-process engine. It's checked up front so a missing cuDNN 8 shows as "unavailable" in Model Catalogue instead of a sidecar that silently fails every transcribe (#1371).