OpenReader
Self-hosted text-to-speech document reader with synchronized highlighting
Alternative to: speechify, natural reader, elevenlabs reader
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.
- Per-chapter/per-page generation to disk with persistent
- 💾 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 (
304on cache hits) +X-Cacheheaders (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