Background text-to-speech for Windows.
Press Ctrl + Alt anywhere and the active window is read aloud to you.
Quick Start • Browser Extension • How It Works • Hotkeys • Troubleshooting
Supertonic Reader is a silent background TTS app for Windows — inspired by Willow but for reading instead of dictating.
- Runs silently in your system tray (no window clutter)
- Works in any app: Chrome, Edge, VS Code, Terminal, Word, Notepad, etc.
- Uses Supertonic 3 for fast, high-quality local speech synthesis (no cloud, no API keys)
- Sentence-level control: hover and click any sentence to read from there
- Global hotkeys work everywhere — even when the app has no focus
Inside Chrome and Edge, the extension wraps every sentence with a small play button that appears on hover. Click any sentence to start reading from exactly that point.
The currently-read sentence is highlighted in green and the page auto-scrolls to keep it in view.
Supertonic Reader uses a hybrid native + browser extension design because Windows UI Automation cannot reliably extract text from modern browsers.
| Component | Handles |
|---|---|
Native App (run.py) |
System tray, global hotkeys, TTS synthesis, audio playback, toast notifications, sentence scrubber |
Chrome Extension (extension/) |
DOM text extraction, sentence splitting, inline play buttons, HTTP communication with native app |
| Desktop Apps | Native app extracts text directly via Windows UIA |
| Browser Pages | Extension extracts text and POSTs it to localhost:8765 |
git clone https://github.com/t957095/supertonic-reader.git
cd supertonic-reader.\setup.batThis will:
- Create a Python virtual environment
- Install all dependencies
- Register the app to auto-start on Windows boot
- Launch the app for first-time voice selection
Press Ctrl + Alt in any window. The app reads the text aloud.
For the best experience in browsers, load the companion extension:
- Open
chrome://extensions/(oredge://extensions/) - Turn on Developer mode (toggle in the top right)
- Click Load unpacked
- Select the
extensionfolder inside this project - Done — the extension works across all Chrome profiles
Why an extension? Chrome and Edge do not expose page content to Windows accessibility APIs. The extension is the only reliable way to read web pages across all sites.
| Keys | Action |
|---|---|
| Ctrl + Alt | Start reading from the top (or stop if already reading) |
| Ctrl + Alt (double-tap) | Show the sentence scrubber bar |
| Ctrl + Alt + Shift | Show the sentence scrubber bar |
| Ctrl + Shift + S | Open the floating sentence panel (browser only) |
| Ctrl + Shift + P | Toggle the browser extension panel |
A thin bar appears at the top of your screen with numbered dots — one per sentence. Click any dot to jump to that sentence. It auto-hides after 5 seconds.
Right-click the green 🎙️ tray icon → Settings
| Setting | Description |
|---|---|
| Voice | 10 built-in voices: F1–F5, M1–M5 |
| Speed | 0.70× – 2.00× playback speed |
| Language | Auto-detect or force a language (en, es, fr, de, ja, ko, zh) |
| Auto-start | Launch automatically when Windows boots |
Settings are stored in the Windows registry under HKEY_CURRENT_USER\Software\SupertonicReader\Settings.
If you prefer not to use setup.bat:
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run.py- Windows 10/11
- Python 3.12+
- A working audio output device
- ~150 MB free disk space for the Supertonic 3 model (auto-downloaded on first use)
PySide6>=6.5.0
pynput>=1.7.6
Pillow>=10.0.0
supertonic>=1.2.0
sounddevice>=0.4.6
numpy>=1.24.0
pywinauto>=0.6.8
pyperclip>=1.8.2
psutil
pywin32
- Make sure the window you want to read is focused before pressing the hotkey
- For browsers: ensure the extension is loaded (see Browser Extension)
- Start the native app first:
python run.pyor double-clickstart.bat - The extension communicates with the native app via
localhost:8765
- Check your default audio output device in Windows
- The Supertonic 3 model downloads on first use — ensure you have internet for the first launch
- Run
python diagnose.pyfor a full system check
- This was fixed in recent versions. Update to the latest commit.
- For browsers, the extension handles text extraction — the native app never reads the clipboard in browsers.
- Make sure Developer mode is enabled in
chrome://extensions/ - Reload the extension after any code changes (click the ↻ icon)
supertonic-reader/
├── run.py # Entry point
├── setup.bat # One-time Windows setup
├── start.bat # Manual launch
├── uninstall.bat # Removes auto-start registry entries
├── diagnose.py # System health check
├── requirements.txt
├── README.md
├── AGENTS.md # Agent setup guide (for AI assistants)
│
├── src/supertonic_reader/ # Native app source
│ ├── app.py # Main orchestrator (tray, hotkeys, HTTP server)
│ ├── tts.py # Supertonic 3 wrapper
│ ├── extractor.py # Windows text extraction (UIA + selected text)
│ ├── scrubber.py # Top-of-screen sentence scrubber bar
│ ├── toast.py # Toast notifications
│ ├── tray.py # System tray icon
│ ├── settings.py # Settings storage
│ ├── settings_window.py # Settings dialog UI
│ ├── autostart.py # Windows startup registry management
│ └── icon.py # Icon generation
│
├── extension/ # Chrome/Edge extension
│ ├── manifest.json # Extension manifest (v3)
│ ├── background.js # Service worker
│ ├── content.js # DOM extraction + inline buttons
│ ├── popup.html / popup.js # Extension popup UI
│ ├── styles.css # Extension styles
│ └── icons/ # Extension icons
│
└── assets/ # Images and icons
├── banner.png
├── architecture.png
├── inline-buttons.png
└── icon_*.png
MIT — feel free to fork, modify, and share.
Built with Supertonic 3 🎙️


