A modern, privacy-focused PDF/EPUB reader with AI-powered text-to-speech, multilingual support, and smart audio caching.
- Multi-Format Support: PDF and EPUB files
- Multilingual UI: Full interface translation (English, French, Spanish, Chinese)
- Dual-Engine Architecture: Choose between Performance (CPU) and Quality (GPU) modes
- Fast TTS Engine: Kokoro-82M v1.0 (~5x real-time synthesis speed)
- Auto-Save Progress: Resume exactly where you left off
- Sentence-Level Control: Click any sentence to start reading from there
- Dynamic Voice Library: Automatically loads voices for English (US/UK), French, Spanish, Chinese, Japanese, Italian, and Portuguese.
- Voice Settings Drawer: Floating button for quick access to voice, speed, and filter controls
- Player Text Customization: New Text Size Slider to adjust subtitle/caption size (12px-24px) in real-time.
- Decoupled Browsing: Browse other pages freely without jumping the audio. A "Back to Reading" button lets you snap back instantly.
- Natural Speech Flow: Intelligent line joining prevents mid-sentence stops
- Smart Punctuation Logic:
- Supports English (
...,?!) and CJK (γ,οΌ,οΌ) punctuation correctly. - Smart "Soft Newlines" prevent rushing without creating double pauses.
- Supports English (
- Custom Pause Settings: Granular control over pause duration for punctuation (0-2000ms).
- Custom Pronunciation Rules: Fix mispronunciations with RegEx support.
- Speed Control: 0.5x to 3.0x playback speed.
- Smart Start: Auto-skip blank/cover pages on first open
- Header/Footer Filter: Detect and remove/dim repeated page clutter
- Global Search: Full-book search with instant navigation (Ctrl+F)
- SQLite Audio Cache: 200MB LRU cache with automatic cleanup (Self-healing).
- One-Click Export: Convert entire document to MP3
- Background Processing: UI stays responsive during export
- On-Demand FFMPEG: Auto-downloads encoder (~100MB) on first export
- Auto-Shutdown: Automatically closes the application after a set duration.
- Visual Feedback: Button displays remaining time in a neutral style when active.
- Background Safe: Timer runs on the backend to guarantee shutdown.
One-Click Installer - No Manual Setup Required
- Extract the ZIP to your desired location
- Navigate to the
distfolder - Double-click:
setup.exe - Approve UAC Prompt when Windows requests administrator access
- Wait for Installation:
- Checks for Python 3.12+ (downloads and installs if missing)
- Deploys application files
- Installs all dependencies automatically
- Creates Desktop and Start Menu shortcuts
- Launch: Double-click "LocalReader Pro" on your Desktop
What the installer does:
- β Installs Python 3.12 if not present
- β Installs all required packages (FastAPI, PyTorch, Kokoro-TTS, etc.)
- β Creates shortcuts on Desktop and Start Menu
- β Sets up the application in the selected directory
Uninstalling:
- Run
uninstall.exein the installation directory - Removes all shortcuts (application files remain for manual deletion)
To completely remove the supporting software (Python and Libraries):
Uninstall Python: Go to Windows Settings > Apps > Installed Apps, search for "Python 3.12", and select Uninstall.
Remove Libraries: If you haven't deleted the folder yet, open a terminal in the "dist" folder and run: pip uninstall -r requirements.txt
Clear Model Cache: Many voices and AI models are stored in your user profile. You can delete the .cache folder in your user directory (usually C:\Users\<YourName>\.cache\kokoro) to free up additional space.
Installation Size:
- Installer: ~24 MB
- Full installation: ~2.6 GB (including Python dependencies)
Prerequisites: Python 3.10 - 3.13 (Recommended: Python 3.12)
β οΈ Important: Python 3.14+ is not yet supported due toonnxruntimecompatibility.
Step 1: Install Python
# Ubuntu/Debian
sudo apt update
sudo apt install python3.12 python3.12-pip python3.12-venv
# Verify installation
python3.12 --versionStep 2: Extract and Navigate
unzip LocalReader_Pro_v2.5.zip
cd LocalReader_Pro_v2.5/distStep 3: Install Dependencies
# Option A: Using pip
pip install -r requirements.txt
# Option B: Using python -m pip (if pip not in PATH)
python3.12 -m pip install -r requirements.txtThis will install:
- FastAPI (web framework)
- uvicorn (web server)
- torch (PyTorch for ML)
- kokoro-onnx (TTS engine)
- pydub (audio processing)
- pywebview (desktop wrapper)
- And other dependencies
Installation time: 5-10 minutes (downloading PyTorch ~2GB)
Step 4: Launch the App
python3.12 main.pyAfter launching the application:
-
Choose Your Engine Mode:
- Open Settings section in sidebar
- Find "Processing Mode" dropdown
- Choose between:
- High Performance (CPU): Faster, lower RAM (~87MB model)
- High Quality (GPU): Best audio quality (~309MB model)
-
Download Voice Engine:
- Click "Setup Voice Engine" button in sidebar
- Downloads the model matching your selected mode
- Wait for green status indicator (βͺ β π)
- Tip: You can download both models and switch anytime!
-
Upload Your First Book:
- Click "Upload Book (PDF/EPUB)"
- Select any PDF or EPUB file
- App will process and display the book
-
Start Reading:
- Click the blue Play button
- Or press
Spaceto play/pause
-
First MP3 Export (Optional):
- Click "Export Audio (MP3)" in sidebar
- Prompt appears: "Download FFMPEG encoder (~100MB)"
- Click "Download FFMPEG" and wait ~2-3 minutes
- Export starts automatically after download
- Subsequent exports skip this step
- Navigate Pages: Use buttons (β βΆ) or scroll to bottom/top for auto-flip
- Play Audio: Press
Spaceor click play button - Jump to Sentence: Click any sentence in the text
- Change Voice: Use dropdown in sidebar settings
- Adjust Speed: Drag speed slider (0.5x - 3.0x)
Smart Start:
- Automatically activates on first open
- Finds first page with >500 characters
- Shows notification: "π Skipped to start of content (Page X)"
Header/Footer Filter:
- Open Settings section in sidebar
- Find "Header/Footer Filter" dropdown
- Choose: Off, Clean (remove), or Dim (show faded)
- TTS skips filtered content in all modes
Global Search:
- Press
Ctrl+F(orCmd+Fon Mac) - Type query (minimum 2 characters)
- Click any result to jump to that page
- Press
ESCto close
- Click "Pronunciation" tab in sidebar
- Click + button to add rule
- Configure:
- Original Text: The text to replace (e.g., "SQL")
- Replacement Text: How to pronounce (e.g., "S Q L")
- Options:
- βοΈ Match Case: "SQL" β "sql"
- βοΈ Whole Word: "cat" won't match "category"
- βοΈ Use Pattern Matching: Enable RegEx
Example Rules:
ChatGPTβChat G P T(spell out)COVID-19βCOVID nineteen(pronounce naturally)
- Open "Pause Settings" section in sidebar
- Adjust sliders to set pause duration (0-2000ms):
- Comma (,) - Default: 250ms
- Period (.) - Default: 600ms
- Question (?) - Default: 600ms
- Exclamation (!) - Default: 600ms
- Colon (:) - Default: 500ms
- Semicolon (;) - Default: 500ms
- Newline - Default: 800ms (Hidden, smart auto-adjust)
- Settings save automatically
Smart Behavior:
- Pauses apply only to single punctuation or the last char of a group
"..."creates ONE pause (e.g. 600ms), not three"?!creates ONE pause (based on!)Title\ncreates a soft pause (300ms)
- Open any PDF/EPUB document
- Click "Export Audio (MP3)" button
- Review time estimate (e.g., "~3 minutes")
- Confirm export
- Monitor real-time progress
- Click "π Open Folder" to access file
Export Details:
- Format: MP3, 192 kbps
- Naming:
{document_name}_{voice_name}.mp3 - Location:
userdata/folder in project directory - Speed: ~15 seconds per 1,000 characters
- Click the Timer Icon (clock) on the right side of the screen.
- Set the desired duration in Hours and Minutes.
- Click "Start Timer".
- The drawer will show a countdown, and the main button will display the remaining minutes.
- The application will automatically close when the timer reaches zero.
| Key | Action |
|---|---|
Space |
Play/Pause |
β |
Previous Sentence |
β |
Next Sentence |
Ctrl+F / Cmd+F |
Open Search |
ESC |
Close Search |
| Layer | Technology |
|---|---|
| Frontend | Vanilla JavaScript + Tailwind CSS |
| Backend | FastAPI (Python) |
| TTS Engine | Kokoro-82M (ONNX Runtime) |
| Desktop Wrapper | pywebview |
| PDF Parsing | PDF.js (Mozilla) |
| Audio Export | pydub + FFMPEG |
| EPUB Support | ebooklib + xhtml2pdf |
LocalReader-Pro/
βββ build_installer.py # Master build script
βββ installer_logic.py # setup.exe core logic
βββ README.md
βββ CHANGELOG.md
β
βββ dist/
βββ setup.exe # One-click installer (~22 MB)
βββ main.py # App entry point (FastAPI + WebView)
βββ launch.vbs # Silent runner
β
βββ app/
β βββ server.py # FastAPI initialization
β βββ state.py # Global engine/status singleton
β βββ routers/ # API Controllers (TTS, Library, Export, etc.)
β βββ logic/ # Core logic (Normalize, Detector, Cache)
β βββ locales/ # UI Translations (EN, ES, FR, ZH, JA)
β βββ ui/
β βββ index.html # Main SPA
β βββ css/style.css # Premium styling
β βββ js/modules/ # ES6 Logic modules
β
βββ userdata/ # User settings and book database
Additional folders created during use:
bin/- FFMPEG binaries (auto-downloaded on first export)models/- TTS engine models (auto-downloaded based on your choice)userdata/audio_cache.db- SQLite Audio Cache
| Component | Size |
|---|---|
| Installer | ~22 MB |
| App Files | ~10 MB |
| Python Dependencies | ~2 GB (PyTorch, etc.) |
| TTS Engine (GPU Mode) | ~309 MB |
| TTS Engine (CPU Mode) | ~87 MB |
| Voice Pack (shared) | ~30 MB |
| FFMPEG | ~100 MB (optional) |
| Audio Cache (SQLite) | ~200 MB max (auto-managed) |
| Per Document Cache | ~1-5 MB |
| Exported MP3 | ~1 MB per minute of audio |
Total (GPU Mode): ~2.6 GB (without exported audio)
Total (CPU Mode): ~2.4 GB (saves ~220MB)
Total (Both Engines): ~2.8 GB (maximum flexibility)
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 10+ / Ubuntu 20.04+ | Windows 11 / Ubuntu 22.04+ |
| Python | 3.10 - 3.13 | 3.12.10 |
| RAM | 4 GB | 8 GB+ |
| Disk Space | 3 GB free | 5 GB+ free |
| CPU | Dual-core 2.0 GHz | Quad-core 2.5 GHz+ |
| Internet | Required for setup only | Offline after setup |
- 100% Local: All documents, settings, and exports stored on your machine
- No Cloud: Zero data sent to external servers
- No Accounts: No login, no sign-up, no user tracking
- Setup Only: Internet required for:
- Downloading Python (Windows installer only, ~100 MB)
- Installing dependencies (~2 GB)
- Downloading Kokoro-82M model (~309 MB)
- Downloading FFMPEG (~100 MB, optional)
- Fully Offline: After setup, works without internet indefinitely
- Zero Tracking: No analytics, no usage stats, no crash reports
- No Cookies: Web UI runs locally
- No Logs: App doesn't phone home
- Read-Only Documents: PDFs/EPUBs are only read (never modified)
- Writable Folders: Only
userdata/,models/,bin/, and.cache/ - No Background Access: App closes completely when you exit
- Code: Proprietary (review, modify, use personally)
- Redistribution: Contact author for permission
| Component | License |
|---|---|
| Kokoro-82M | Apache 2.0 |
| FastAPI | MIT |
| PyTorch | BSD-3-Clause |
| PDF.js | Apache 2.0 |
| Tailwind CSS | MIT |
| Lucide Icons | ISC |
| FFMPEG | LGPL 2.1+ |
- TTS Engine: Kokoro-82M by hexgrad
- PDF Rendering: PDF.js by Mozilla
- UI Framework: Tailwind CSS
- Icons: Lucide
- Audio Processing: FFMPEG
- FastAPI, uvicorn, torch, onnxruntime, pydub, soundfile, pywebview, ebooklib, beautifulsoup4, and more (see
requirements.txt)
- Check Troubleshooting section above
- Verify you're on latest version (v2.5.0)
- Check
CHANGELOG.mdfor known issues - Contact developer with:
- Python version (
python --version) - Error message or screenshot
- Steps to reproduce
- Python version (
- Review
CHANGELOG.mdto see if already implemented - Describe use case and expected behavior
- Provide examples or mockups if applicable
Version: 3.5.0 (The "Explorer" Update) Engine: Kokoro-82M (Dual-Mode: CPU/GPU) Last Updated: January 6, 2026 Status: π Stable Release
Enjoy your reading! π³βͺ

