VoiceDock
Fully local read-aloud for Chrome
- Chrome
- React
- Node.js
- Piper
- Python
- esbuild

What VoiceDock does
- Right-click any text to hear it read aloud
- Two local engines: fast Piper voices or natural Kokoro voices
- Works at once with the browser's voices, before any setup
- Voice profiles that pick the engine, voice, speed and volume
- No cloud and no API keys



The problem
Read-aloud tools are cloud-bound: subscriptions, API keys, and your reading habits shipped to someone else's server - just to hear a paragraph of text.
The build
Highlight text on any page, right-click, and it is read aloud by a Piper or Kokoro voice model running entirely on your own machine. A browser-TTS fallback works instantly with zero setup, so the extension is useful before the local server is even installed. No cloud, no API keys, no data leaves your computer.
Stack & choices
- Chrome MV3Service worker for the context menu plus an offscreen document for audio playback
- ReactPopup and options UI - profiles, voices, settings, credits
- Node.js + PiperLocal server wrapping the Piper neural TTS engine and its voice models
- Python + KokoroSecond local server running the Kokoro-82M model through kokoro-onnx, loopback only
- esbuildBundles the React UI into the extension
Process notes
- 1
MV3 killed background audio, so playback runs in an offscreen document - one of those Chrome-platform quirks you only learn by hitting it.
- 2
Voice profiles bundle engine, voice, speed, and volume, so switching between a fast Piper skim-voice and a natural Kokoro listen-voice is one click.
- 3
Started as Piper TTS; the separate Kokoro server was merged in (history kept) and the product renamed VoiceDock in November 2026. Both servers refuse requests from web pages, so only the extension can use them.
- 4
Screenshots are generated by a Puppeteer script that runs from WSL but drives Windows Chrome - the same automation pattern shared with TubeVault.
- 5
A git pre-commit hook keeps the built dist/ in sync with src/, so the loadable extension never drifts from the source.
Recent activity
Full log for VoiceDockChoose Piper or Kokoro per profile, with LocalVoice branding (opens in a new tab)
and 1 more change
Systemd user service for auto-start and auto-restart (opens in a new tab)
Local Kokoro TTS server, Piper-API-compatible on port 7478 (opens in a new tab)
Handle write-stream errors in setup downloader (opens in a new tab)
and 2 more changes
Launch tray windowless (wscript + .vbs) - no CMD flash (opens in a new tab)
and 19 more changes