Open TTS v1.7.5
This release makes long-form Reader playback feel faster and more predictable,
reduces the memory retained by local models, and hardens the native Qwen bridge.
Faster Qwen playback
- Qwen3 CustomVoice and VoiceDesign now start delivering audio while the
current sentence is still being generated. Voice cloning, CustomVoice, and
VoiceDesign now share the same incremental generate/decode path. - Stopping Qwen generation cancels the active request without discarding the
loaded model. A subsequent generation can reuse the warm worker instead of
paying the full load cost again. - The Reader keeps sentence highlighting live while Qwen streams, but waits for
the sentence duration to stabilize before estimating the active word. This
prevents the word marker from moving backward as more audio arrives. - Empty decoder lookahead batches are handled as buffered state, missing audio
is reported with its section number, and long-running stream diagnostics can
no longer overflow the bridge's bounded output buffer.
Reader navigation and imports
- Reader chapter navigation is now one compact running head with destination
labels, accessible chapter ordinals, grouped page turns, in-chapter position
dots, and a Contents shortcut that opens the correct library tab. - Studio and Reader share a measured sliding tab indicator and cross-fade when
switching pages. Spoken sentences use a quieter paper wash, leaving the accent
color for the active word. - Auto-follow now reacts to word changes within long wrapped sentences.
- Article import from a URL works again in Electron. The DNS-pinned request
lookup now supports Node's automatic address-family selection instead of
failing withERR_INVALID_IP_ADDRESS: undefined. - PDF, Office/OpenDocument, and image extraction now runs in a bounded one-shot
worker, which is terminated on completion, failure, shutdown, or timeout.
Memory and streaming efficiency
- Inactive browser Kokoro and Supertonic workers are evicted after a short grace
period, Qwen's large MLX worker uses a one-minute idle window, and inactive
desktop runtime pages release their model and audio state. - Supertonic 3 downloads and initializes its ONNX models sequentially, reducing
peak memory during startup. - Streamed playback extends its timeline incrementally instead of rebuilding it
for each chunk, and local runtime playback no longer repeatedly rescans all
preceding chunks. - Reader cache snapshots, preload persistence, and restored playback avoid
redundant PCM copies. A single chapter larger than the renderer's memory
budget can still be persisted without being pinned in memory.
Native bridge reliability and security
- WebSocket connection attempts now use the complete remaining startup budget,
avoiding a race that could close the bridge's one accepted connection. - The bridge reports write timeouts, unattributed protocol errors, and empty
text-unit output directly instead of replacing them with generic disconnects. - Browser-originated WebSocket upgrades are rejected, handshakes are handled
concurrently with a strict cap, and the first authenticated client
atomically owns the resident process.
Distribution
This is a source-only GitHub Release. GitHub provides the repository source as
ZIP and tarball archives; unsigned DMG, ZIP app bundles, and Windows installers
are not published. Developers can still build and package the Electron app
locally with the documented desktop build commands.