claude-voice

The missing half of Claude Code's voice mode. You already talk to Claude with /voice. Now Claude talks back, with word-by-word highlighting in your terminal. Fully local, zero API keys, one file.

★23github stars
82Mparams, runs on CPU
12voices
21KBone python file
live demo · karaoke highlighting while it speaksrecorded in my terminal

Why I built it

Claude Code has /voice. You speak, it transcribes, Claude responds in text. But Claude never talks back. I kept catching myself staring at the terminal reading a three paragraph explanation when I could be hearing it while I keep working. The missing half was obvious.

I tried ElevenLabs first. $0.30 per million characters, API keys, cloud round trip, latency. OpenAI TTS, same story. The official VoiceMode MCP is a tool Claude has to choose to call, so half the time it just does not. None of them did the simple thing: after every response, speak it, automatically, locally, for free.

The whole trick is a Stop hook

claude code finishes a response │ ▼ stop hook fires ── this is the entire integration │ ├─ strip markdown, code fences, urls, tables ├─ skip if >50% code (nobody wants to hear json read aloud) ├─ fix dev pronunciations ── CLI, API, nginx, kubectl ▼ kokoro tts ── 82M params, runs on CPU, no api keys │ ▼ karaoke renderer ── current word lit, progress bar, │ word count, any keypress kills it ▼ audio out. nothing ever left your machine

Kokoro is what makes it work. Small enough to run on CPU with no GPU in the loop, good enough to sound natural, and free. Twelve voices, American and British, pick your vibe.

One file on purpose

The whole thing is 21KB of Python in a single file. TTS, playback, terminal rendering, markdown stripping, pronunciation fixes, config, CLI. Is it a monolith? Yes. Would modules be cleaner? Also yes. But "one file you drop in" is the feature. It is why people install it instead of bouncing off a setup guide. claude-voice setup adds the hook and you are done.

This is the most starred thing I have shipped, and the clearest case of a pattern I keep going back to. Take a tool I use every day, find the half that is missing, build exactly that and nothing else.

Open source on github. Backstory: I gave Claude Code a voice →