Skip to content

Repository files navigation

Supertonic Reader Banner

Supertonic Reader

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


✨ What It Does

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

🖼️ Inline Sentence Buttons

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.

Inline sentence buttons

The currently-read sentence is highlighted in green and the page auto-scrolls to keep it in view.


🏗️ Architecture

Supertonic Reader uses a hybrid native + browser extension design because Windows UI Automation cannot reliably extract text from modern browsers.

Architecture diagram

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

🚀 Quick Start

1. Clone or download

git clone https://github.com/t957095/supertonic-reader.git
cd supertonic-reader

2. Run setup (one time)

.\setup.bat

This 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

3. Use it

Press Ctrl + Alt in any window. The app reads the text aloud.


🔌 Browser Extension (Chrome / Edge)

For the best experience in browsers, load the companion extension:

  1. Open chrome://extensions/ (or edge://extensions/)
  2. Turn on Developer mode (toggle in the top right)
  3. Click Load unpacked
  4. Select the extension folder inside this project
  5. 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.


⌨️ Hotkeys

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

Sentence Scrubber

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.


⚙️ Settings

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.


🛠️ Manual Start (for developers)

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

Requirements

  • 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)

Python Dependencies

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

🧪 Troubleshooting

"Could not find text in this window"

  • Make sure the window you want to read is focused before pressing the hotkey
  • For browsers: ensure the extension is loaded (see Browser Extension)

"Supertonic Reader not running?"

  • Start the native app first: python run.py or double-click start.bat
  • The extension communicates with the native app via localhost:8765

No audio / TTS fails

  • 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.py for a full system check

Clipboard content is read instead of window text

  • 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.

Extension not loading

  • Make sure Developer mode is enabled in chrome://extensions/
  • Reload the extension after any code changes (click the ↻ icon)

📁 Project Structure

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

📝 License

MIT — feel free to fork, modify, and share.


Built with Supertonic 3 🎙️

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages