Highlights
- AMD GPUs are used again — every ROCm host was silently running on the CPU
- Two synth failures that used to say "an error OmniVoice doesn't recognize" now say what actually went wrong
- A dub URL ingest that fails on a disk problem now says which folder and why
- A broken audio dependency no longer takes the whole backend down at startup
- A GPU too small for the chosen engine now says so up front, not after a five-minute wait
- A port conflict now says so, instead of "Backend died (exit code 1)"
- A model download that dies at 90% now resumes instead of failing the install
- First run: Continue and the Hugging Face token box no longer sit under the status bar
- macOS 12 (Monterey): the app launches again instead of dying on startup
- Exporting a voice or a dub no longer fails when the name isn't spelled in Latin letters
- Two more failures that used to arrive as raw OS text now say what to do about them
- Unload works on every model the panel offers it for, and a language the active engine can't speak says so
- Deleting a dub no longer un-deletes itself when the job it belonged to finishes
Changed
- First run: the status bar (Logs, version, Sponsors) appears once you reach the studio, instead of overlaying the setup steps (#1241)
Added
OMNIVOICE_MCP_ALLOWED_HOSTS— comma-separated host patterns (e.g.host.containers.internal:*,192.168.1.5:*) that extend the MCP SDK's DNS-rebinding allowlist, so AI agents running in Docker containers or on other machines can reach the/mcpendpoint. The SDK default is localhost-only; this env var is opt-in (#1249)
Docs
- Docker: ROCm section explains that
torch.cuda.is_available() == Trueisn't proof the app is on the GPU, and notes the--group-addneeded for/dev/kfdon rootless hosts (#1228)
Fixed
- Deleting a dub while it was still importing crashed the import with the toast
ingest: 'mgw39lx3'— a dict key and nothing else — and the delete could then be undone by the job's own pending write, in history or mid-render; both are fixed, and no failure can present itself as a bare value again — thanks dustmaker124-ui! (#1252, #1253) - macOS 12 (Monterey): the app threw on startup and never started the backend — it called a Safari 16 method on the WebView that macOS ships. It launches and works now; some styling still needs a newer WebView (tracked in #1268) — thanks singhrahat! (#1245)
- Settings → Engines: Unload failed with
400 Unknown model id: engine:kittenttson any in-process engine — the panel offered the button for ids the backend never accepted; the warm dictation model had the same gap — thanks JavaxmI! (#1247) - Picking a language the active engine can't speak recited 23 codes without saying which engine refused or that switching engine was the fix — thanks pulananave! (#1257)
- A YouTube import that failed as "DRM protected" and then worked on a manual retry now escalates the player client automatically, and a genuinely undownloadable video says so — thanks gysahlgreene! (#1254)
- Exporting a voice profile, persona, dub, subtitle or stem whose name is Chinese, Japanese, Korean, Cyrillic, Greek, Hebrew or emoji failed with a
'latin-1' codec500 — every download endpoint now sends the name correctly, and browsers get the real one back — thanks zvxzdx! (#1262) - A synth that failed because ffmpeg/ffprobe wasn't on the system path said "an error OmniVoice doesn't recognize"; it now names the media engine and points at Settings → Audio tools, and the app's own copy is published on PATH so dependencies find it in the first place — thanks Heuvelsma! (#1256)
- Windows "The paging file is too small" arrived as a bare 500; it now explains that this is a virtual-memory setting, not full RAM, and gives the steps to raise it — thanks trankeny545-sudo! (#1251)
- AMD/ROCm: every ROCm host was silently force-routed to the CPU — the compatibility gate compared a CUDA
sm_tag against a ROCm build'sgfxlist, which can never match — thanks simmessa! (#1228) - AMD/ROCm:
torch.compilewas disabled on all AMD hosts by the same mismatched comparison (#1228) - AMD/ROCm:
HSA_OVERRIDE_GFX_VERSIONis auto-set only when your card genuinely needs it and the remap target exists in your build; gfx1150/gfx1151 (Strix Point/Halo) added to the map (#1228) - Windows blocking an engine file (Smart App Control, WDAC, or AppLocker) is now named, with the fix for personal and managed PCs — thanks AdityaHemantBhat! (#1227)
- A failed audio write (
LibsndfileError: System error.) now names the target file, its folder's writability and the drive's free space — thanks morozov28061995-boop! (#1221) - Dub URL ingest: a disk error now names the job folder, its writability and the drive's free space, instead of pointing at the system TEMP folder it never used — thanks dustmaker124-ui! (#1225)
- Dub URL ingest fails immediately when the job folder is missing or unwritable, instead of starting a download that can only fail (#1225)
- The backend no longer dies at startup when transformers can't resolve its audio tokenizer (a missing or mismatched torchaudio, common on Google Colab) — it starts, and the error arrives with a repair hint — thanks Navdeep-Chauhan-777! (#1229)
- Importing
omnivoice.utils.*no longer drags in torch, torchaudio, transformers and the full model definition — thanks Navdeep-Chauhan-777! (#1229) - Colab notebook: the install cell now catches a broken environment with the real error, instead of a 5-minute health timeout two cells later — thanks Navdeep-Chauhan-777! (#1229)
- A GPU with less VRAM than the chosen engine needs is flagged in Settings → Engines before you generate, instead of showing a clean green "accelerated" until the job times out — thanks AdityaHemantBhat and @beingavais! (#1226, #1222)
- A generation timeout now names your actual card and its VRAM and recommends a lighter engine (#1226, #1222)
- First run: Continue and the Hugging Face token box rendered underneath the status bar, off the bottom of the window — the wizard laid itself out against the viewport instead of its own frame (#1241)
- A busy port 3900 now reports a port conflict instead of "Backend died (exit code 1)", in every language — thanks xipb14! (#1223)
- The app verifies it actually freed the port before starting the backend, rather than assuming the kill worked (#1223)
- A model download truncated near the end is now retried and resumed instead of aborting the whole install — thanks Reaksa-Cambodia! (#1224)
- Engine first-use downloads (VoxCPM2, MOSS-TTS-Nano) retry transient network failures instead of failing the load outright (#1224)
- A backend killed by the OS mid-stream now leaves a low-memory trail in the crash report (#1224)
macOS Apple Silicon artifacts
3c88dc39fbef840a81d6c4d5df862d4cb1970bebe320da973e7f304d97e4febe OmniVoice Studio_0.4.1_aarch64.dmg
be702e7f03913da7a4ff4bb0049dc2dd225d3c5602d959a6dcbcce7330c75049 OmniVoice Studio.app.tar.gz
3845c8a23fc79b8025cd8e3a6b8766901c0d1928ef6e0569e0ee6c25b63a541c OmniVoice Studio.app.tar.gz.sig
Windows x64 artifacts
d6d407fb26ce2aa7c474909d6cbce236daa044a56e258c46681296ef9c968d00 *OmniVoice Studio_0.4.1_x64_en-US.msi
011c4c8e9c58bf2de3b06a3a76df26718b5c6f0ecb168bd3d495c3b334952e96 *OmniVoice Studio_0.4.1_x64_en-US.msi.sig
macOS Intel artifacts
91fd008c1bbd60b2f665ef7836a326c1756fee5b0cf3db15b9c845d249431f0b OmniVoice Studio_0.4.1_x64.dmg
84a8b1ac1da95ecdfb1c0be08cb5a4e57ca5cead3e0a14a416caf50e15aec6d7 OmniVoice Studio.app.tar.gz
82e6bb094852c15ebfae54f45c22ac4185d36bd398cf52ac3e1e1c73cf0b26ca OmniVoice Studio.app.tar.gz.sig
Contributors
Thank you all 💜