A minimal PDF reader with built-in text-to-speech, powered by Kokoro TTS.
Pure Rust. Runs entirely offline. No Python needed.
- PDF viewing with page navigation
- High-quality neural text-to-speech (Kokoro 82M)
- 50+ voices across multiple languages
- Streaming playback (sentence by sentence)
- Play / Pause / Stop controls
- Voice selection and speed adjustment
- Drag & drop PDF support
- Rust 1.75+
- espeak-ng (
pacman -S espeak-ng/apt install espeak-ng) - libsonic (
pacman -S libsonic) - pcaudiolib (
pacman -S pcaudiolib) - libpdfium (download from pdfium-binaries)
mkdir -p lib/lib
cd lib
wget https://github.com/bblanchon/pdfium-binaries/releases/latest/download/pdfium-linux-x64.tgz
tar xzf pdfium-linux-x64.tgzcargo build --release./target/release/kokoro-readerOn first run, Kokoro model files (~340MB) are automatically downloaded to ~/.cache/kokoros/.
- Click Open PDF or drag & drop a PDF file
- Navigate pages with < / >
- Click Play to read the current page aloud
- Select a voice from the dropdown
- Adjust speed with the slider
egui (GUI) ── pdfium-render (PDF) ── kokoro_engine (TTS) ── rodio (Audio)
- PDF: pdfium-render for page rendering and text extraction
- TTS: Custom Kokoro ONNX engine with correct Misaki phonemization
- Audio: rodio for streaming playback with play/pause/stop
- GUI: egui/eframe for minimal native UI
- Kokoro-82M by hexgrad
- kokoro-onnx (Python reference)
- kokoro-tiny (Rust base, patched)
- kokoroxide (Misaki phonemization reference)
MIT