github debpalash/VoiceStudio v0.3.8
v0.3.8 — OmniVoice Studio

latest releases: v0.5.0, v0.4.2, v0.4.1...
one month ago

A stability-focused release that makes first-run and Windows "just work," ships live, faster-than-real-time local dictation and a user pronunciation dictionary, and gives Settings a full redesign. It clears the wave of "Can't reach the local backend" reports at the source — the 8 GB-card OOM crash, the slow-load future-scheduling break, a Windows-only WhisperX load failure, an ASR engine that couldn't load CTranslate2 on newer Linux/WSL, and both transcription and generation stalls that looked like a dead backend (a wedged GPU job now resets the worker pool and returns an actionable timeout) are all fixed or now fail with a clear, actionable message. macOS gets native file drag-and-drop back (including macOS 26 Tahoe). Downloads are faster out of the box (parallel segmented transfer on by default) and the Hugging Face token that speeds them up is front-and-center on setup. Plus multi-voice story casting, faster long-form previews on Windows, and a friendlier, more honest batch of error messages across dub, generate, and design (a corrupt-binary failure no longer poses as "out of memory," a bad model id self-heals, and a stale dub job resets cleanly).

Highlights

  • Live local dictation — faster-than-real-time, fully offline (sherpa-onnx), with its own Voice settings panel [#683]
  • User pronunciation dictionary — teach the TTS how to say your names and terms [#685]
  • Settings, redesigned — a full sidebar-nav hub on one shared design system [#686, #690, #758, #835]
  • "Can't reach the backend" fixed at the source — 8 GB-card OOM crash, hung transcribes/generates now bounded with GPU-pool auto-reset, CTranslate2 loader fallback [#586, #656, #731, #742, #851, #699]
  • Honest errors everywhere — corrupt binaries and broken pipes no longer masquerade as "out of memory"; bad model ids self-heal; stale dub jobs reset cleanly [#706, #722, #665, #698, #661]
  • Self-repairing model cache — incomplete or corrupt downloads re-fetch automatically instead of dead-ending [#606, #741, #744]
  • macOS native file drag-and-drop is back — including macOS 26 Tahoe [#703]
  • Faster first-run downloads — parallel segmented transfer on by default, HF token front-and-center on setup [#657, #669, #688]
  • Multi-voice stories & smarter dubbing — tagged-script auto-casting, per-speaker cloned voices, speaker-aware re-splits [#615, #576, #616]
  • LLM Providers + Autofit translation — bring your own LLM; dubs fit each line to its time slot [#854]
  • Under the hood — Tailwind v4 + shadcn migration (~40 stylesheets deleted), oxlint/oxfmt/knip toolchain, visual-regression baseline [#778+, #761, #774, #771, #776]
Full change list (111 pull requests)
  • docs(changelog): complete the v0.3.7 section (items that landed but were un... — #568 (@debpalash)
  • fix(backend): auto-restart supervisor + client transport-retry — #572 (@debpalash)
  • fix(backend): import omnivoice from source when the editable install is mis... — #573 (@debpalash)
  • fix(install): actionable torch-wheel-download failure + local-wheel recovery — #574 (@debpalash)
  • fix(dub): auto-assign per-speaker cloned voices to segments — #576 (@debpalash)
  • feat(design): seed pin / re-roll for designed voices — #577 (@debpalash)
  • fix(gpu): prevent the 8 GB-card OOM crash behind the "backend unreachable" ... — #586 (@debpalash)
  • fix(tts): NFC-normalize text + dense-script-aware chunking for long-form qu... — #587 (@debpalash)
  • fix(backend): self-healing GPU pool so a reset can't strand requests — #601 (@debpalash)
  • fix(bootstrap): gate venv on omnivoice import + source fallback — #603 (@debpalash)
  • feat(support): Contact page, Ko-fi/PayPal donate, simpler license — #604 (@debpalash)
  • fix(dub): retry transient broken-pipe on URL download — #605 (@debpalash)
  • fix(tts): auto-repair incomplete model cache instead of dead-ending — #606 (@debpalash)
  • fix(ui): dub play button + designer script resize on Windows — #607 (@debpalash)
  • fix(transcribe): surface the real ASR-load failure instead of a generic "st... — #608 (@debpalash)
  • fix(design): heal validator-rejecting instruct on design voices — #600 (@debpalash)
  • test: backend route-inventory + webUI feature-coverage guards — #609 (@debpalash)
  • feat(stories): tagged-script [Name] parsing → auto multi-voice cast — #615 (@debpalash)
  • fix(setup): weight-aware install-state so truncated model cache isn't read ... — #626 (@debpalash)
  • fix(dub): speaker-aware re-split so merged speaker turns separate — #616 (@debpalash)
  • fix(onboarding): commit + bundle the demo voice clip — #633 (@debpalash)
  • feat(startup): watchdog that dumps thread stacks on a startup hang — #634 (@debpalash)
  • fix(dub+generate): yt-dlp 403 player-client fallback + non-finite audio guard — #635 (@debpalash)
  • docs(troubleshooting): add stuck-download / incomplete-cache recovery — #643 (@debpalash)
  • fix(dub): skip yt-dlp mtime stamp to avoid [Errno 22] on Windows — #644 (@debpalash)
  • fix(startup): timeout-bound MCP session-manager start to stop M1 startup hang — #645 (@debpalash)
  • fix(i18n): clear orphan-key advisory — add en bootstrap.lines, drop dead ga... — #646 (@debpalash)
  • test(onboarding): guard demo clip stays un-ignored + a bundled resource — #648 (@debpalash)
  • feat(setup): calmer descriptions + surface platform-tuned models by default — #649 (@debpalash)
  • chore(desktop-prod): add --keep-models for fast fresh-app runs — #650 (@debpalash)
  • fix(audiobook): play long-form preview via streaming HTTP, not decodeAudioData — #654 (@debpalash)
  • fix(asr): cross-platform speechbrain lazy-import guard — unblock WhisperX o... — #655 (@debpalash)
  • fix(asr): bound whole-file transcription so a stall isn't reported as "can'... — #656 (@debpalash)
  • feat(setup): show live download rate + size-remaining, surface HF token as ... — #657 (@debpalash)
  • fix(synthesize): validate clone-path instruct client-side so non-EN/ZH pros... — #658 (@debpalash)
  • fix(net): Windows preview playback — 127.0.0.1 loopback + quieter decode-fa... — #659 (@debpalash)
  • fix(dub): reset stale dub session gracefully instead of erroring "Job not f... — #661 (@debpalash)
  • fix(generate): classify a bad-instruct error as a 400, not a 500 "ran out o... — #665 (@debpalash)
  • feat(settings): add opt-out for auto-playing the preview after a render — #667 (@debpalash)
  • feat(setup): faster downloads by default + prominent, encouraged HF-token e... — #669 (@debpalash)
  • feat(footer): clickable version badge → Updates, with an update-available i... — #671 (@debpalash)
  • fix(clone): cap the ⊕ Insert popover height so it can't clip off the top of... — #672 (@debpalash)
  • docs(changelog): draft the [0.3.8] release section — #673 (@debpalash)
  • fix(setup): use the backend's authoritative aggregate for live download pro... — #675 (@debpalash)
  • fix(model): actionable "reinstall transformers" hint on a corrupted-install... — #676 (@debpalash)
  • fix(design): don't forward a clone profile_id in design mode (gender attrib... — #679 (@debpalash)
  • feat(dictation): live local dictation via sherpa-onnx + Voice settings panel — #683 (@debpalash)
  • docs(specs): ElevenLabs-parity roadmap + Tier-1 implementation specs — #684 (@debpalash)
  • feat(tts): user pronunciation dictionary (expressive-tts slice 1) — #685 (@debpalash)
  • refactor(settings): declutter + redesign the Settings UI onto a shared desi... — #686 (@debpalash)
  • fix(setup): pin the HF-token card next to Continue, not buried in the model... — #687 (@debpalash)
  • feat(setup): compact inline HF-token input pinned with the Continue action — #688 (@debpalash)
  • refactor(settings): premium redesign — compact density, nav rail, unified c... — #690 (@debpalash)
  • fix(settings): full-width content + fix right-side wrapping/overflow/padding — #696 (@debpalash)
  • fix(dub): reset gracefully on a stale job during initial upload/ingest — #697 (@debpalash)
  • fix(model): self-heal a leaked engine id in OMNIVOICE_MODEL instead of 500 — #698 (@debpalash)
  • fix(asr): fall back instead of crashing when CTranslate2's .so won't load — #699 (@debpalash)
  • docs(changelog): complete the [0.3.8] section for this release batch — #701 (@debpalash)
  • fix(desktop): enable native HTML5 file drag-drop on macOS — #703 (@debpalash)
  • fix(generate): classify WinError 193 as a corrupt native component, not OOM — #706 (@debpalash)
  • fix(model): route every OMNIVOICE_MODEL read through the resolver; tighten ... — #707 (@debpalash)
  • docs(changelog): refresh the [0.3.8] headline for the release body — #708 (@debpalash)
  • fix(dub): stream segments to disk to stop long-video RAM spikes — #709 (@debpalash)
  • fix(settings): contain page content within available width (no right-edge c... — #713 (@debpalash)
  • fix(generate): self-heal schema + don't 500 a generated clip on a history-w... — #714 (@debpalash)
  • fix(dub): pass OmniVoice's ffmpeg to yt-dlp so URL merge works off PATH — #716 (@debpalash)
  • fix(settings): harden control inputs against right-edge overflow (belt-and-... — #718 (@debpalash)
  • fix(generate): classify [Errno 32] Broken pipe as a lost-pipe error, not OOM — #722 (@debpalash)
  • fix(asr): bound every transcribe path + reset the GPU pool on hang so a wed... — #731 (@debpalash)
  • docs: add rust as prerequisite for from-source builds — #704 (@Deepakv2104)
  • fix(tts): retry the incomplete-cache auto-repair so a transient blip doesn'... — #741 (@debpalash)
  • fix(asr): reset the GPU pool when a chunked dub-stream chunk wedges too — #742 (@debpalash)
  • fix(tts): force re-download a corrupt-but-right-size model blob before givi... — #744 (@debpalash)
  • fix(dev): stop the Tauri dev app from killing concurrently's backend (bun d... — #745 (@debpalash)
  • docs(changelog): finalize the [0.3.8] release notes (date, ASR-hang scope, ... — #747 (@debpalash)
  • fix(settings): contain + tighten the whole Settings surface (design-system ... — #750 (@debpalash)
  • refactor(settings): modularize Settings page (1969→399 lines, all files und... — #758 (@debpalash)
  • refactor(dub): modularize DubTab page (1593→380 lines, all files under 500) — #759 (@debpalash)
  • refactor(pages): modularize Clone/Gallery/Profile pages (all files <500) — #760 (@debpalash)
  • chore(lint): adopt oxlint as the linter + CI gate; fix the bugs it surfaced — #761 (@debpalash)
  • fix(api): route backend fetches through apiFetch so they carry LAN-share auth — #765 (@debpalash)
  • refactor(tauri): remove dead pill-autostart code — #764 (@debpalash)
  • refactor(tauri): use tauri-plugin-positioner for the dictation pill (replac... — #770 (@debpalash)
  • chore: adopt knip + remove dead files, deps, exports, and types — #771 (@debpalash)
  • docs: add the CSS → Tailwind v4 migration plan — #772 (@debpalash)
  • chore(deps): add taze for manual dependency freshness checks — #773 (@debpalash)
  • chore(format): adopt oxfmt for JS/TS/JSX + CI format gate — #774 (@debpalash)
  • docs(contributing): switch the frontend CSS guidance to utilities-first — #775 (@debpalash)
  • fix(css): make @theme the single source for design tokens (dedup drift) + p... — #777 (@debpalash)
  • test(visual): add Playwright component visual-regression baseline for CSS m... — #776 (@debpalash)
  • CSS → Tailwind v4 + shadcn/ui migration wave — converted every component/page to utilities, backed primitives with shadcn, deleted ~40 stylesheets, single index.css foundation — #778, #779, #780, #781, #782, #784, +38 more (@debpalash)
  • test(visual): extend harness to render panels/pages with mocked store/query... — #793 (@debpalash)
  • chore(dev): bun install before dev/desktop so pulled deps are present — #800 (@debpalash)
  • feat(ui): move Settings page chrome to Tailwind, drop page-specific CSS (fa... — #820 (@debpalash)
  • docs(contributing): update CSS guidance for the shadcn/Tailwind end-state — #834 (@debpalash)
  • feat(settings): rebuild Settings as a sidebar-nav hub with full app-level IA — #835 (@debpalash)
  • docs(contributing): CSS guidance for the one-stylesheet end-state — #841 (@debpalash)
  • docs(contributing): reconcile file-size/co-location rules with the one-styl... — #842 (@debpalash)
  • feat(settings): make the Settings hub full-width — #843 (@debpalash)
  • fix(settings): sidebar items show UA button-gray in dark themes — #844 (@debpalash)
  • fix(settings): right-anchored controls fill leftward on the full-width hub — #845 (@debpalash)
  • fix(dub): show transcribing/progress view instead of idle dropzone while th... — #846 (@debpalash)
  • feat(translate): highlighted Install affordance for uninstalled engines + d... — #847 (@debpalash)
  • fix(settings): convert un-migrated panel controls to design-system primitiv... — #848 (@debpalash)
  • fix(theme): restore per-theme chrome recoloring — default :root was clobber... — #849 (@debpalash)
  • fix(tts): bound + reset the GPU pool on a hung generate so it can't brick t... — #851 (@debpalash)
  • docs(changelog): cut v0.3.8 — fold Unreleased into the 0.3.8 release sectio... — #852 (@debpalash)
  • fix(device): fall back to CPU when the GPU arch is unsupported, not 500 eve... — #757 (@debpalash)
  • feat: LLM Providers page + Autofit translation quality (fit-to-segment-time) — #854 (@debpalash)
  • feat(dub): consolidate pipeline stepper and title/meta into one header row — #855 (@debpalash)
  • fix(diagnostics): harden the bug-report scrubber (5 audited leak/correctnes... — #856 (@debpalash)

Full changelog: v0.3.7...v0.3.8

Thank you

A huge thank-you to @Deepakv2104 for their first contribution 🎉 (#704) — and to everyone who filed an issue, tested a preview build, or dropped feedback in Discord. Every report in this release traces back to someone who took the time to tell us something was broken. OmniVoice is built in the open because of you. 💜

Artifact checksums (SHA-256)

Linux x64 artifacts

7be5f1829a9b6540a06f35181d214f8b1e4eb4d6f20906ff94bff93ebbb89d84  OmniVoice Studio_0.3.8_amd64.AppImage
01f847d8be001add07c4bf83bbe4ca18f49c7a50a1f5aa7b5500abf4df1c5397  OmniVoice Studio_0.3.8_amd64.AppImage.sig

Windows x64 artifacts

a5679d964ec726f294da2393c8640b806c30363439f6af8e47c856b0712191e7 *OmniVoice Studio_0.3.8_x64_en-US.msi
cf63f4346692b9ac475d64dee75591121be2ee852a6834554f0bcdcd788b48be *OmniVoice Studio_0.3.8_x64_en-US.msi.sig

macOS Intel artifacts

977ce4813ec3f347075cccc64311fef6f08e1707dd4d73c6e7703f33a72a51de  OmniVoice Studio_0.3.8_x64.dmg
86dd4c2345938b8e2f84de05f4775eb81c833f621f9a5e182aac6cd13975c3d5  OmniVoice Studio.app.tar.gz
fc40b30bd97a20bdffce41235f9ed2313e7f28efbdabe85ee5f33c9796644b18  OmniVoice Studio.app.tar.gz.sig

Don't miss a new VoiceStudio release

NewReleases is sending notifications on new releases.