cd /news/artificial-intelligence/spiel-chrome-extension-that-reads-ar… Β· home β€Ί topics β€Ί artificial-intelligence β€Ί article
[ARTICLE Β· art-54872] src=github.com β†— pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Spiel: Chrome extension that reads articles/PDFs aloud with local TTS

Spiel, a free and open-source Chrome extension, reads articles and PDFs aloud using a local neural voice model on Macs with Apple Silicon, ensuring privacy by processing everything on-device without cloud connectivity or data collection.

read5 min views1 publishedJul 10, 2026
Spiel: Chrome extension that reads articles/PDFs aloud with local TTS
Image: source

Listen to any article or PDF with a natural AI voice β€” free, private, and 100% local.

An open-source alternative to Speechify* β€” without the $139/year, and without your reading history flowing through someone else's servers.

Read-aloud tools are either expensive subscriptions or cloud services that see everything you read. Spiel is neither: the neural voice (Kokoro-82M) runs on your own Mac at 127.0.0.1

. No account, no telemetry, no cloud. Turn off Wi-Fi and it still works.

Built for students, researchers, and anyone who reads a lot and wants to pay nothing.

▢️ One click to listenβ€” open any article or PDF, press Play- πŸ– Word-by-word highlighting that follows the voice, with auto-scroll - πŸ“„ Reads PDFsβ€” research papers, web-hosted or local, extracted on-device with pdf.js - πŸ‘† Click anywhere to listen from thereβ€” click a paragraph, reading jumps to it - βœ‚οΈ Read your selectionβ€” select text on any page for instant playback - 🎚 4 curated voices(American/British, male/female) and speed up to 3Γ— - ⏱ Time-remaining estimate at your current speed - 🧹 Smart skippingβ€” URLs, [reference brackets], (parentheses) β€” your choice - πŸŒ™ Dark mode everywhere, matched to the page - πŸ”’ 100% localβ€” text-to-speech happens at127.0.0.1

; nothing ever leaves your machine

Requirements: Mac with Apple Silicon (M1 or newer) Β· ~8 GB free disk Β· Chrome. (Intel Macs and Windows/Linux: on the roadmap.)

** ⬇ Download the latest spiel-extension.zip**, unzip it, then:

  • Open chrome://extensions

  • Toggle Developer mode ON (top-right) - Click Load unpacked and pick the unzipped folder - Pin the πŸŽ™ Spiel icon to your toolbar

Keep the folder somewhere permanent (not Downloads) β€” Chrome loads the extension from that exact path.

(A one-click Chrome Web Store install is coming.)

Or build from source

git clone https://github.com/preet01/spiel.git
cd spiel && npm install && npm run build

Then Load unpacked β†’ pick the dist/

folder.

Paste this in the Terminal app and press Enter:

curl -fsSL https://raw.githubusercontent.com/preet01/spiel/main/install.sh | bash

Wait ~2 minutes. When your Mac says "Spiel is ready" out loud, you're done β€” open any article and press Play in the Spiel popup.

What does that command install, exactly?

Everything goes under ~/.spiel

(plus one LaunchAgent). The script:

  • Checks your Mac (macOS, disk space)
  • Installs the uvPython manager if missing - Downloads Kokoro-FastAPI(pinned commit, Apache-2.0) - Downloads the Kokoro voice model (~330 MB, Apache-2.0)
  • Creates a LaunchAgent so the engine auto-starts on boot, bound to 127.0.0.1

only β€” unreachable from the network - Starts it and speaks a test sentence

It's ~300 lines of plain bash β€” read it yourself before running, as you should with any curl | bash

.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Your Mac ──────────────────────────┐
β”‚                                                              β”‚
β”‚  Chrome                            Kokoro voice engine       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   text   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚ Spiel extension  β”‚ ───────▢ β”‚ FastAPI + Kokoro-82M  β”‚     β”‚
β”‚  β”‚ (UI, highlights) β”‚ ◀─────── β”‚ at 127.0.0.1:8880     β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   audio  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚                                                              β”‚
└────────────── nothing crosses this line β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The extension extracts the article (Readability) or PDF (pdf.js, on-device), sends it sentence-by-sentence to the local engine, and plays the audio with synchronized word highlighting driven by Kokoro's word timestamps.

  • No analytics, no telemetry, no accounts, no remote servers.
  • The voice engine listens on 127.0.0.1

only β€” your own machine, not your network. - The only network traffic Spiel ever creates is the one-time download of the engine and model at install.

Problem Fix
Popup says "Voice not installed" Run the Step 2 command; the popup updates itself when the engine is up
Installed but silent Engine log: ~/Library/Logs/spiel-voice-engine.log Β· installer log: ~/.spiel/install.log
Local PDF won't read Enable Allow access to file URLs for Spiel at chrome://extensions
Port 8880 already in use Another app owns it β€” lsof -iTCP:8880 -sTCP:LISTEN to find it
First play of the day is slow The model warms up on first request (~5–15 s); Spiel keeps it warm afterwards
Uninstall everything `curl -fsSL https://raw.githubusercontent.com/preet01/spiel/main/uninstall.sh

Issues and PRs welcome β€” especially Intel Mac / Windows / Linux ports, new voices, and Firefox support. The codebase is small and documented:

File What it does
src/background.ts
Playback state machine, TTS fetches, prefetch cache
src/content.ts
Article extraction, word highlighting, floating player
src/offscreen.ts
Audio playback (Web Audio, autoplay-exempt)
src/pdf-content.ts
On-device PDF text extraction (pdf.js)

The build has two quality gates: a strict TypeScript check and a dist-completeness check that fails if any runtime file is missing. Before contributing, read LESSONS.md β€” every past bug, its root cause, and the pre-flight checklist that keeps them from coming back.

npm run build      # typecheck β†’ bundle β†’ icons β†’ verify dist/ completeness
npm run package    # dist/ β†’ spiel-extension.zip

True one-click: run the voice inside Chrome via WebGPU (no Terminal step at all) - Chrome Web Store listing

  • In-PDF page highlighting (Spiel Reader view)
  • Windows & Linux installers
  • More voices and languages
  • Firefox support

MIT Β© Harpreet Vishnoi. Built on excellent open-source work β€” see THIRD_PARTY.md for full credits (Kokoro model & Kokoro-FastAPI, Apache-2.0; Mozilla Readability, Apache-2.0; pdf.js, Apache-2.0; and the CC BY voice datasets behind Kokoro).

  • Spiel is not affiliated with, endorsed by, or connected to Speechify Inc. in any way.
── more in #artificial-intelligence 4 stories Β· sorted by recency
── more on @spiel 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/spiel-chrome-extensi…] indexed:0 read:5min 2026-07-10 Β· β€”