Releases: soniqo/speech-studio
Release list
v0.0.9
v0.0.8
v0.0.7
Add Indic-Mio and Fish Audio S2 Pro Hindi emotion TTS engines.
v0.0.6 — VoxCPM2 x86 fp32-p16 fix
VoxCPM2 x86 voice-cloning fix
Fixes VoxCPM2 LiteRT over-generation (babble) on Windows & Linux (x86_64). The autoregressive token-step now uses fp32 weights on x86 so the stop signal fires correctly — previously the fp16 stop-margin rounded the wrong way under x86 XNNPACK and the model never stopped, rendering correct speech and then drifting into babble. macOS / ARM were unaffected and are unchanged.
On Windows & Linux the bundled sidecar fetches the fp32-p16/ model bundle from Hugging Face on first run (~12.5 GB).
Windows/Linux installers are unsigned — SmartScreen / your package manager will warn on first launch.
v0.0.5
feat: in-app auto-update via the updater plugin (#19) Until now every release meant users re-downloading a DMG from GitHub by hand — most never do, so fixes like the signed v0.0.5 or the download resilience work strand the installed base on old builds. From this version on the app updates itself: it checks the latest release's latest.json once per launch, and a TopBar button downloads the new build, verifies it, and relaunches. Two trust layers, deliberately separate: Apple codesigning/notarization authenticates the app to macOS; a minisign signature over the update archive authenticates it to the updater (pubkey baked into the app, private key environment-scoped in CI next to the Apple secrets). Release-job wiring is the subtle part: - The updater archive is created AFTER codesign + notarize + staple — the installer swaps the archive's contents onto the installed app, so it must carry the production Apple signature. (Tauri's own createUpdaterArtifacts is deliberately NOT enabled: it archives the pre-notarization .app and makes every unsigned build error without the signing key.) - The .app must be the tar's single top-level entry (the installer strips the first path component) and AppleDouble/xattr entries are suppressed — they'd break the embedded codesign seal on extraction. - The asset is named Speech-Studio_<ver>_aarch64.app.tar.gz up front because GitHub rewrites spaces to dots in download URLs, and latest.json must reference the asset name exactly. - latest.json embeds the .sig file's content (the plugin rejects paths or URLs) and is attached to the release alongside the archive. The frontend check is deliberately quiet on failure: an unreachable endpoint must never degrade the studio, and dev builds legitimately fail the check. Windows/Linux platform entries in latest.json are a follow-up; until then those builds log the failed check and move on. Updates swap files directly, so updated apps carry no quarantine attribute — Gatekeeper prompts never reappear after an update. Co-authored-by: ivan-digital <[email protected]>
v0.0.5-rc1
feat: sign + notarize the macOS release behind an approval-gated envi…
v0.0.4
v0.0.4 — MP3/FLAC reference audio + sidecar tests
v0.0.3
v0.0.2 — cap MLX cache + int8 default
Memory pass: peak RSS drops from ~30 GB (v0.0.1) to ~5.4 GB. Plus two Inspector regressions caught after the first v0.0.2 cut.
Download: Speech.Studio_0.0.2_aarch64.dmg
Changes
- Cap MLX buffer-pool cache at 1 GB. Default was
~1.5× recommendedMaxWorkingSetSize(tens of GB on unified-memory Macs). Varying-shape buffers from KV / flow / vocoder accumulated and never recycled. Override viaSONIQO_MLX_CACHE_MB. - Default model is now
aufklarer/VoxCPM2-MLX-int8(2.75 GB on disk vs 4.6 GB for bf16). Active memory drops 9.1 → 3.1 GB. No audible degradation for ICL cloning at clip lengths — auto-grader accepts every demo line on attempt 0. Override viaSONIQO_VOXCPM2_MODEL_ID. - Regenerate now shows progress — spinner on the button while the synth is running, inline error block if it fails.
- Regenerate now produces fresh audio — every click writes a uniquely-named WAV (UUID salt), forcing the
<audio>element to remount instead of replaying the cached blob. - Fixed an Inspector crash — clicking a clip after viewing a different selection unmounted the right pane (Rules of Hooks violation; hooks have been hoisted).
- Sidecar logs a memory snapshot after every synth.
- README has a "Memory footprint" section with the measured numbers.
- First demo line opens with
(dramatic)instead of(soft).
Memory (4-line demo)
| Variant | Active | Cache | Peak |
|---|---|---|---|
| bf16 (v0.0.1) | 9.1 GB | 1.0 GB | 11.4 GB |
| int8 (v0.0.2) | 3.1 GB | 1.0 GB | 5.4 GB |
Install
- Open the
.dmgand drag Speech Studio to/Applications(replace any earlier copy). - Right-click → Open the first time. The build is unsigned; Gatekeeper needs the explicit override.
- On first synth the int8 weights (~2.75 GB) download to
~/.cache/huggingface/hub/. The top-bar chip flips to VoxCPM2 ready when it's done.
v0.0.1 — first public preview
First public preview of Speech Studio — voice cloning + scripted synthesis with inline emotion markers.
Download: Speech.Studio_0.0.1_aarch64.dmg
Install
- Open the
.dmgand drag Speech Studio to/Applications. - Right-click → Open the first time (the build is unsigned; Gatekeeper needs the explicit override).
- On first synth the VoxCPM2 weights (~1.5 GB) download to
~/.cache/huggingface/hub/. The top-bar chip flips to VoxCPM2 ready when it's done.
What's in scope
- Voice cloning from a short reference clip via VoxCPM2 (MLX, Apple Silicon).
- Multi-line scripted synthesis arranged on a timeline.
- Inline emotion markers —
(soft),(whispering),(excited),(sad),(angry),(dramatic),(laughs), … - WAV export of the mixed timeline.
Requirements
- macOS 15+, Apple Silicon (M1 or newer).
- ~2 GB free disk for the bundled model on first run.
Roadmap
- Video preview + muxed export (timeline already supports the underlying clip model).
- Apple Developer ID signing + notarization (skip the right-click → Open dance).
- Linux + Windows via
speech-coreonce an on-device controllable TTS lands.