OpenReader logo

OpenReader

Self-hosted text-to-speech document reader with synchronized highlighting

Alternative to: speechify, natural reader, elevenlabs reader


About Versions (51)

v1.0.0

2025-11-17

✨ What’s new

Version 1 release comes with many bug fixes, UI improvements, backend improvements, new features and changes.

  • 🧠 Smart sentence continuation
    • Improved NLP handling of complex structures and quoted dialogue provides more natural sentence boundaries and a smoother audio-text flow.
    • EPUB and PDF playback now use smarter sentence splitting and continuation metadata so sentences that cross page/chapter boundaries are merged before hitting the TTS API.
    • This yields more natural narration and fewer awkward pauses when a sentence spans multiple pages or EPUB spine items.
  • 📄 Modernized PDF text highlighting pipeline
    • Real-time PDF text highlighting is now offloaded to a dedicated Web Worker so scrolling and playback controls remain responsive during narration.
    • A new overlay-based highlighting system draws independent highlight layers on top of the PDF, avoiding interference with the underlying text layer.
    • Upgraded fuzzy matching with Dice-based similarity improves the accuracy of mapping spoken words to on-screen text.
    • A new per-device setting lets you enable or disable real-time PDF highlighting during playback for a more tailored reading experience.
  • 🎧 Chapter/page-based audiobook export with resume & regeneration
    • Per-chapter/per-page generation to disk with persistent bookId
    • Resumable generation (can cancel and continue later)
    • Per-chapter regeneration & deletion
    • Final combined M4B or MP3 download with embedded chapter metadata.
  • 💾 Dexie-backed local storage & sync
    • All document types (PDF, EPUB, TXT/MD-as-HTML) and config are stored via a unified Dexie layer on top of IndexedDB.
    • Document lists use live Dexie queries (no manual refresh needed), and server sync now correctly includes text/markdown documents as part of the library backup.
  • 🗣️ Kokoro multi-voice selection & utilities
    • Kokoro models now support multi-voice combination, with provider-aware limits and helpers (not supported on OpenAI or Deepinfra)
  • Faster, more efficient TTS backend proxy
    • In-memory LRU caching for audio responses with configurable size/TTL
    • ETag support (304 on cache hits) + X-Cache headers (HIT / MISS / INFLIGHT)
  • 📄 More robust DOCX → PDF conversion
    • DOCX conversion now uses isolated per-job LibreOffice profiles and temp directories, polls for a stable output file size, and aggressively cleans up temp files.
    • This reduces cross-job interference and flakiness when converting multiple DOCX files in parallel.
  • Accessibility & layout improvements
    • Dialogs and folder toggles expose proper roles and ARIA attributes.
    • PDF/EPUB/HTML readers use a full-height app shell with a sticky bottom TTS bar, improved scrollbars, and refined focus styles.
  • End-to-end Playwright test suite with TTS mocks
    • Deterministic TTS responses in tests via a reusable Playwright route mock.
    • Coverage for accessibility, upload, navigation, folder management, deletion flows, audiobook generation/export and playback across all document types.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v0.4.0…v1.0.0