Skip to content

Open TTS v1.7.5

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jul 22:44
1e5b5bc

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 with ERR_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.