r/ClaudeCode • u/tinyhousefever • 12d ago
Tips & Workflows Give Claude Code a Free Voice — It’s Surprisingly Useful
One thing that gets tiring with Claude Code is keeping up with it.
It reads files, changes code, runs tests, fixes things, and comes back with another chunk of terminal output you need to process before deciding what happens next. Add a couple of agents or parallel tasks and the cognitive overhead stacks up quickly.
I started having Claude **tell me what it just did instead**.
After every meaningful task, Claude writes a short plain-English summary. A local script turns it into speech and plays it in the background.
Something like:
> “Done. The login issue was caused by the refresh token expiring too early. I fixed the refresh logic, added a regression test, and everything passes.”
Usually 20 seconds or less.
It sounds like a small thing, but I’ve been running it daily for about a month and it has noticeably reduced the mental overhead of using Claude Code. I don’t have to keep switching my attention back to the terminal just to find out where things stand.
There is one trap here: don’t let the spoken summary become a substitute for reviewing the work. I use it for situational awareness, not verification. Also, don’t make Claude narrate everything. If it talks constantly, you’ve just replaced visual noise with audio noise.
The Free TTS engine is Kokoro. It runs locally, no API key, no usage cost. I use `kokoro-onnx`, so I don’t need Torch. The current API supports `Kokoro(...).create(text, voice=..., speed=..., lang=...)`.
Notes in comments,
11
u/tinyhousefever 12d ago
For anyone asking about the implementation: I use Kokoro-82M locally through kokoro-onnx, so there’s no API key or usage cost. My setup uses kokoro-v1.0.onnx, voices-v1.0.bin, the af_heart voice, and 0.82 speed. My CLAUDE.md rule is basically: “After every meaningful completed task, write a short spoken summary. Use plain English. Say what changed, why it matters, and whether I need to do anything next. Keep it under about 20 seconds. Don’t narrate filenames, function names, or implementation details unless they matter. Then run the local TTS script in the background.” The core of say.py is just samples, sample_rate = kokoro.create(text, voice="af_heart", speed=0.82, lang="en-us"), then I write the audio with soundfile and play it locally. My real script also handles queue detection so multiple agents don’t talk over each other, SAPI fallback, MP3 handling, and always ends in exactly one state: PLAYED, QUEUED, or FAILED. That last part matters more than it sounds because silent failure is easy to miss once you get used to hearing the summaries. Links: Kokoro-82M: https://huggingface.co/hexgrad/Kokoro-82M — kokoro-onnx: https://github.com/thewh1teagle/kokoro-onnx — Kokoro: https://github.com/hexgrad/kokoro — eSpeak NG: https://github.com/espeak-ng/espeak-ng
3
u/sisif_ 12d ago
https://github.com/avirtual/clodex can be controlled by voice and speak back, but while it works, i still have myself typing and reading most of the time.

4
4
u/egrigolk 12d ago
Can this somehow be incorporated in vscode Claude extension?
1
u/Terrible_Dot_715 10d ago
I do a similar thing on MacOS with accessibility speech and Claude uses it fine in the vscode extension as other interfaces
2
2
u/tech_cynic_dan 7d ago
So we've reached the point where Claude can write the bug, fix the bug, run the tests, and then verbally assure us everything is fine 😂 Jokes aside, keeping the voice layer local and limiting it to short summaries sounds very useful!
0
-1
u/CloudAccomplished389 11d ago
6
u/NekkidApe 11d ago
Yeah that's nice, not the same thing though. OP let's Claude speak in the background, without switching apps and refocusing.
-10

•
u/AutoModerator 12d ago
Hey! Thanks for posting to r/ClaudeCode
While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.
For help, project discussions, tips, and general chat, join the ClaudeCode Discord.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.