Skip to content

Releases: debpalash/VoiceStudio

v0.5.7-beta.1 — VoiceStudio

Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Oct 20:05

Highlights

  • Preview iOS and Android companion apps for your own VoiceStudio
  • Opt-in Beta update channel: get fixes early from Settings → Updates, and roll onto the next stable release automatically

Changed

  • Phone apps now use the app ID sh.voicestudio.mobile; a preview build installed before installs alongside as a new app, so pair it again and remove the old one (#3194)

Added

  • Beta update channel: choose Stable or Beta under Settings → Updates; betas are -beta.N prereleases that never reach Stable users, and Docker gets matching :beta tags (guide) (#3175)

  • Preview iOS and Android companion apps: drive your own VoiceStudio from your phone (speak, voices and cloning, dubbing, dictation) after pairing by QR code; build from source for now (guide) (#2965)

  • Smart Fit speed limits: set the fastest and slowest speed dubbing may apply to a line, from the Timing section (#3026) — thanks @MoonDragon-MD!

Fixed

  • App icon, tray icons and in-app logo no longer show a black band behind the waveform (#3221)

  • Speed/quality changes finish as soon as they are saved, even while the clone controls are still loading (#3031)

  • Android dubbing errors remain visible when worker updates arrive while their receipt is being saved (#3031)

  • Speed / quality in the sidebar is a simple slider again; models and hardware fit open in a popover on hover, click or change, so the simplest view leaves the sidebar bottom free (#3031)

  • The Latest take panel is more compact: file details, render time and Check audio share one row (#3031)

  • The sidebar's Saved voices and Recent takes buttons both keep their labels instead of collapsing the inactive one to an icon (#3031)

  • On macOS full screen the sidebar logo moves into the freed corner, the compact rail drops its traffic-light gap (#3031)

  • Bug reports no longer risk freezing the app while looking for your tools: the Node-version folder scan now runs off the main thread (#3180)

  • Bug reports no longer freeze the app when the tool search or a drive stalls, and free disk is only borrowed from a parent folder when the install folder doesn't exist yet (#3179)

  • Model licence dialog is wider and scrolls as one area with the buttons pinned, and follows macOS, Windows and Linux dialog conventions (#3160)

  • Bug reports now include your OS, memory, free disk and whether the Python runtime exists, even when the backend never started, plus flags for risky install paths such as OneDrive or non-ASCII folders (#3156)

  • Bug reports no longer hang on a stalled drive, and report free disk and the uv tool correctly on first run and in source checkouts (#3170)

  • Older synthesized takes play again with accurate play/pause controls after a newer generation (#3102)

  • Generation-complete notifications appear above the workspace instead of covering synthesis controls (#3102)

  • Generated speech no longer starts and ends with silence, and [pause] markers give exactly the pause you asked for (Raw preset and explicit durations untouched) (#3080)

  • Engine sidecars no longer load PyTorch just to answer the Test Engine ping, and a failed test logs its reason locally (#3026) — thanks @tekay-de!

Fixed

  • Windows runtime refresh no longer fails with EPERM on a locked backend folder (OneDrive, antivirus): it updates the files in place; the missing-Python-environment message now names the exact folder and tells non-checkout installs to use the installer (#3023) — thanks @afraniohugo, @javalovelinux-cmd and @eduardpp00!

Fixed

  • The install location chosen in first-run setup now also holds your data, model cache and temp files instead of quietly filling C:, and the setup screen shows each path (#2971, #3035)

  • Supertonic-3's preset voices can be picked in the voice controls and are used for generation (#2938, #3035)

  • OMNIVOICE_ENGINES_DIR moves engine venvs and the audio.cpp runtime to another drive; the default location is unchanged (#3024)

Fixed

  • The installed app now rebuilds a Python environment that antivirus or disk cleanup removed, once per launch with the usual setup progress, instead of stopping at a setup error; your voices and projects are untouched (#3032) — thanks @afraniohugo and @javalovelinux-cmd!

Changed

  • The sponsor footer is gone from the app; sponsored integrations keep a Featured badge on their card in Integrations (#3031)

Docs

  • SPONSORS.md now states what each sponsorship tier gives, when recognition starts, and what sponsorship does not buy, and the README and inquiry form point to it (#3172)
  • OmniVoice GGUF docs state that the installers do not ship its native binary yet (#3026) — thanks @DestinyQJY!
  • Contributor guides and the pull request template explain how to sign the CLA before opening a first pull request (#2676)

Fixed

  • macOS builds without a Developer ID are now signed ad hoc so the bundle signature is valid, and the shell installer clears quarantine, repairs an invalid signature of older releases, names an unreadable disk image, and tells Intel Mac users the backend needs Apple Silicon (#3033, #2763, #2829, #2681)
  • A "Generation failed" log line now says where it was raised and which error caused it, and the out-of-memory advice mentions picking another GPU, so these reports can be told apart (#2895, #2684, #2666, #2626, #2622, #2580, #3034)

CI

  • The main test step runs in parallel with pytest-xdist, about 3 minutes faster per CI run (#3223)

  • Interactive release helper: pick stable or beta, draft or publish, and confirm by typing the tag (scripts/release.py) (#3187)

  • Release helper choices are arrow-key menus (#3190)

  • Desktop request-guard self-tests stay deterministic when app requests arrive during cleanup (#2676)

  • New mobile workflow builds and tests both phone apps; a contract test fails when their theme or API description drifts from the desktop app (#2965)

  • iOS TestFlight workflow: maintainers can upload a signed iPhone build for internal testers from main (guide) (#3188)

  • Android Play internal testing workflow: the matching signed Android upload from main, and beta versions no longer break the Android build (guide) (#3189)

  • Gallery preview fallback smoke no longer flakes when a slower runner reads the playing clip in several byte ranges (#3018)

Electron installer trust

These Electron installers are unsigned or ad-hoc signed and are not Apple-notarized.
Windows/macOS may show trust warnings. macOS automatic updates are unverified;
use manual installer updates. Tauri updater signatures remain independently verified.

v0.5.6 — VoiceStudio

Choose a tag to compare

@github-actions github-actions released this 23 Sep 08:53
3915a62

VoiceStudio now talks to your other tools. Answer Twilio phone calls in a saved voice, and connect Claude Code, Cursor, Codex CLI and the OpenAI Agents SDK to VoiceStudio with copyable setup that works, including in Docker, where MCP previously returned HTTP 405. Integration cards now say plainly which ones work with VoiceStudio and which are external links.

This release also lets you replace a saved clone's reference sample, clones long reference clips on OmniVoice, finishes long audiobook chapters on 8 GB GPUs, and keeps rendered chapters through a power-off or data-folder move.

Download

Platform Installer
Windows x64 Installer
macOS Apple Silicon DMG
macOS Intel DMG
Linux x64 AppImage · deb

Upgrading: Install over your existing Electron app; voices, projects and settings are kept. If setup asks, choose Install local runtime to refresh its dependencies. MCP clients configured with /mcp keep working; new exports use /mcp/. OpenAI-compatible /v1 clients now get OpenAI-format errors with HTTP 400 instead of 422, and response_format="mp3" returns real MP3.

Moving from Tauri: Close the app, back up its data directory, install Electron, and verify your voices and projects before removing Tauri. Follow the migration guide. Tauri v0.5.3 remains the final Tauri release; its updater cannot install Electron.

Installer trust: Electron installers are unsigned or ad-hoc signed and are not Apple-notarized. Windows/macOS may show trust warnings. macOS automatic updates are unverified; use manual installer updates. See the installation guide.

Highlights

  • Answer Twilio phone calls with a greeting in a saved voice; off by default, with a local phone-quality test (#2291)
  • Claude Code, Cursor, Codex CLI and the OpenAI Agents SDK connect to VoiceStudio with working setup (#2289, #2290)
  • Replace a saved clone's reference sample, and clone from references longer than 20 s on OmniVoice (#2282, #2281) — thanks @Cengokill!
  • Long audiobook chapters finish on 8 GB GPUs and survive a power-off or data-folder move (#2287, #2279) — thanks @Tran-Van-Hieu and @castlecreati!
  • Malayalam numbers, chapter cue sheets, and captions without spoken markup tags (#2280, #2278, #2295) — thanks @nikhilkilivayil, @shivsin25 and @kevin9327!

Changed

  • Voice Clone says how much of a long reference the active engine uses instead of asking you to trim to 15 s (#2281) — thanks @Cengokill!

Added

  • Edit a saved voice clone's reference sample: play it, replace it by upload or recording, and save back to the same voice (#2282) — thanks @Cengokill!
  • Answer Twilio phone calls in a saved voice: off by default, signed webhooks and single-use stream tokens, with a local phone-quality test (#2291)
  • Malayalam dubs and audiobooks speak numbers, percentages, and decimals in Malayalam instead of reading raw digits (#2280) — thanks @nikhilkilivayil!
  • Download a chapter cue sheet (HH:MM:SS<TAB>Title) after a Stories or Audiobook render; timestamps match the M4B's embedded chapters and give MP3 portable chapters (#2278) — thanks @shivsin25!
  • The OpenAI Agents integration page gives a copyable snippet that runs the Agents SDK voice pipeline on VoiceStudio (#2290)
  • The OpenAI-compatible API adds GET /v1/models and POST /v1/audio/translations (multilingual Whisper models; turbo models are refused) (#2290)
  • Speech requests accept stream_format (audio or sse) and OpenAI's {"id": ...} voice object (#2290)
  • Transcriptions pass language, prompt and temperature to Whisper engines and return words with timestamp_granularities[]=word (#2290)
  • Integrations: copyable setup for Codex CLI (config.toml), any MCP client (HTTP or stdio), the VoiceStudio API (curl and OpenAI SDK), and Docker/GHCR (#2289)

Fixed

  • Pasted and imported captions no longer speak karaoke tags, <i>/<font> tags or {\an8} alignment prefixes, while SubRip dialogue such as 2 < 3 is kept; unchanged WebVTT and SubRip exports keep the original cue markup (#2295) — thanks @kevin9327!
  • Saved voices and uploads longer than 20 s clone on OmniVoice again; the best passage is picked automatically (#2281) — thanks @Cengokill!
  • VoxCPM2 no longer pairs a capped reference with a transcript of the whole clip (#2281)
  • Speaker diarisation uses Lightning 2.6.6, which blocks code execution from a crafted checkpoint (#2296)
  • Long audiobook chapters on 8 GB GPUs no longer time out while still rendering, and a timed-out chapter stops using the GPU after its current chunk (#2287) — thanks @Tran-Van-Hieu!
  • On Windows, one reset connection no longer leaves the backend running but unreachable (#2276) — thanks @ialexbond!
  • The official openai SDK and OpenAI Agents SDK work unchanged: gpt-4o-mini-tts and current OpenAI voice names no longer fail with "Unknown model" (#2290)
  • OpenAI instructions now reaches the voice engine instead of being ignored; OmniVoice uses the voice-design tags in it (#2290)
  • Speech pcm is 24 kHz as OpenAI specifies; aac and opus return real AAC and Opus, and a missing encoder is a clear error instead of a mislabelled WAV (#2290)
  • Transcriptions report the detected language instead of always saying English, and verbose_json segments follow OpenAI's schema (#2290)
  • OpenAI-compatible routes return errors in OpenAI's format, with 400 for invalid requests (#2290)
  • Rendered audiobook chapters stay reusable after the data folder moves, and a power-off no longer empties the resume point or tears chapter audio (#2279) — thanks @castlecreati!
  • An audiobook chapter-cache miss now logs which input changed since the cached render (#2279)
  • MCP clients pointed at /mcp connect on Docker and source builds instead of getting HTTP 405 (#2289)
  • MCP tools and backend.speech_client follow a backend moved with OMNIVOICE_PORT instead of assuming port 3900 (#2289)
  • Integration cards show real capabilities: "Works with VoiceStudio" only where a setup exists, "External link" everywhere else (#2289)

Docs

  • Per-engine reference clip limits in the engine guide (#2281)
  • Install with prompt is now a two-line prompt; the full agent steps live in docs/install/agent.md (#2288)

Contributors

Bug reporters

v0.5.5 — Cross-language cloning, smoother setup

Choose a tag to compare

@debpalash debpalash released this 22 Sep 00:42
8d40426

Your voice, another language. The Clone workspace now keeps your chosen output language when changing voice samples. For example, an English reference can read a French script with a multilingual engine; Auto in Clone follows the script instead of inheriting the reference profile's language.

This release also makes Electron installation easier to recover, fixes script-editor and integration-catalog glitches, and makes failure reports more useful.

Download

Platform Installer
Windows x64 Installer
macOS Apple Silicon DMG
macOS Intel DMG
Linux x64 AppImage · deb

Upgrading: Install over your existing Electron app. If setup asks, choose Install local runtime to refresh its dependencies. The 0.5.4 → 0.5.5 upgrade was tested with a saved voice and settings.

Moving from Tauri: Close the app, back up its data directory, install Electron, and verify your voices and projects before removing Tauri. Follow the migration guide. Tauri v0.5.3 remains the final Tauri release; its updater cannot install Electron. Intel Macs support the UI with a remote backend.

Installer trust: Electron installers are unsigned or ad-hoc signed and are not Apple-notarized. Windows/macOS may show trust warnings. macOS automatic updates are unverified; use manual installer updates. See the installation guide. Archived Tauri updater signatures are unchanged.

Highlights

  • Clone keeps the target language when choosing, uploading, or saving a reference voice (#2272)
  • Install an Electron release or build main with one command; uninstall without losing data (#2269)
  • Get clearer crash reports and local render diagnostics when something goes wrong (#2267, #2266) — thanks @shivsin25!
  • Place the script cursor without reopening the expression menu (#2268) — thanks @bipul0525!

Added

  • Diagnostic bundles include local render-stage timings and operation counts without recording script text or audio (#2266) — thanks @shivsin25!

Fixed

  • In Clone, explicit Auto follows the target script; changing reference voices no longer resets the output language (#2272)
  • Fresh runtime setup uses managed Python and verifies SentencePiece before reporting success (#2270) — thanks @mamislimen!
  • Speech-recognition startup errors retain their actual cause and avoid unrelated reinstall advice (#2128) — thanks @Sip19!
  • Integration cards stay distinct when vendors share a URL, including after searching and filtering (#2273)
  • macOS shell installs refresh app registration, prevent replacement while running, and move removed apps to Trash (#2269)
  • Upgrades retain custom and portable storage paths recorded by archived setup (#2269)
  • Crash reports distinguish native faults, Python errors, and termination signals (#2267) — thanks @shivsin25!

Contributors

Bug reporters

v0.5.4 — Working engines, smoother long-form audio

Choose a tag to compare

@github-actions github-actions released this 21 Sep 04:14
86b1b1d

Working engines, smoother long-form audio, and useful local integrations. CosyVoice repairs its runtime and preserves speech context with newer Transformers. Stories and audiobooks gain cleaner audio joins, better script controls, and more reliable EPUB imports. Electron setup and diagnostics make failures easier to recover from without discarding downloaded models or existing projects.

Download

Platform Installer
Windows x64 Installer
macOS Apple Silicon DMG
macOS Intel DMG
Linux x64 AppImage · deb

Already using Electron? Install over your existing app and keep your data. If prompted, choose Install local runtime to refresh its dependencies. Moving from Tauri? Back up your data directory with the app closed, install Electron, then verify your voices and projects before removing Tauri. Follow the migration guide. Tauri v0.5.3 remains the final Tauri release; its updater cannot install Electron.

Highlights

  • Repair CosyVoice generation and several engine installation paths without deleting downloaded models (#2258, #2240, #2243)
  • Cleaner story and audiobook joins, script controls, and EPUB imports (#2259, #2216, #2203, #2228)
  • Export local n8n speech workflows and configure Claude Code or Cursor through MCP (#2261, #2257)
  • More reliable Electron setup, dictation, and actionable crash reports (#2221, #2245, #2123, #2262)
  • Preserve dialogue, timing, and background audio through dubbing and subtitle imports (#2222, #2224, #2242)

Changed

  • The main sidebar (navigation, voice library, status) stays in place on Settings instead of being swapped for a separate panel; the Settings sections now sit in a column beside it (#2209) — thanks @jaketame!
  • The main navigation sits directly under the sidebar header, above the voice library, so it no longer moves with the library's height (#2210) — thanks @jaketame!

Added

  • Claude Code and Cursor integration pages offer MCP setup for the current backend, and duplicate catalog routes are consolidated (#2257)

  • Settings → Appearance → Keep sidebar expanded: stops the sidebar shrinking to a rail when Projects, Transcribe, Tools or another workspace opens its own panel on a narrower window (#2211) — thanks @jaketame!

  • Stories and Audiobook: a Clear script button empties the whole script — every line and chapter, imported or typed — in one confirmed step instead of one trash icon at a time; the cast is kept (#2203) — thanks @jaketame!

  • Stories' Paste & Split can now split by Sentences, Paragraphs (the new default) or whole Chapters, so a single narrator is no longer chopped into one take per sentence (#2217) — thanks @jaketame!

Fixed

  • Preserve completed generation results when worker completion races with the timeout check (#2264)

  • CosyVoice repairs missing runtime dependencies and preserves speech context with newer Transformers (#2096) — thanks @martinezpl!

  • Electron native-crash reports retain the faulting thread instead of losing it behind long stacks and extension lists (#2262)

  • Electron setup normalizes Windows proxy addresses while preserving explicit overrides and localhost exclusions (#2114)

  • Web API-reference recovery keeps the selected backend and credentials; AudioSeal embedding and detection normalize model sample rates without changing exported audio dimensions (#2252) — thanks @joseedson18jc!

  • LM Studio discovery respects the selected model and dictation refinement preserves literal text while handling unsupported reasoning options (#2252) — thanks @joseedson18jc!

  • CosyVoice uses matching float32 weights and inputs without CUDA, preventing a worker-thread dtype failure while preserving CUDA precision (#2096)

  • Source Electron launches reuse the prepared Python runtime instead of downloading dependencies inside the startup timeout (#2184)

  • Clone, Stories and Audiobook disable unsupported output-language choices for engines with a declared language list (#2104)

  • Stories and Audiobook: Generate, the chapter tracker and the render status are pinned in the setup pane instead of sitting below the last line of the script, and a disabled Generate now says why (#2229) — thanks @jaketame!

  • EPUB import no longer turns an unmarked teaser page, a "Works by" list, a publisher's address page or a stray footnotes page into chapters — the book's declared start and its contents decide what is front and back matter (#2228) — thanks @jaketame!

  • Retry temporary media-tool installation locks and report failed cleanup instead of hiding it (#2214) — thanks @baoyu0!

  • The desktop app points the backend at the uv it already ships, so one-click engine installs stop failing preflight with "uv was not found" on a clean install — the packaged binary sits in the app's own resources directory, which is on no PATH, and a GUI launch inherits none of the shell's PATH additions either (#2221, #2215) — thanks @shivsin25 for the fix and @baoyu0 for the diagnosis!

  • IndexTTS installs with Python 3.11 and repairs incompatible environments on retry without removing downloaded weights (#2098) — thanks @martinezpl!

  • VoxCPM2 voice design uses its native control format, and style requests no longer inherit the reference transcript’s delivery (#2093) — thanks @nevilbutani and @martinezpl!

  • Dubbing background preservation and long exports work with newer FFmpeg builds that removed the legacy filter-file option (#2236) — thanks @quan0pek!

  • Stories: the book-wide reading speed moved from the bottom of the collapsed Cast card to the setup card beside voice and language, shows how many lines override it, and resets them in one click (#2230) — thanks @jaketame!

  • Projects: a finished Story or Audiobook shows its title and how it was made (voice, speed, engine, length, settings) instead of a bare filename (#2233) — thanks @jaketame!

  • Audiobook and Stories renders no longer sound broken between lines: each line's engine padding is trimmed and a deliberate, adjustable gap goes between lines and paragraphs instead (#2216) — thanks @jaketame!

  • Repair dots.tts dependency pins and paths containing spaces, with OpenFst build guidance for source installs (#2101) — thanks @martinezpl!

  • Reject unsupported synthesis languages before model loading, including named picker choices and per-item batch languages (#2219) — thanks @rollroyces!

  • EPUB import narrates the book, not its print furniture: page numbers no longer glue onto words or appear as lone lines, cover/title/dedication/copyright/contents pages are skipped, and chapters are titled from the book's table of contents (#2208) — thanks @jaketame!

  • Stories: a long script no longer paints over the generation progress panel and the Generate/Stop footer while an audiobook renders (#2213) — thanks @jaketame!

  • Keep macOS dictation keyboard operations on the main thread to prevent paste-delivery crashes (#2123)

  • Prevent reference voice cloning from silently downloading a second speech recognizer (#2116)

  • Dubbing from a video's downloaded rolling captions speaks each line once while preserving intentional repeated dialogue (#2222) — thanks @kevin9327!

  • Bundle Linux native helper libraries so dictation and clipboard support start without distribution-specific libxdo packages (#2196)

  • Forward saved Hugging Face tokens when downloading gated model weights and dependencies (#2173) — thanks @shivsin25!

  • Explain unsupported saved-profile languages consistently in Electron, web, and streaming generation (#2175) — thanks @shivsin25!

  • List every installed Kokoro language and accept its displayed name, including British English (#2174) — thanks @drakeo338!

  • Validate Python dependencies before reusing a desktop runtime and offer setup for incomplete environments (#2176)

  • Check active model cloning support before starting voice conversion (#2147)

  • Accept both valid SIGKILL diagnostics in the desktop lifecycle regression check (#2170)

  • Repair CTranslate2 loading safely across ASR and translation, and retain the loaded Whisper model during CPU fallback (#2165) — thanks @guruthechosen!

  • Avoid pedalboard wheels that crash on unsupported CPU instructions (#2080) — thanks @D3nii!

  • Include cuDNN 8 compatibility libraries for CTranslate2 in CUDA containers (#2072) — thanks @basil-k-aji-dev!

  • Preserve audio reads, writes, and reference amplitude without TorchCodec (#2083) — thanks @Moep90!

  • Give isolated engines request-sized deadlines, validate timeout overrides, and distinguish hangs from crashes (#2109) (#2111) — thanks @SurefireStudios and @LMGXENON!

  • Keep dubbing streams alive during quiet steps and delay model cleanup until native refinement ends (#2138) — thanks @denemon!

  • Locate ffprobe beside ffmpeg without changing parent directory names (#2107) — thanks @kapelame!

  • Resample MLX output chunks to the declared rate before joining them (#2106) — thanks @kapelame!

  • Read database migration configuration on Chinese, Japanese, and Korean Windows (#2075) — thanks @kevin9327!

  • Preserve milliseconds and carry rounded subtitle timestamps across second boundaries (#2074) — thanks @kevin9327!

  • Decode UTF-16 and Windows-1252 subtitle and manuscript imports in Electron, web, and backend routes (#2073) — thanks @kevin9327!

  • Preserve numeric subtitle dialog...

Read more

v0.5.3 — A new look. Now on Electron.

Choose a tag to compare

@github-actions github-actions released this 17 Sep 06:17
135ccd0

A new look. A new desktop app. Still your voices, on your machine.

VoiceStudio moves to Electron with v0.5.3: a redesigned workspace for voice cloning, voice design, stories, dubbing, and transcription. Electron is now the primary desktop app on Windows, macOS, and Linux. Local voice creation still runs on your own hardware, without a required account or API key.

VoiceStudio's new Electron interface: voice cloning, saved voices, workspace navigation, and synthesis controls

Highlights

  • A redesigned desktop with dedicated workspaces, collapsible navigation, and resizable sidebars (#1823, #2129)
  • Four-step setup with model packs and optional dictation configuration (#2129)
  • Better dubbing: zoomable timelines, saved translation direction, and background sound preserved around dialogue (#2129)
  • A simpler Model Catalogue and one-click installs for VoxCPM2, MOSS-TTS-Nano, and CosyVoice 3 (#2013, #2021, #2022, #2025)
  • More reliable generation on older NVIDIA GPUs and live remote-worker CPU, GPU, and memory readings (#2135, #2155)

The Electron dubbing workspace with source and translated demos, language controls, and synchronized playback

Get the new desktop app

Platform Electron installer
Windows x64 Download EXE
macOS Apple Silicon Download DMG
macOS Intel Download DMG
Linux x64 AppImage · DEB

Moving from Tauri? Install Electron separately.

v0.5.3 is also the final Tauri update. The Tauri updater will not switch you to Electron; choose a VoiceStudio-Electron installer above. Legacy Tauri assets remain available for existing installations.

  1. Close Tauri and back up its entire data directory, plus any reference audio stored elsewhere.
  2. Install Electron and check its storage/backend configuration points to your existing data before generating. Never run both apps against that directory at once.
  3. Verify your voices, projects, history, and model locations; generate a short clip before removing Tauri.
  4. Recheck devices, shortcuts, theme, backend address, permissions, and credentials. Desktop preferences and credentials are not guaranteed to transfer.

Read the migration guide · Compare all changes since v0.5.2

Changed

  • Electron becomes the primary desktop app; Tauri retains a separate final update path (#2157)
  • Workspace sidebars resize and remember their width; video previews show thumbnails and keep playback controls in view (#2129)
  • Model Catalogue groups speech, transcription, and language models with engine details and downloadable weights together (#2013, #2020)
  • Models and voice previews move to Settings → Storage; the Hugging Face mirror moves to Network (#2013)
  • Integrations gets a searchable workspace covering 100+ tools, with provider details and configuration guidance (#2129)
  • Support pages gain donation cards, a workspace shortcut, and sponsor contact details (#2129)
  • README adds an Electron UI tour and refreshed screenshots; installable agent skills follow the new desktop workflow (#2129, #2157)
  • README explains the desktop transition and keeps contributions welcome (#2153) — thanks @cyberspace-cs!

Added

  • VoxCPM2, MOSS-TTS-Nano, and CosyVoice 3 install in isolated environments without disrupting other engines (#2021, #2022, #2025)
  • Remote workers report CPU, GPU, and memory usage; unavailable readings stay distinct from zero (#2155) — thanks @velixio!
  • Dubbing translation shows live logs, supports cancellation and retries, and remembers custom tone instructions (#2129)

Fixed

  • Older NVIDIA GPUs, including Tesla T4, no longer kill the backend on first generation (#2135) — thanks @Shivendra-Coherent!
  • Disabling torch.compile works across desktop platforms and through the environment override; native crashes leave diagnostic stacks (#2135) — thanks @Shivendra-Coherent!
  • Dubbing keeps short segments proportional, supports timeline zoom, and removes duplicate transcription context (#2129)
  • Dubs preserve original sound outside dialogue, keep replacement speech complete, repair missing speech caches, and reject incomplete output (#2129)
  • Dubbing demos keep playback aligned across languages and can open a sample in the editor (#2131, #2157)
  • Pressing Play before a video finishes loading now starts it when ready (#2129)
  • Native dictation, watch folders, and Wayland shortcuts share desktop contracts; focused paste stays ordered (#2122)
  • macOS sidebar controls clear the window buttons; Linux and Windows sidebar headers expand and collapse consistently (#2126, #2129)
  • Stopping an already-exiting process on macOS no longer reports a permissions failure (#2032)
  • YouTube bot-check errors explain how to supply signed-in cookies in Dub (#2036, #2034) — thanks @celvintr!
  • Engine startup failures distinguish timeouts, crashes, and invalid responses (#2037, #2026) — thanks @dajiaohuang!
  • PyTorch Whisper transcribes M4A files and uses a model-appropriate VRAM budget on 6 GB NVIDIA cards (#2042, #2039, #2044, #2041) — thanks @xabiherdz-svg!
  • MCP transcription waits follow the backend timeout instead of failing after 120 seconds (#2043, #2040) — thanks @xabiherdz-svg!
  • CosyVoice 3 dependency updates address five security advisories (#2030, #2031)

CI

  • Release publication waits for platform artifacts and checksums; unsigned Electron builds require an explicit owner dispatch (#2029, #2157)
  • Desktop integration checks cover current dubbing, navigation, and model workflows; worker teardown tests tolerate slower Windows runners (#2157, #2038)

Contributors

Electron installer trust

These Electron installers are unsigned or ad-hoc signed and are not Apple-notarized.
Windows/macOS may show trust warnings. macOS automatic updates are unverified;
use manual installer updates. Tauri updater signatures remain independently verified.

v0.5.2 — VoiceStudio

Choose a tag to compare

@github-actions github-actions released this 10 Sep 17:27
38c2405

Highlights

  • Supertonic-3 and PocketTTS show their license Accept button again, so they can be enabled (#2017)
  • An engine that can't run on your platform says so, instead of telling you to install it (#2018)
  • MOSS-TTS-v1.5, Confucius4-TTS, dots.tts, Supertonic-3 and PocketTTS install in one click, each in its own environment, so switching engines and back never breaks a working one (#2015, #2016)
  • A pronunciation entry that is stored but not applied yet says so, instead of looking like it did not match (#1949)
  • A bare 500 report now names the backend error class, so two unrelated faults stop filing the same issue (#1773)
  • A rejected dubbing source language now names the code it rejected (#1960)
  • The first-run install log is kept on disk instead of vanishing with the setup screen (#1847)
  • bun run desktop reclaims port 3900 from a backend the app itself left running, instead of refusing to start (#1974)
  • A dictation shortcut another app already owns now says so, instead of silently doing nothing (#1858)
  • Quitting on Windows is no longer reported as a crash on the next launch (#1898)
  • A Reduce motion switch in Settings, for calm without changing your whole system (#1857)
  • A light theme, and System Auto now follows a light-mode OS instead of staying dark (#1973) — thanks CoDe-ReDz!
  • Generating from a one-character input now says the input was too short, instead of quoting a convolution error (#1826)
  • First run asks about text size before the install, not after it (#1849)
  • Cloning without a reference clip now says so, instead of naming library parameters you cannot set (#1879)
  • Upgrading torch for an RTX 50-series card no longer trades one startup crash for another, and the upgrade is documented (#1931)
  • A generation timeout now points at the compute-time budget in Settings rather than an environment variable (#1808)
  • An engine you have not installed now says so, instead of reporting a failed check (#1866)
  • The Accessibility prompt no longer floats over first-run setup and every other app until you grant it (#1845, #1886)
  • The last onboarding step offers to install a speech-to-text model instead of failing three times when none is installed (#1856)
  • A download that fails because the folder sits behind a mount point Windows will not cross now says so, and where to move it (#1957)
  • A GPU that is merely short on free memory is no longer told to reinstall its drivers (#1812) — thanks michaelhuamanflores!
  • An error thrown by a browser extension is filtered on Safari and the macOS app too, not only on Chromium (#1901) — thanks Chang-Jin-Lee!
  • Choosing the China mirror no longer re-races the network on every dependency step, which cost seconds per step on blocked connections (#1892) — thanks yuezheng2006!
  • The backend log panel reports a log it cannot read instead of quietly showing less (#1847) — thanks Chang-Jin-Lee!
  • The floating dictation bubble adds pause, resume, stop, close, and a multiline preview (#1952)
  • Transcriptions checks model readiness and offers an inline download and shortcut hints (#1952)
  • Transcriptions' missing-model prompt lists every dictation model by accuracy vs latency, languages and size, so you install the one that fits — or switch to one already on disk (#1952)
  • The Engines menu's Transcription tab picks the dictation model under Sherpa-ONNX, and that choice now also drives Sherpa transcription (#1952)
  • A failure with no stage attached no longer borrows another stage's advice, so a text-to-speech error stops telling you the video server dropped the download (#1943)
  • A generation failure that the app cannot classify now names the backend error class, so two unrelated faults stop arriving as the same untriageable report (#1800)
  • Transcriptions dictation wakes the desktop recorder, presents one contextual start action, and centers its microphone icon with the label (#1902)
  • Colab transcription and dubbing now include an explicit ASR model setup step (#1922) — thanks nidhi-singh02!
  • Apple Silicon now shows one canonical OmniVoice choice in the engine picker while retaining its automatic crash-isolated sidecar runtime (#1913)
  • Validate current-user Windows installers under a standard account on hosted runners (#1883)
  • Model downloads survive a flaky connection instead of restarting from zero (#1940)
  • bun run dev recovers on Windows instead of demanding Task Manager (#1941)
  • The desktop app builds and opens from a fresh clone again (#1818) — thanks flutterkage2k!
  • GPUs with less VRAM than the engine needs no longer get half the compute-time budget a CPU gets (#1806) — thanks VishvakR!
  • Gallery voice previews play again — the quality guard was rejecting good renders as silent (#1819) — thanks flutterkage2k!
  • Tilde-separated number ranges are spoken clearly without running their endpoints together (#1821) — thanks flutterkage2k!
  • Voice modes use themed tabs, with Synthesize and Convert pinned below their scrolling forms (#1823)
  • Fix current-user Windows installer validation and nested resource cleanup (#1873)
  • Keep generated frontend assets available while building the current-user Windows installer (#1881)
  • Voice cloning now starts with a clear upload-or-record choice, reveals recording and reference details only when needed, and keeps sampling controls under Production Overrides (#1817)
  • The first-run welcome line uses an instruction accepted by OmniVoice and VoiceDesign engines (#1861) — thanks psiberfunk!
  • audio.cpp joins the engine lineup as an opt-in CPU backend for Breeze-TTS-2 (English + Chinese, clone + voice design, explicit Model Catalogue install, no Python venv) (#1891)
  • audio.cpp uses installed native CUDA, HIP, Metal, and Vulkan providers and preserves device routing across remote workers (#1926)
  • Show estimated and measured model, dependency, cache, and temporary disk costs in the engine catalogue (#1718)
  • Preview builds now stay newer than Stable even when automatic post-release version bumps are disabled (#1762)
  • CosyVoice setup guidance now separates downloaded model files from the runtime that makes the engine available (#1761)
  • MCP tools can now keep audio out of agent context by returning files and accepting base-path-confined file inputs (#1760) — thanks agudmund!
  • Hear a dub line as you type it — an opt-in live preview streams TTS for the edited segment (#1769) — thanks mvanhorn!
  • Studio gains a Convert method: re-say any clip in one of your saved voices, speech to speech, fully local (#1765) — thanks mvanhorn!
  • Hardsub video export gains an opt-in karaoke word-highlight caption style (#1764) — thanks mvanhorn!
  • The batch queue can now watch a folder: new videos dropped into it are dubbed automatically (#1768) — thanks mvanhorn!
  • The audiobook player now shows the chapter text and highlights the word being narrated (#1766) — thanks mvanhorn!
  • The dub editor gains a casting board: drag voice chips onto speakers, dropdowns stay in sync (#1767) — thanks mvanhorn!

Changed

  • Tauri 2.11.5 with refreshed plugins (dialog, updater, log, opener, positioner, single-instance), React 19.3, TanStack Query 5.102, lucide 1.43, posthog-js 1.428, and the rest of the npm workspace on current minors; jsdom 30, jest-dom 7, concurrently 10, taze 21 (#1952)
  • eslint ignores src-tauri/, so a local Tauri build no longer floods lint:hooks with parse errors from generated assets (#1952)
  • Casting uses responsive SVG voice cards and searchable speaker menus that stay above surrounding panels (#1823)
  • Dubbing aligns output settings, brings review status forward, and simplifies transcript and glossary editing; Launchpad files and voices reflow into responsive grids (#1823)
  • Transcript segments use three readable rows for text, timing/status and voice controls, with heights that adapt to wrapping (#1823)
  • Dragging the waveform pans horizontally while a click still seeks, keeping the timed transcript aligned (#1823)
  • Bulk segment editing uses searchable voice and language menus, readable language names and a responsive selection toolbar (#1823)
  • Dubbing overlays playback controls on video, combines waveform and transcript in a compact timeline, and removes header/action background fills (#1823)
  • Dubbing uses compact casting, translation and output controls with responsive rows to leave more room for editing (#1823)
  • Export uses grouped format settings, themed track menus and switches, with a pinned filename summary and download action (#1823)
  • Dubbing output settings use icon-labelled switches, themed track and speaker menus, and clearer timing/transcript controls (#1823)
  • Casting voice menus use searchable themed options with SVG preset icons instead of native dropdowns (#1823)
  • Dubbing groups casting and translation controls with readable labels, SVG icons, searchable menus, and compact timeline spacing (#1823)
  • Production Overrides use readable icon-labelled controls and accessible Denoise/Postprocess switches (#1823)
  • Expanded navigation uses a theme-accent tint with subtle static wave gradients (#1823)
  • Convert groups source audio, target voice, and timing options into clearer controls; design choices include theme-matched SVG icons (#1823)
  • The expandable sidebar reveals workspace labels with restrained active states; language menus adapt to multiple columns on wider screens (#1823)
  • Voice design and recording use themed, keyboard-accessible selectors with clearer spacing and labels (#1823)
  • Voice tabs and upload/record controls have subtle SVG motion; Text adds clipboard paste and the upload area fills available height (#1823)
  • The title-bar label cycles through active speech, transcription, and LLM engines; bundled model labels correctly say OmniVoice (#1823)
  • The top-bar Engines panel groups Speech, Transcription, and LLM choices into tabs, with compact memory controls and no duplicate pickers (#1823)
  • Voice Design simplified: the 12-row fine-grained block collapses to one summary line with a five-field...
Read more

v0.5.1 — VoiceStudio

Choose a tag to compare

@github-actions github-actions released this 28 Aug 15:24
d6a2277

Highlights

  • OmniVoice generation on Apple Silicon now runs in a crash-isolated child, so fatal MPS memory exits no longer take down the local backend (#1697, #1698) — thanks ndntran14!
  • Model-load GPU exhaustion now returns a sanitized, actionable dubbing error, and readiness correctly attributes the shared model status to TTS (#1695)
  • Source-mode development now restarts an isolated backend crash without tearing down the UI, while repeated crash loops still stop loudly with diagnostics (#1690)
  • Dubbing playback now keeps an audible companion source when a WebView can render the preview picture but cannot decode its audio (#1692)
  • Model Catalogue engine rows now use the available desktop width and keep identity, runtime state, and actions from crowding one another (#1689)
  • VoiceStudio now acts as a local speech platform: other apps can trigger its native dictation or connect through versioned HTTP, WebSocket, JSON-RPC, CLI, and MCP transports (#1646)
  • A timed-out in-process dub transcription no longer starts a second WhisperX/CTranslate2 call over the abandoned native worker, preventing the overlapping access that preceded Windows 0xC0000005 exits (#1669)
  • Windows debugger termination code 0x40010004 is no longer misreported as a backend crash or charged against automatic restart recovery (#1663)
  • Studio now keeps one generation reservation across page changes, preventing a remount from stacking native jobs until the backend reports capacity busy or is killed under memory pressure (#1670)
  • Uploaded dubbing videos are normalized to browser-safe H.264/AAC before preview, preventing valid VP9, AV1, or Opus media from failing with “no supported sources” (#1644)
  • Dubbing now separates spoken and target languages, preserves translations through segment cleanup, and lets failed translations be retried or skipped without restarting the batch (#1654) — thanks Number16BusShelter!
  • Importing replacement SRT subtitles now keeps each cue bound to the best-overlapping source speaker and clone instead of resetting every line to a random default voice (#1660) — thanks invio-a11y!
  • Uploading a Dub preview no longer blocks every backend request while ffmpeg extracts its audio (#1667) — thanks tfreyd!
  • Docker quick starts now require the administrator key needed through container NAT instead of starting a UI whose protected actions return 403 (#1651) — thanks wd357dui!
  • WSL2 AMD containers now use the /dev/dxg ROCDXG bridge with actionable GPU diagnostics instead of silently falling back to CPU (#1655) — thanks wd357dui!
  • Ad-hoc voice-clone references now stay alive until cancelled or timed-out GPU work actually stops reading them, so prompt caching can finish instead of failing on a deleted temp file (#1668) — thanks tfreyd!
  • Dictation now stays bound to the app where it started and recovers locally from silent recognizer output (#1175)
  • The backend now answers within a second of launch and narrates its startup step by step (#1550)
  • Reporting a bug from an outdated build now offers the latest release first (#1547)
  • The backend is only announced ready once it can actually serve, and crash-loop restarts now pace themselves (#1548)
  • Invisible watermarking no longer stalls — or silently skips — the first take of a session (#1615)
  • Dub subtitles can be retimed, inserted, and merged in either direction from the segment table (#1612) — thanks invio-a11y!

Changed

  • Model Catalogue now uses one breathable workspace canvas with simpler pane and engine-family navigation instead of nested cards and scroll regions (#1685)
  • Linux source launchers now catch missing libxdo and GStreamer audio plugins before they can cause a linker error or an aborted, blank WebKit renderer (#1680, #1682)
  • Dictation now carries one native output session from shortcut-down through final delivery, restores text, HTML, image, or file-list clipboards only when untouched, keeps Wayland copy-safe unless current-focus insertion is explicitly enabled, and retries silent Sherpa speech only through an already-installed local ASR model (#1175)
  • The backend binds its port immediately and reports startup progress live — /health answers 503-with-step and a new /startup/progress endpoint lists every step while PyTorch, API routes, and database migrations load in the background, so "starting at step X" is never mistakable for "dead"; the desktop splash narrates each step (#1550)

Added

  • A bundled Rust loopback sidecar exposes dictation start/stop/toggle, focused-output sessions, discovery, and JSON-RPC; the backend adds versioned streaming events and a dependency-free CLI bridge for Herdr, coding agents, editors, desktop apps, and TUIs (#1646)
  • Headless NVIDIA and ROCm machines can now join as worker-only Docker Compose services with no published UI and durable protocol-v2 enrollment; update both machines together before reconnecting (#1638) — thanks jkrogers9862!
  • Linux ARM64 (Asahi Apple Silicon) support for the OmniVoice GGUF engine — a linux-aarch64 binary built with GGML Vulkan where the toolchain allows it, so Apple GPUs accelerate generation through the open-source Honeykrisp driver instead of falling back to CPU-only (#1641)
  • One-command install on every desktop OS: curl -fsSL https://voicestudio.sh/install | sh (macOS/Linux/WSL) or irm https://voicestudio.sh/install | iex (Windows) — the URL serves the right script per platform, and Windows gains a source installer (scripts/install.ps1) with a 3-OS CI smoke (#1626)
  • Per-line subtitle management in the dub table: a line's end time is editable alongside its start (typing a time and dragging its timeline edge now take the same path), lines merge with the previous row as well as the next (Ctrl/Cmd+Shift+M), and a new line can be inserted into the gap after any row (#1612) — thanks invio-a11y!
  • CI now enforces performance regression budgets on the hot paths — operation-count tests pin streaming TTS to one synthesis per sentence and cached dub re-mixes to zero re-synthesis; fast-path guards cover zero re-decoding and ⌈N/W⌉ native batch calls when enabled (#1594)
  • Default-engine dubbing now synthesizes several segments per forward pass instead of one call per line — the width follows the host's device headroom (1 on CPU and low-VRAM cards, up to 8), OMNIVOICE_DUB_BATCH_WIDTH overrides it, and engines without native batching keep the single-segment path (#1594)
  • /ws/tts now reports real time-to-first-audio, and its RTF measures synthesis alone so a slow client can't inflate it (#1594)
  • The locally cached AudioSeal watermark generator warms on a background thread ~35s after boot (OMNIVOICE_PRELOAD_WATERMARK=0 opts out; explicitly setting =1 may download it), so the first synthesis no longer serializes the audioseal import + model load inline — measured at ~42s on a cold filesystem, 3s short of a 90s client timeout (#1576) — thanks paoloantinori!
  • Voices you've cloned stay "warm" across restarts — encoded references now persist to disk (~10 KB each), so the first generation of a session skips the re-encode and any transcription pass; OMNIVOICE_PROMPT_DISK_CACHE=0 opts out (#1565)
  • Optional FlashInfer acceleration for the default engine on CUDA (OMNIVOICE_FLASHINFER=1, ~2.2x measured) — needs the optional flashinfer-python package; missing package or kernel failure logs why and falls back to the standard path (#1565)
  • The bug reporter notices when you're on an outdated build and offers the latest release before filing — with a "File anyway" escape hatch — and stamps a Build status line into every report so up-to-date reports are tellable from stale ones (#1547)
  • Settings → Performance & Device gains a compute-device override (Auto / CUDA / ROCm / XPU / MPS / CPU, or OMNIVOICE_DEVICE) — pin the device when auto-detect picks wrong; only devices your machine actually has are offered (#1557)
  • Opt-in 24-layer PocketTTS checkpoints via OMNIVOICE_POCKETTTS_24L — better prosody for it/de/es/pt at roughly 2x render time (still faster than real-time); the fast 6-layer model stays the default (#1613) — thanks paoloantinori!

Docs

  • Supported-version and install guidance now identifies 0.5.1 as the stable desktop and container release (#1687)
  • The Docker Hub overview now shows the current engine-switching demo, Model Catalogue, and gallery voice workflow (#1593)
  • The Docker Hub overview and install guide now show the v0.5 tags and the built-in API-key/share-PIN security model instead of obsolete v0.4 and no-authentication guidance (#1592)
  • The READMEs now lead with download buttons and a three-step first-clone walkthrough, and a new benchmarks page anchors measured per-engine/per-device numbers on the in-repo harness (#1555)
  • Every engine now has its own guide — 21 new pages under docs/engines plus an index covering all 16 TTS and 11 ASR engines, linked from both READMEs (#1556)
  • The OmniVoice guide now covers combining style attributes with a reference clip (consistent instruct stabilizes cloning; the reference wins conflicts), inline pronunciation control (pinyin / CMU phonemes), and corrects the claim that the default engine can't do voice design — it can, from attributes (#1565)

Fixed

  • Workspaces now measure their responsive width when the post-bootstrap shell actually mounts, so native UI scaling reflows Projects and History instead of crushing the Dubbing demo into unreadable columns (#1683)
  • Dubbing keeps the source-language selector visible after a local file is chosen, so ASR can be pinned before transcription starts (#1678) — thanks Lonki-lomki-cloud!
  • First-run media-engine downloads become available to TTS immediately without a restart, and missing media-process failures now point to repair controls (#1677) — thanks farhataligpt-dev!
  • Source installs on AMD GPUs honour OMNIVOICE_TORCH_VARIANT=rocm: bun run desktop now swaps in the ROCm torch wheel after uv sync and launches the backend without re-syncing, inst...
Read more

v0.5.0 — VoiceStudio

Choose a tag to compare

@github-actions github-actions released this 14 Aug 02:07
420bc73

Highlights

  • The app is now VoiceStudio (previously OmniVoice-Studio) — one waveform-and-spark identity across the app, docs and installers. Your data folder, settings and Docker image paths stay put.
  • Model Catalogue — engines and models in one workspace: every TTS, transcription and LLM engine with its device routing and install state, defaults picked there.
  • Switch TTS, ASR and LLM engines from the status bar or any workspace — ready-only choices, memory status, environment-pin protection, Ctrl/Cmd+E. (#1530)
  • Lend another machine's GPU with a join code and a QR scan — a Compute control in the status bar picks where jobs run, and several people can share one GPU box with revocable, certificate-pinned connections. (#1516, #1496)
  • Server mode is locked down: admin actions require an API key (#1525), and the remote UI exchanges it for short-lived sessions that never sit in browser storage or WebSocket URLs (#1528) — thanks bultodepapas!
  • A faster, cleaner Dub workspace for multilingual production, with a production command bar and per-language cards. (#1489)
  • The demo audio and video the app always advertised now actually ship, rendered by VoiceStudio's own engine. (#1517)
  • Dictation works on Wayland now — the portal shortcut actually fires (#1490, #1526) — and the recording pill is back on every desktop.
  • The Launchpad wears the project's signal-field waveform artwork over a quieter, borderless layout. (#1533)
  • The catalogue reads as headroom, not breakage: available engines sort first, uninstalled ones say what they need (#1531), and the LLM row names the provider that actually answers (#1538).
  • Gallery voices can be saved as local profiles — audio lands in your profile store with validated, content-addressed references. (#1542)

Switching TTS engines from the status bar

The Model Catalogue The Voice Gallery
Model Catalogue — engines pane Voice Gallery — save a voice as a profile

Changed

  • Gallery personas now preview through the local backend, retain their complete voice-design recipe, and open directly in Voice, Stories, or Audiobook. (#1542)
  • Support amount choices now use every theme's shared card, accent and focus tokens. (#1530)
  • Sponsoring, commercial licensing and getting in touch are one page now. They answered the same question between them and each used to live somewhere else, so they are three sections on a single scroll — the footer heart, the commercial-licence links and Contact all land on it, at the section you asked for. (#1522)
  • Model Catalogue switches panes with tabs instead of a two-state toggle, and the Engine Compatibility Matrix's TTS / ASR / LLM switcher is now tabs too — arrow-key navigable, and each tab still shows the engine it would use. (#1522)
  • Engines you can actually use sort to the top of the compatibility matrix, and an unavailable engine's name recedes instead of the whole row fading — the status badge and GPU chips that say why it is unavailable stay legible. (#1522)
  • Remote workers reads as a device list: status dot, address, latency, a live task meter, resident models and last-seen per machine, with housekeeping actions revealed on hover and a three-step empty state. (#1516)
  • The GPU picker and the new status-bar control paint their status dots and menu surfaces from themed tokens instead of fixed palette classes, so they stop showing Gruvbox colours on Midnight and Catppuccin. (#1516)
  • Dictation shows the pill again: a capture puts a small always-on-top capsule near the bottom of the screen you are working on — listening, transcribing, the result, and any error — and takes it away when the session ends. It never takes focus, so the text still lands in the app you were typing into. On Wayland the compositor decides where it sits; everywhere else it is bottom-centred.
  • Engines and models moved out of Settings into a new Model Catalogue workspace, reachable from the icon rail (or the title-bar tabs); Settings → Engines and Settings → Models now point there, and Settings keeps the models directory and Hugging Face mirror.
  • The Settings sidebar is keyboard-navigable: ⌘K / Ctrl+K jumps to the filter, ↑/↓ and Home/End move between categories, and Enter or ↓ from the filter drops into the list. Matching text in a filtered category name is highlighted, and group headers stay pinned while the list scrolls.
  • The Launchpad has a quieter, more spacious look: borderless feature tiles that light up on hover or keyboard focus, plain-numeral counts, hairline section rules, and one shared page column for the hero, tiles, recent files and project lists.
  • Linux release smoke now validates linuxdeploy's wrapped custom launcher instead of rejecting a healthy AppImage. (#1506)
  • Remote GPU workers render audiobooks chapter by chapter, with automatic per-chapter local fallback and one combined notice if the worker drops out. (#1478)
  • Remote GPU workers can now run a job to completion: long renders no longer die at two minutes, a worker that drops and reconnects mid-render keeps its work, and a timed-out job no longer takes the worker offline for good. Placing a job still needs the development-only POST /workers/tasks; wiring the app's own Synthesize button to it comes next.
  • Voice, Stories, Audiobook, Gallery, Settings, profiles, and Launchpad now use compact, responsive layouts with accessible controls. (#1491)
  • Dubbing's Generate Dub, Verify, and Export actions now use a compact hierarchy with visible labels, responsive reflow, and motion-safe feedback. (#1493)
  • The Dub workspace now has a compact production command bar, responsive flag-based language cards, media previews in Dub History, and a narrower Projects rail. (#1489)
  • VoiceStudio now uses one waveform-and-spark mark across the title bar, About screen, README, browser favicon, and every desktop/platform icon. (#1487)
  • PocketTTS now asks you to review its code license, model license and gated-access conditions before first use, and explains how to unlock the model instead of showing a raw download failure — thanks paoloantinori! (#1442)
  • The repository moved to github.com/debpalash/VoiceStudio. Every link in the app, docs and scripts now points there; GitHub redirects the old URLs, and the Docker image paths, the app bundle identifier and your data folder are all deliberately unchanged. (#1394)
  • The app is now VoiceStudio (previously OmniVoice-Studio). Only the name you see changes — your data folder, settings and the Docker image paths stay put, so upgrading needs nothing from you. On Linux the .deb is now voicestudio; remove the old omnivoice-studio package once.
  • macOS floor raised to 13.3 (Ventura) — the frontend has required Safari 16.4 for some time, so macOS 12 was a promise the stack could not keep (#1268)
  • The first-run setup screen no longer overpromises. It claimed "no account, no cloud, no telemetry" without qualification — untrue for anyone who opts into analytics — and now says what actually holds either way: your voices, recordings and projects never leave the machine, and no processing happens in the cloud.
  • Dictation no longer shows a floating pill. The hotkey records, transcribes and pastes with nothing on screen; the tray icon still marks recording, and anything needing your attention (Accessibility, microphone, a failed transcription) now arrives as a notification in the main window.

Added

  • Gallery personas preview through the local backend, keep their full voice-design recipe, and open directly in Voice, Stories, or Audiobook — and can be saved as local profiles with validated audio references. (#1542)
  • The demo audio the app has always advertised now actually ships: previews for all seven voice-design presets, the three dictation replay clips, and the dubbing demo's source video plus four dubbed languages with subtitles. Every one of those was a dead link before — the tooling that renders them required macOS, so on Windows and Linux the files were never built. (#1517)
  • Demo assets are rendered by VoiceStudio's own engine, so the tooling runs wherever the app does, and the demos are made by the thing they demonstrate. (#1517)
  • A machine can now join a control plane from the app: Settings → System → Remote workers → Lend this machine's GPU, paste the join code, done — no environment variables and no restart. The address travels with the code, so the machine reconnects on its own afterwards. (#1516)
  • Join codes and connection strings are shown as a QR code alongside the text, with a live expiry countdown — scan it from the other machine instead of retyping forty characters. (#1516)
  • A Compute control in the status bar: pick local or a remote machine, turn remote workers on or off, and mint a join code without opening Settings. It appears only once you have opted in or enrolled a machine. (#1516)
  • A worker waiting for approval can be approved from its row. The panel labelled that state before but offered no way out of it. (#1516)
  • Model Catalogue — a workspace of its own for engines and models: browse every TTS, transcription and LLM engine with its device routing and install state, pick the default for each, and install or remove model weights, all from one screen instead of two Settings categories.
  • Remote GPU machines can now accept connections instead of dialling out, so several people can use the same box at once — each gets their own revocable connection string, with certificate-pinned TLS, a live list of who is connected, and a disconnect button. (#1496)
  • Remote GPU model downloads now use the normal Models insta...
Read more

v0.4.2 — OmniVoice Studio

Choose a tag to compare

@github-actions github-actions released this 27 Jul 23:23
b01c635

Highlights

  • The update prompt is a small toast with buttons, not a screenful of release notes
  • Installing an update no longer throws away work that is still running
  • Quitting the app mid-generate stops reporting itself as a crash
  • A half-downloaded model repairs itself instead of dead-ending
  • "Dismiss" no longer reads as "terminate an employee" in five languages

Changed

  • An available update now announces itself as a toast with Install and restart, What's new and Later, instead of only a dot beside the version number. The release notes stay in Settings → Updates, where there is room for them — a version's notes are the whole changelog section, and rendering them inline is what made the old prompt fill the screen (#1272)

Fixed

  • Installing an update no longer relaunches the app while work is running. The check only knew about dub synthesis, so a restart could silently discard an upload, a transcription, a translation, an export or a standalone synth — and two overlapping synths used to cancel each other's protection. Install is now greyed out while anything is in flight (#1272)
  • A half-downloaded model now repairs itself instead of failing with a raw 500. The automatic repair recognised only one of the two ways the loader reports missing weights, so an interrupted download whose subfolder failed to load got neither the repair nor a hint about what to do (#1273)
  • Quitting the app with a generate queued reported "500 Internal Server Error: model load skipped: backend shutting down" and offered to file a bug for it. A shutdown is not a fault: the backend now answers 503 with what to do, and no bug report is offered for it (#1276)
  • Dub history: clearing a large history while a render was running could still resurrect the deleted job — which markers survived depended on the process hash seed, and an oversized purge could discard a live one (#1252)
  • German, Japanese, Russian and both Chinese locales rendered "Dismiss" as the employment sense — "terminate an employee" — on close buttons (#1272)
  • The "wait for the current job to finish" message named dubbing specifically, though it now covers uploads, transcription, translation, exports and synthesis; reworded across all 21 languages (#1272)

Linux x64 artifacts

81c1265984ec4376aecd28417413b037cdef3b1b9fe6bc7cb8d731cad7811f60  OmniVoice Studio_0.4.2_amd64.AppImage
4e880f64a85333b9c54a1a15990e54b02355667faf609e0b82160e75d88d8906  OmniVoice Studio_0.4.2_amd64.AppImage.sig

macOS Intel artifacts

22f0212893ee2b0b373329b730520fad943bd5685d1a6219a4b4b53b1e8ef949  OmniVoice Studio_0.4.2_x64.dmg
7e1ebf185e456fe89a5fbee3603f1992604cf9c672717fe7d63a0fa64d2d14e1  OmniVoice Studio.app.tar.gz
e2d5cc678b4ed3ee637e37a48d6e109babe6d0311d041dc867e3bc85493b160a  OmniVoice Studio.app.tar.gz.sig

Windows x64 artifacts

6cd5b924fa1e6ec2022ff3db0c18bec24e765fb71a294f9101fac807d4a132a1 *OmniVoice Studio_0.4.2_x64_en-US.msi
1ebddf5fcd019345085763f127a6be20b6d3cff0b241a2095e1aafd987b4d369 *OmniVoice Studio_0.4.2_x64_en-US.msi.sig

Contributors

Thank you all 💜

@debpalash

v0.4.1 — OmniVoice Studio

Choose a tag to compare

@github-actions github-actions released this 26 Jul 22:00
9736fd4

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 /mcp endpoint. The SDK default is localhost-only; this env var is opt-in (#1249)

Docs

  • Docker: ROCm section explains that torch.cuda.is_available() == True isn't proof the app is on the GPU, and notes the --group-add needed for /dev/kfd on 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:kittentts on 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' codec 500 — 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's gfx list, which can never match — thanks simmessa! (#1228)
  • AMD/ROCm: torch.compile was disabled on all AMD hosts by the same mismatched comparison (#1228)
  • AMD/ROCm: HSA_OVERRIDE_GFX_VERSION is 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 💜

@debpalash @paoloantinori