mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-20 07:10:40 -07:00
- Backfill CHANGELOG.md from all 17 GitHub releases (was stale at v0.1.0) - Add draft-release-notes and release-bump agent skills - Remove stale PATCH_NOTES.md, mlx-test/, move PROJECT_STATUS to docs/notes - Minor voicebox-server.spec cleanup
394 lines
19 KiB
Markdown
394 lines
19 KiB
Markdown
<!-- This file is compiled automatically during the release workflow. -->
|
||
<!-- Do not edit manually — your changes will be overwritten. -->
|
||
<!-- To update the draft: ask the agent to use the draft-release-notes skill. -->
|
||
<!-- To finalize a release: ask the agent to use the release-bump skill. -->
|
||
|
||
# Changelog
|
||
|
||
## [Unreleased]
|
||
|
||
## [0.2.3] - 2026-03-15
|
||
|
||
The "it works in dev but not in prod" release. This version fixes a series of PyInstaller bundling issues that prevented model downloading, loading, generation, and progress tracking from working in production builds.
|
||
|
||
### Model Downloads Now Actually Work
|
||
|
||
The v0.2.1/v0.2.2 builds could not download or load models that weren't already cached from a dev install. This release fixes the entire chain:
|
||
|
||
- **Chatterbox, Chatterbox Turbo, and LuxTTS** all download, load, and generate correctly in bundled builds
|
||
- **Real-time download progress** — byte-level progress bars now work in production. The root cause: `huggingface_hub` silently disables tqdm progress bars based on logger level, which prevented our progress tracker from receiving byte updates. We now force-enable the internal counter regardless.
|
||
- **Fixed Python 3.12.0 `code.replace()` bug** — the macOS build was on Python 3.12.0, which has a [known CPython bug](https://github.com/pyinstaller/pyinstaller/issues/7992) that corrupts bytecode when PyInstaller rewrites code objects. This caused `NameError: name 'obj' is not defined` crashes during scipy/torch imports. Upgraded to Python 3.12.13.
|
||
|
||
### PyInstaller Fixes
|
||
|
||
- Collect all `inflect` files — `typeguard`'s `@typechecked` decorator calls `inspect.getsource()` at import time, which needs `.py` source files, not just bytecode. Fixes LuxTTS "could not get source code" error.
|
||
- Collect all `perth` files — bundles the pretrained watermark model (`hparams.yaml`, `.pth.tar`) needed by Chatterbox at runtime
|
||
- Collect all `piper_phonemize` files — bundles `espeak-ng-data/` (phoneme tables, language dicts) needed by LuxTTS for text-to-phoneme conversion
|
||
- Set `ESPEAK_DATA_PATH` in frozen builds so the espeak-ng C library finds the bundled data instead of looking at `/usr/share/espeak-ng-data/`
|
||
- Collect all `linacodec` files — fixes `inspect.getsource` error in Vocos codec
|
||
- Collect all `zipvoice` files — fixes source code lookup in LuxTTS voice cloning
|
||
- Copy metadata for `requests`, `transformers`, `huggingface-hub`, `tokenizers`, `safetensors`, `tqdm` — fixes `importlib.metadata` lookups in frozen binary
|
||
- Add hidden imports for `chatterbox`, `chatterbox_turbo`, `luxtts`, `zipvoice` backends
|
||
- Add `multiprocessing.freeze_support()` to fix resource_tracker subprocess crash in frozen binary
|
||
- `--noconsole` now only applied on Windows — macOS/Linux need stdout/stderr for Tauri sidecar log capture
|
||
- Hardened `sys.stdout`/`sys.stderr` devnull redirect to test writability, not just `None` check
|
||
|
||
### Updater
|
||
|
||
- Fixed updater artifact generation with `v1Compatible` for `tauri-action` signature files
|
||
- Updated `tauri-action` to v0.6 to fix updater JSON and `.sig` generation
|
||
|
||
### Other Fixes
|
||
|
||
- Full traceback logging on all backend model loading errors (was just `str(e)` before)
|
||
|
||
## [0.2.2] - 2026-03-15
|
||
|
||
- Fix Chatterbox model support in bundled builds
|
||
- Fix LuxTTS/ZipVoice support in bundled builds
|
||
- Auto-update CUDA binary when app version changes
|
||
- CUDA download progress bar
|
||
- Fix server process staying alive on macOS (SIGHUP handling, watchdog grace period)
|
||
- Hide console window when running CUDA binary on Windows
|
||
|
||
## [0.2.1] - 2026-03-15
|
||
|
||
Voicebox v0.1.x was a single-engine voice cloning app built around Qwen3-TTS. v0.2.0 is a ground-up rethink: four TTS engines, 23 languages, paralinguistic emotion controls, a post-processing effects pipeline, unlimited generation length, an async generation queue, and support for every major GPU vendor. Plus Docker.
|
||
|
||
### New TTS Engines
|
||
|
||
#### Multi-Engine Architecture
|
||
|
||
Voicebox now runs **four independent TTS engines** behind a thread-safe per-engine backend registry. Switch engines per-generation from a single dropdown — no restart required.
|
||
|
||
| Engine | Languages | Size | Key Strengths |
|
||
| --------------------------- | --------- | ------- | --------------------------------------------- |
|
||
| **Qwen3-TTS 1.7B** | 10 | ~3.5 GB | Highest quality, delivery instructions |
|
||
| **Qwen3-TTS 0.6B** | 10 | ~1.2 GB | Lighter, faster variant |
|
||
| **LuxTTS** | English | ~300 MB | CPU-friendly, 48 kHz output, 150x realtime |
|
||
| **Chatterbox Multilingual** | 23 | ~3.2 GB | Broadest language coverage, zero-shot cloning |
|
||
| **Chatterbox Turbo** | English | ~1.5 GB | 350M params, low latency, paralinguistic tags |
|
||
|
||
#### Chatterbox Multilingual — 23 Languages ([#257](https://github.com/jamiepine/voicebox/pull/257))
|
||
|
||
Zero-shot voice cloning in Arabic, Chinese, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Italian, Japanese, Korean, Malay, Norwegian, Polish, Portuguese, Russian, Spanish, Swahili, Swedish, and Turkish.
|
||
|
||
#### LuxTTS — Lightweight English TTS ([#254](https://github.com/jamiepine/voicebox/pull/254))
|
||
|
||
A fast, CPU-friendly English engine. ~300 MB download, 48 kHz output, runs at 150x realtime on CPU.
|
||
|
||
#### Chatterbox Turbo — Expressive English ([#258](https://github.com/jamiepine/voicebox/pull/258))
|
||
|
||
A fast 350M-parameter English model with inline paralinguistic tags.
|
||
|
||
#### Paralinguistic Tags Autocomplete ([#265](https://github.com/jamiepine/voicebox/pull/265))
|
||
|
||
Type `/` in the text input with Chatterbox Turbo selected to open an autocomplete for **9 expressive tags**: `[laugh]` `[chuckle]` `[gasp]` `[cough]` `[sigh]` `[groan]` `[sniff]` `[shush]` `[clear throat]`
|
||
|
||
### Generation
|
||
|
||
#### Unlimited Generation Length — Auto-Chunking ([#266](https://github.com/jamiepine/voicebox/pull/266))
|
||
|
||
Long text is now automatically split at sentence boundaries, generated per-chunk, and crossfaded back together. Engine-agnostic.
|
||
|
||
- Auto-chunking limit slider — 100–5,000 chars (default 800)
|
||
- Crossfade slider — 0–200ms (default 50ms)
|
||
- Max text length raised to 50,000 characters
|
||
- Smart splitting respects abbreviations, CJK punctuation, and `[tags]`
|
||
|
||
#### Asynchronous Generation Queue ([#269](https://github.com/jamiepine/voicebox/pull/269))
|
||
|
||
Generation is now fully non-blocking. Serial execution queue prevents GPU contention. Real-time SSE status streaming.
|
||
|
||
#### Generation Versions
|
||
|
||
Every generation now supports multiple versions with provenance tracking — original, effects versions, takes, source tracking, version pinning in stories, and favorites.
|
||
|
||
### Post-Processing Effects ([#271](https://github.com/jamiepine/voicebox/pull/271))
|
||
|
||
A full audio effects system powered by Spotify's `pedalboard` library: Pitch Shift, Reverb, Delay, Chorus/Flanger, Compressor, Gain, High-Pass Filter, Low-Pass Filter. 4 built-in presets, custom presets, per-profile default effects, and live preview.
|
||
|
||
### Platform Support
|
||
|
||
- **Windows Support** ([#272](https://github.com/jamiepine/voicebox/pull/272)) — Full Windows support with CUDA GPU detection
|
||
- **Linux** ([#262](https://github.com/jamiepine/voicebox/pull/262)) — AMD ROCm, NVIDIA GBM fix, WebKitGTK mic access (build from source)
|
||
- **NVIDIA CUDA Backend Swap** ([#252](https://github.com/jamiepine/voicebox/pull/252)) — Download and swap in CUDA backend from within the app
|
||
- **Intel Arc (XPU) and DirectML** — PyTorch backend supports Intel Arc and DirectML
|
||
- **Docker + Web Deployment** ([#161](https://github.com/jamiepine/voicebox/pull/161)) — 3-stage build, non-root runtime, health checks
|
||
- **Whisper Turbo** — Added `openai/whisper-large-v3-turbo` as a transcription model option
|
||
|
||
### Model Management ([#268](https://github.com/jamiepine/voicebox/pull/268))
|
||
|
||
Per-model unload, custom models directory, model folder migration, download cancel/clear UI ([#238](https://github.com/jamiepine/voicebox/pull/238)), restructured settings UI.
|
||
|
||
### Security & Reliability
|
||
|
||
- CORS hardening ([#88](https://github.com/jamiepine/voicebox/pull/88))
|
||
- Network access toggle ([#133](https://github.com/jamiepine/voicebox/pull/133))
|
||
- Offline crash fix ([#152](https://github.com/jamiepine/voicebox/pull/152))
|
||
- Atomic audio saves ([#263](https://github.com/jamiepine/voicebox/pull/263))
|
||
- Filesystem health endpoint
|
||
- Chatterbox float64 dtype fix ([#264](https://github.com/jamiepine/voicebox/pull/264))
|
||
|
||
### Accessibility ([#243](https://github.com/jamiepine/voicebox/pull/243))
|
||
|
||
Screen reader support, keyboard navigation, state-aware `aria-label` attributes on all interactive controls.
|
||
|
||
### UI Polish
|
||
|
||
- Redesigned landing page ([#274](https://github.com/jamiepine/voicebox/pull/274))
|
||
- Voices tab overhaul with inline inspector
|
||
- Responsive layout improvements
|
||
- Duplicate profile name validation ([#175](https://github.com/jamiepine/voicebox/pull/175))
|
||
|
||
### Community Contributors
|
||
|
||
[@haosenwang1018](https://github.com/haosenwang1018), [@Balneario-de-Cofrentes](https://github.com/Balneario-de-Cofrentes), [@ageofalgo](https://github.com/ageofalgo), [@mikeswann](https://github.com/mikeswann), [@rayl15](https://github.com/rayl15), [@mpecanha](https://github.com/mpecanha), [@ways2read](https://github.com/ways2read), [@ieguiguren](https://github.com/ieguiguren), [@Vaibhavee89](https://github.com/Vaibhavee89), [@pandego](https://github.com/pandego), [@luminest-llc](https://github.com/luminest-llc)
|
||
|
||
## [0.1.13] - 2026-02-23
|
||
|
||
### Stability and reliability
|
||
|
||
- [#95](https://github.com/jamiepine/voicebox/pull/95) Fix: selecting 0.6B model still downloads and uses 1.7B
|
||
- [#93](https://github.com/jamiepine/voicebox/pull/93) fix(mlx): bundle native libs and broaden error handling for Apple Silicon
|
||
- [#79](https://github.com/jamiepine/voicebox/pull/79) fix: handle non-ASCII filenames in Content-Disposition headers
|
||
- [#78](https://github.com/jamiepine/voicebox/pull/78) fix: guard getUserMedia call against undefined mediaDevices in non-secure contexts
|
||
- [#77](https://github.com/jamiepine/voicebox/pull/77) fix: await for confirmation before deleting voices and channels
|
||
- [#128](https://github.com/jamiepine/voicebox/pull/128) fix: resolve multiple issues (#96, #119, #111, #108, #121, #125, #127)
|
||
- [#40](https://github.com/jamiepine/voicebox/pull/40) Fix: audio export path resolution
|
||
|
||
### Build and packaging
|
||
|
||
- [#122](https://github.com/jamiepine/voicebox/pull/122) fix(web): add @tailwindcss/vite plugin to web config
|
||
- [#126](https://github.com/jamiepine/voicebox/pull/126) Create requirements.txt
|
||
|
||
### UX and docs
|
||
|
||
- [#44](https://github.com/jamiepine/voicebox/pull/44) Enhances floating generate box UX
|
||
- [#57](https://github.com/jamiepine/voicebox/pull/57) chore: updates repo URL in README
|
||
- [#146](https://github.com/jamiepine/voicebox/pull/146) Add Spacebot banner to landing page
|
||
- [#1](https://github.com/jamiepine/voicebox/pull/1) Improvements
|
||
|
||
## [0.1.12] - 2026-01-31
|
||
|
||
### Model Download UX Overhaul
|
||
|
||
- Real-time download progress tracking with accurate percentage and speed info
|
||
- No more downloading notifications during generation even when its not downloading
|
||
- Better error handling and status reporting throughout the download process
|
||
|
||
### Other Improvements
|
||
|
||
- Enhanced health check endpoint with GPU type information
|
||
- Improved model caching verification
|
||
- More reliable SSE progress updates
|
||
- Actual update notifications — no need to manually check in settings anymore
|
||
|
||
## [0.1.11] - 2026-01-30
|
||
|
||
- Fixed transcriptions on MLX
|
||
- Fixed model download progress (finally)
|
||
|
||
## [0.1.10] - 2026-01-30
|
||
|
||
### Faster generation on Apple Silicon
|
||
|
||
Massive speed gains, from around 20s per generation to 2-3s. Added native MLX backend support for Apple Silicon, providing significantly faster TTS and STT generation on M-series macOS machines.
|
||
|
||
- **MLX Backend** — New backend implementation optimized for Apple Silicon using MLX framework
|
||
- **Dynamic Backend Selection** — Automatically detects platform and selects between MLX (macOS) and PyTorch (other platforms)
|
||
- Refactored TTS and STT logic into modular backend implementations
|
||
- Updated build process to include MLX-specific dependencies for macOS builds
|
||
|
||
## [0.1.9] - 2026-01-30
|
||
|
||
### Improved voice profile creation flow
|
||
|
||
- Voice create drafts: No longer lose work if you close the modal
|
||
- Fixed whisper only transcribing English or Chinese, now has support for all languages
|
||
|
||
### Improved Stories editor
|
||
|
||
- Added spacebar for play/pause
|
||
- Timeline now auto-scrolls to follow playhead during playback
|
||
- Fixed misalignment of the items with mouse when picking up
|
||
- Fixed hitbox for selecting an item
|
||
- Fixed playhead jumping forward when pressing play
|
||
|
||
### Generation box improvements
|
||
|
||
- Instruct mode no longer wipes prompt text
|
||
- Improved UI cleanliness
|
||
|
||
### Misc
|
||
|
||
- Fixed "Model downloading" toast during generation when model is already downloaded
|
||
|
||
## [0.1.8] - 2026-01-29
|
||
|
||
### Model Download Timeout Issues
|
||
|
||
Fixed critical issue where model downloads would fail with "Failed to fetch" errors on Windows. Refactored download endpoints to return immediately and continue downloads in background.
|
||
|
||
### Cross-Platform Cache Path Issues
|
||
|
||
Fixed hardcoded `~/.cache/huggingface/hub` paths that don't work on Windows. All cache paths now use `hf_constants.HF_HUB_CACHE` for proper cross-platform support.
|
||
|
||
### Windows Process Management
|
||
|
||
- Added `/shutdown` endpoint for graceful server shutdown on Windows
|
||
- Added `gpu_type` field to health check response
|
||
|
||
## [0.1.7] - 2026-01-29
|
||
|
||
- Trim and split audio clips in Story Editor
|
||
- Auto-activation of stories in Story Editor with visible playhead
|
||
- Conditional auto-play support in AudioPlayer for better user control
|
||
- Refactored audio loading across HistoryTable, SampleList, and generation forms
|
||
- Audio now only auto-plays when explicitly intended, preventing unexpected playback
|
||
|
||
## [0.1.6] - 2026-01-29
|
||
|
||
### Introducing Stories
|
||
|
||
A full voice editor for composing podcasts and generated conversations.
|
||
|
||
- **Stories Editor** — Create multi-voice narratives, podcasts, or conversations with a timeline-based editor
|
||
- Compose tracks with different voices
|
||
- Edit and arrange audio segments inline
|
||
- Build generated conversations with multiple participants
|
||
- **Improved Voice Generation UI** — Auto-resizing input, default voice selection, better layout
|
||
- **Track Editor Integration** — Inline track editing within story items
|
||
|
||
## [0.1.5] - 2026-01-28
|
||
|
||
Fixed recording length limit at 0:29 to auto stop instead of passing the limit and getting an error, which would cause users to lose their recording.
|
||
|
||
## [0.1.4] - 2026-01-28
|
||
|
||
- Audio channel management system
|
||
- Native audio playback handling in AudioPlayer component
|
||
- Refactored ConnectionForm and Checkbox components
|
||
- Improved layout consistency and responsiveness
|
||
- Added safe area constants for better responsive design
|
||
|
||
## [0.1.3] - 2026-01-27
|
||
|
||
- Improved the generate textbox
|
||
- Maybe fixed Windows autoupdate restarting entire computer
|
||
|
||
## [0.1.2] - 2026-01-27
|
||
|
||
### Audio Capture & Format Conversion
|
||
|
||
- Added audio format conversion util
|
||
- Enhanced system audio capture on macOS and Windows
|
||
- Improved audio recording hooks
|
||
- Added audio input entitlement for macOS
|
||
- Added audio capture tests
|
||
|
||
### Update System
|
||
|
||
- Enhanced auto-updater functionality and update status display
|
||
|
||
## [0.1.1] - 2026-01-27
|
||
|
||
### Platform Support
|
||
|
||
- **macOS Audio Capture** — Native audio capture support for sample creation
|
||
- **Windows Audio Capture** — WASAPI implementation with improved thread safety
|
||
- **Linux Support** — Temporarily removed builds due to runner disk space constraints
|
||
|
||
### Audio Features
|
||
|
||
- Play/pause for audio samples across all components
|
||
- Three new sample components: Recording, System capture, Upload with drag-and-drop
|
||
- Audio validation, error handling, and consistent cleanup
|
||
|
||
### Voice Profile Management
|
||
|
||
- Profile import with file size validation (100MB limit)
|
||
- Enhanced profile form with new audio sample components
|
||
- Drag-and-drop support for audio file uploads
|
||
|
||
### Server Management
|
||
|
||
- Changed default URL from `localhost:8000` to `127.0.0.1:17493`
|
||
- Server reuse logic, "keep server running" preference, orphaned process handling
|
||
|
||
### Build & Release
|
||
|
||
- Added `.bumpversion.cfg` for automated version management
|
||
- Enhanced icon generation script for multi-size Windows icons
|
||
|
||
### Bug Fixes
|
||
|
||
- Fixed date formatting for timezone-less date strings
|
||
- Fixed getLatestRelease file filtering
|
||
- Improved audio duration metadata on Windows
|
||
|
||
## [0.1.0] - 2026-01-27
|
||
|
||
The first public release of Voicebox — an open-source voice synthesis studio powered by Qwen3-TTS.
|
||
|
||
### Voice Cloning with Qwen3-TTS
|
||
|
||
- Automatic model download from HuggingFace
|
||
- Multiple model sizes (1.7B and 0.6B)
|
||
- Voice prompt caching for instant regeneration
|
||
- English and Chinese support
|
||
|
||
### Voice Profile Management
|
||
|
||
- Create profiles from audio files or record directly in the app
|
||
- Multiple samples per profile for higher quality cloning
|
||
- Import/Export profiles
|
||
- Automatic transcription via Whisper
|
||
|
||
### Speech Generation
|
||
|
||
- Simple text-to-speech with profile selection
|
||
- Seed control for reproducible generations
|
||
- Long-form support up to 5,000 characters
|
||
|
||
### Generation History
|
||
|
||
- Full history with metadata
|
||
- Search by text content
|
||
- Inline playback and download
|
||
|
||
### Flexible Deployment
|
||
|
||
- Local mode with bundled backend
|
||
- Remote mode for GPU servers on your network
|
||
- One-click server setup
|
||
|
||
### Desktop Experience
|
||
|
||
- Built with Tauri v2 (Rust) — native performance, not Electron
|
||
- Cross-platform: macOS and Windows
|
||
- No Python installation required
|
||
|
||
### Tech Stack
|
||
|
||
Tauri v2, React, TypeScript, Tailwind CSS, FastAPI, Qwen3-TTS, Whisper, SQLite
|
||
|
||
[Unreleased]: https://github.com/jamiepine/voicebox/compare/v0.2.3...HEAD
|
||
[0.2.3]: https://github.com/jamiepine/voicebox/compare/v0.2.2...v0.2.3
|
||
[0.2.2]: https://github.com/jamiepine/voicebox/compare/v0.2.1...v0.2.2
|
||
[0.2.1]: https://github.com/jamiepine/voicebox/compare/v0.1.13...v0.2.1
|
||
[0.1.13]: https://github.com/jamiepine/voicebox/compare/v0.1.12...v0.1.13
|
||
[0.1.12]: https://github.com/jamiepine/voicebox/compare/v0.1.11...v0.1.12
|
||
[0.1.11]: https://github.com/jamiepine/voicebox/compare/v0.1.10...v0.1.11
|
||
[0.1.10]: https://github.com/jamiepine/voicebox/compare/v0.1.9...v0.1.10
|
||
[0.1.9]: https://github.com/jamiepine/voicebox/compare/v0.1.8...v0.1.9
|
||
[0.1.8]: https://github.com/jamiepine/voicebox/compare/v0.1.7...v0.1.8
|
||
[0.1.7]: https://github.com/jamiepine/voicebox/compare/v0.1.6...v0.1.7
|
||
[0.1.6]: https://github.com/jamiepine/voicebox/compare/v0.1.5...v0.1.6
|
||
[0.1.5]: https://github.com/jamiepine/voicebox/compare/v0.1.4...v0.1.5
|
||
[0.1.4]: https://github.com/jamiepine/voicebox/compare/v0.1.3...v0.1.4
|
||
[0.1.3]: https://github.com/jamiepine/voicebox/compare/v0.1.2...v0.1.3
|
||
[0.1.2]: https://github.com/jamiepine/voicebox/compare/v0.1.1...v0.1.2
|
||
[0.1.1]: https://github.com/jamiepine/voicebox/compare/v0.1.0...v0.1.1
|
||
[0.1.0]: https://github.com/jamiepine/voicebox/releases/tag/v0.1.0
|