Skip to content

v0.3.13 — OmniVoice Studio

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Jul 21:33
67789fb

The community-fixes release. Two contributors didn't just report bugs — they diagnosed them to the exact line and submitted the fixes that shipped: voice cloning on mlx-audio's CSM model works for the first time, and macOS live recording finally gets its microphone permission prompt (both @MahdiHedhli). A third reporter's A/B analysis fixed cross-language dubs speaking the wrong language. On top of that: a backend shutdown race that produced confusing crash-on-quit reports is fixed, the Linux AppImage stops shipping a stale WebKitGTK that white-screened current distros, and a new OpenAI-compatible transcription backend opens a path to Qwen3-ASR today. Thank you to everyone who filed, diagnosed, and contributed — this release is mostly yours.

Added

  • A path to Qwen3-ASR today: generic OpenAI-compatible transcription. The direct integration is still blocked on transformers>=5.13 stabilizing upstream, but a community member proposed splitting the work — add a backend that talks to any OpenAI-compatible transcription server right now. Point OmniVoice at a self-hosted Qwen3-ASR/FunASR/SenseVoice server, or OpenAI's own API, configured in Settings → Models. No install; audio does leave your machine to whichever server you configure, unlike every other ASR engine. (#877)

Fixed

  • The Linux AppImage no longer white-screens on current distros with a healthy system WebKitGTK. The release build ran on an older CI base image, and the resulting AppImage bundles whatever libwebkit2gtk that image's apt repos resolve — which the AppImage's own LD_LIBRARY_PATH then prioritizes over your system's newer, healthy copy at runtime. A from-source build (which links straight against your system library) worked fine on the exact same machine where the shipped AppImage didn't — that split was the tell. Bumped the release build to a current Ubuntu LTS. Raises the AppImage's minimum host to glibc 2.39 (Ubuntu 24.04+); no reports from anyone on an older distro. (#961)
  • Backend shutdown no longer races a still-loading model, surfacing a confusing crash on restart. Quitting the app while a model was still loading in the background let shutdown report itself "done" while a background thread was still mid-import; tearing the process down under that thread produced a misleading error (a generic transformers import-failure message, unrelated to the real cause) that looked like a real crash rather than a timing issue. All background tasks are now properly cancelled and awaited before shutdown proceeds. (#1000, likely the same class behind #941 and #979)
  • Cross-language dub no longer speaks the source-language reference line verbatim. Auto-generated speaker clones pair an audio slice with the ASR segment's own text field, assuming the two agree — but ASR segment text and its timestamps routinely drift (a trailing word audible in the clip but missing from the text, or vice versa). A mismatched (reference audio, reference text) pair breaks zero-shot TTS prompt priming badly enough that the clone can emit the reference text itself instead of the target-language line it was asked to speak. Each reference clip is now re-transcribed after it's written, so the pair matches by construction — reported with an exceptionally clear root-cause diagnosis and a working A/B repro. (#1004)
  • Voice Gallery errors now say what actually went wrong. "Use voice", "Preview", search, upload, save, delete, and trim in the Gallery all showed the same hardcoded guess ("the engine may be loading") on ANY failure — a 500, a validation error, a genuinely unrelated bug — discarding the real, already-clean backend error message in the process. Every one of those now shows the actual error.
  • Voice cloning on mlx-audio's CSM model no longer crashes with an opaque "list index out of range". MLXAudioBackend.generate() read voice/ref_audio/language/speed from its kwargs but silently dropped ref_text — CSM only builds its cloning context when both ref_audio and ref_text are present, so cloning on this engine could never have worked as shipped. Reported with the exact root cause and a working fix. (#1012, #1013)
  • A dub segment's free-text style tags no longer 400 the segment preview. A validator-safe instruct builder already keeps Studio and Clone generation from round-tripping a 400 on unsupported free-text (a preset's raw attrs, an old profile's stray descriptive phrase) — but the Dub tab's segment preview, and saving a profile from a clone or from history, built their instruct strings directly and skipped it. Same guard now applies everywhere an instruct string is sent. (#1010)
  • The dub editor's play button no longer sticks permanently disabled after an audio-decode hiccup. When the initial WaveSurfer decode fails, the timeline falls back to loading pre-computed peaks — the waveform draws fine, but the button's enabled state only relied on the ready event firing again for that recovery load, which it didn't reliably do. Each fallback path now confirms readiness explicitly once it settles.
  • macOS: live recording finally works — the microphone permission prompt now actually appears. The app never showed up in System Settings → Privacy & Security → Microphone because macOS never saw a legitimate request: Tauri enables Hardened Runtime by default, which blocks microphone hardware access unless the matching entitlement is in the signed bundle — and it wasn't. Diagnosed to the exact mechanism and fixed by a community contributor (@MahdiHedhli), who also corrected our initial mis-read of this as an upstream WebKit limitation. (#1013, #1016)
  • Quitting during a slow model load waits longer before giving up. A post-merge code review of the shutdown-race fix flagged that its 3-second wait could still be outrun by a cold model import on a slow disk, reproducing the original confusing-crash-on-quit in rare cases. The wait is now 20 seconds — imperceptible on a normal quit (tasks finish or cancel in milliseconds), only felt in the exact case it protects. (#1020)

Changed

  • Removed the donate heart from the nav rail. Support OmniVoice is still one click away from Settings and the Contact page.

CI

  • The "flaky trio" is root-caused and neutralized. Three tests failed intermittently on CI — never locally — across unrelated PRs, costing a re-run each time. Cause: a leaked half-precision torch default from some earlier test in CI's ordering (the giveaway: a failing assertion's observed value was exactly float16(0.1)). An autouse test-suite guard now resets the leak between tests and names the offending test in CI output when it fires. (#1021)

macOS Apple Silicon artifacts

bdc1ff1bad91350438d03258ba89518786d5d3541b3b579dcf86d37210c12136  OmniVoice Studio_0.3.13_aarch64.dmg
841cc95e311d32e9a2c2cf44afc10d0c03f0dbe6fbd392c9f615a08b6a346f9d  OmniVoice Studio.app.tar.gz
4dfdb9ba007f19acea5e8c055638dc8a1494d0f82337b974f4c6f72163e7c8fd  OmniVoice Studio.app.tar.gz.sig

Windows x64 artifacts

1a7db126add3f359261d12985d660170acd9ab063514dd09a1cd1cdfd678dc11 *OmniVoice Studio_0.3.13_x64_en-US.msi
4d3db5791046003ebb732e4653e294dcb677cf0be8a628a7c93a7c8c1412cd22 *OmniVoice Studio_0.3.13_x64_en-US.msi.sig

macOS Intel artifacts

1aec66fab34aa2f8e37acb1f29fb11b2063b2517ff2451338882283a7e93632b  OmniVoice Studio_0.3.13_x64.dmg
c85531f003b153280d6581e6df8058d683930a0352b528539b96d1390be6ae24  OmniVoice Studio.app.tar.gz
c4917ff1ba08bff63d26a9944b45d0687cc6da55e802a85021e4ca41e939a88a  OmniVoice Studio.app.tar.gz.sig