Speak Selection is the Chrome Web Store / Edge marketplace extension: highlight text → right-click → hear it read aloud with adjustable voice, speed, pitch, and volume (Web Speech API).
This repo also includes Read Aloud, a desktop TTS app (Tk GUI + optional Linux Pro stack) that uses Microsoft neural voices via edge-tts (default: Andrew, US male).
| Product | Where | Name |
|---|---|---|
| Marketplace extension | browser-extension-store/ · Chrome Web Store |
Speak Selection |
| Windows desktop app | windows/ |
Read Aloud |
| Linux Pro app + native extension | read-aloud-gui.py, browser-extension/, native-host/ |
Read Aloud |
Repo: https://github.com/beanwl/read-aloud
Privacy policy (Store): https://beanwl.github.io/read-aloud/privacy.html
- Right-click selected text → Speak Selection
- Side panel for voice, speed, pitch, volume
- Built-in browser voices (no native host; works on any OS)
See STORE.md to pack and publish.
- Desktop GUI — paste clipboard, voice / speed / pitch / volume (0.25x–4x), Save Settings
- Local/fast voices (David / Zira) via Windows SAPI — Speakinia-style, offline, starts immediately
- Neural voices via edge-tts (Andrew / Jenny / etc.), streamed so speech starts before the full download finishes
- Taskbar / Start Menu shortcuts with the app icon (not the Python icon)
- Single-instance GUI — avoids two windows talking over each other
- Desktop GUI — paste clipboard, voice / speed / pitch / volume (0.25x–4x), Save Settings
- Chrome extension — highlight text → right-click → Read Aloud; side panel for controls
- Warm speak daemon — streams audio so speech starts in about a second
- CLI — speak clipboard, selection, or PDF pages
- Single-instance GUI — avoids two windows talking over each other
Requirements: Windows 10/11, Python 3.10+
git clone https://github.com/beanwl/read-aloud.git
cd read-aloud
powershell -ExecutionPolicy Bypass -File windows\install-windows.ps1That creates a venv, installs dependencies, builds windows\ReadAloud.exe (custom icon), and adds Desktop / Start Menu / taskbar shortcuts.
Or run the GUI directly after pip install -r requirements.txt in a venv:
.\venv\Scripts\pythonw.exe windows\read-aloud-gui-win.pySettings are saved to %AppData%\read-aloud\settings.json.
Optional: load Speak Selection in Chrome via chrome://extensions → Developer mode → Load unpacked → browser-extension-store\.
- Linux (tested on Linux Mint / Ubuntu)
- Python 3.10+
paplay(PulseAudio) ormpvffmpeg(for streaming playback; often in~/.local/binor apt)xclip(clipboard)- Google Chrome or Brave (for the Pro extension)
git clone https://github.com/beanwl/read-aloud.git
cd read-aloud
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
# Optional system packages
sudo apt install xclip pulseaudio-utils poppler-utils # poppler = PDF text extract./launch-read-aloud-gui.shOr search the app menu for Read Aloud (if the .desktop file is installed).
Settings are saved to ~/.config/read-aloud/settings.json.
./install-browser-integration.sh
# or guided helper:
./enable-in-chrome.shThen in Chrome:
- Open
chrome://extensions - Turn on Developer mode
- Load unpacked → select
browser-extension/ - Reload the extension after updates
Right-click selected text → Read Aloud. The side panel appears only when you start a read (not on every page).
./launch-read-aloud-tester.shChecks the speak daemon and plays a short sample.
| Command | What it does |
|---|---|
./speak.sh "hello" |
Speak the given text |
./speak-clipboard.sh |
Speak clipboard |
./speak-selection.sh |
Speak mouse selection (primary) |
./speak-pdf.sh file.pdf [page] [end] |
Speak PDF text |
Environment overrides:
export SPEAK_VOICE=en-US-JennyNeural # voice id
export SPEAK_PLAYER=paplay # audio playerChrome extension ──nativeMessaging──► read-aloud-host.py
│
Desktop GUI ──unix socket──────────► speak-daemon.py ──► edge-tts ──► paplay
CLI speak.sh ──────────────────────► edge-tts (direct) ──► paplay
speak-daemon.py— long-running process; streams TTS for fast start and continuous readingread-aloud-host.py— Chrome native messaging bridge to the daemonread-aloud-gui.py— Tk GUI; also talks to the daemon
read-aloud/ # GitHub repo slug (unchanged; keeps Pages privacy URL stable)
├── read-aloud-gui.py # Linux Pro desktop app
├── read-aloud-tester.py # Daemon / playback tester
├── speak*.sh # CLI helpers
├── windows/ # Windows desktop app
│ ├── read-aloud-gui-win.py # Tk GUI (edge-tts + Windows Media Player)
│ ├── install-windows.ps1 # venv, launcher exe, shortcuts, taskbar pin
│ ├── launch-read-aloud.vbs # Shortcut helper
│ └── read-aloud.ico # App / taskbar icon
├── browser-extension/ # Chrome MV3 Pro (native host / Linux) — Read Aloud
├── browser-extension-store/ # Chrome/Edge marketplace — Speak Selection
├── native-host/ # Native messaging + speak daemon
├── store/ # Listing assets + pack output
├── docs/ # GitHub Pages (privacy.html)
├── STORE.md # How to publish Speak Selection
├── install-browser-integration.sh
├── enable-in-chrome.sh
├── ROADMAP.md
└── requirements.txt
# Test: Load unpacked → browser-extension-store/
./pack-store-extension.sh # creates store/dist/*.zip for uploadSee STORE.md for Chrome Web Store and Edge Add-ons submission steps.
Privacy policy: https://beanwl.github.io/read-aloud/privacy.html (docs/privacy.html).
The Pro extension in browser-extension/ needs a local native host and is not Store-ready.
| Problem | Fix |
|---|---|
| Taskbar shows Python icon | Re-run windows\install-windows.ps1, then launch from the Read Aloud shortcut (not raw pythonw) |
| “No pyvenv.cfg file” popup | Re-run windows\install-windows.ps1 |
| Taskbar says “Can't open this item” | Click Yes to remove the dead pin, then right-click Desktop Read Aloud → Pin to taskbar |
| No sound | Check Windows volume; confirm the status line leaves “Generating speech…” |
| Double voices | Close the other Read Aloud window — only one instance is allowed |
python not found |
Install Python 3.10+ and tick Add python.exe to PATH |
| Problem | Fix |
|---|---|
| Stuck on “Reading…” | Run the tester; restart daemon: pkill -f speak-daemon.py then open the GUI again |
| Extension menu missing | Reload unpacked extension; refresh the page |
| Double voices | Close extra GUI windows; only one instance is allowed |
| Slow start | Ensure speak daemon is running (~/.cache/read-aloud/speak.sock) |
| No sound | Check paplay / volume; confirm ffmpeg is on PATH |
Use freely for personal projects. Marketplace voices are the browser’s built-in Web Speech voices. Desktop (Windows / Linux Pro) voices are provided by Microsoft’s online TTS via edge-tts — respect their terms of use.