TtsReader is a cross-platform, offline TTS app built with Kotlin Multiplatform and Jetpack Compose, using the Kokoro TTS model through sherpa-onnx via JNI. It offers intelligent sentence-by-sentence speech with real-time highlighting — no internet or cloud required.
---
- 🖥️ Kotlin Multiplatform Desktop App (Jetpack Compose UI)
- 🎤 Offline TTS using Kokoro + sherpa-onnx + JNI
- 📖 Smart Sentence Playback: one sentence at a time with buffering
- 🔦 Live Highlighting: currently spoken sentence is highlighted
- 🌐 Chrome Extension Support:
- Right-click selected text → “Play with TtsReader”
Download the prebuilt .msi
:
- JDK 17+
- Git
- Chrome (for browser extension)
git clone https://github.com/ys-pro-duction/TtsReader.git
cd TtsReader
./gradlew run
(Optional) browser extension for sending selected text to the desktop app.
- Download: chrome-extension.zip
- Extract it
- Open Chrome →
chrome://extensions
- Enable Developer Mode
- Click “Load unpacked” → select extracted folder
- Select text on any webpage → right-click → “Play with TtsReader”
https://addons.mozilla.org/en-US/firefox/addon/ttsreader-text-to-speech/
TtsReader desktop app must be running in the background.
-
Text is broken into sentences using punctuation
-
The app:
- Plays 1 sentence at a time
- Buffers the next 2 sentences for seamless delivery
- Highlights the active sentence in the UI
-
Playback uses native Kokoro ONNX models via JNI
First launch will download required models to:
~/.TtsReader/
├── model.onnx
├── tokens.txt
├── config.json
TtsReader — Read your text aloud, smoothly and intelligently, all offline.