richardr1126/openreader
An open-source read-along document reader server with high-quality TTS options, synchronized highlighting, and audiobook export for EPUB, PDF, DOCX, TXT, and MD.
What it solves
OpenReader provides a self-hostable way to convert documents (EPUB, PDF, TXT, MD, and DOCX) into synchronized audiobooks. It solves the problem of having a variety of different document formats that need to be accessible via text-to-speech (TTS) with precise word-by-word highlighting for a read-along experience.
How it works
The system uses a compute worker control plane (backed by NATS JetStream) to handle the heavy lifting. It employs layout-aware PDF parsing via PP-DocLayoutV3 (ONNX) for structured block detection and cross-page stitching. For synchronization, it uses ONNX Whisper alignment to achieve word-by-word highlighting. Audio is generated progressively in the background, allowing users to start listening immediately while the worker continues to process the rest of the document.
Who it’s for
It is designed for users who want a private, self-hosted document reader with high-quality TTS narration and synchronized highlighting, as well as those who want to export their documents as M4B or MP3 audiobooks.
Highlights
- Multi-provider TTS support: Works with self-hosted OpenAI-compatible servers (like Kokoro-FastAPI) or cloud APIs (OpenAI, Replicate, DeepInfra).
- Progressive playback: Audio is generated in the background so listening can begin as soon as the first segment is ready.
- Advanced PDF parsing: Uses layout-aware parsing to ensure precise read-along sync across pages.
- Wide format support: Handles EPUB, PDF, TXT, MD, and DOCX.
- Audiobook export: Ability to assemble cached audio into M4B or MP3 files.
- Self-hosting flexibility: Supports Docker, S3-compatible storage, and multiple database options (SQLite or Postgres).
Related
- Project
- Project
- Project
- Project
- Project