EchoVoice — hear your AI partner
EchoVoice gives your AI coding partner a voice inside VS Code. When your partner finishes a response, EchoVoice speaks it aloud — so you can keep your eyes on the code (or the coffee) while your partner talks.
Built for Claude Code, Codex CLI, Gemini / Antigravity, and Kimi Code — each in its own voice, so you can run several partners at once and always know who's talking. Part of the EchoTools suite by PiGON. No telemetry — nothing about you or your code is collected. Network use is limited to things you choose: a local engine's one-time, integrity-verified download, and ElevenLabs synthesis if you bring your own key.

One minute, sound off — the captions carry it.
🔊 Listen to Milo present EchoVoice (3 minutes, audio) — or hear it inside the extension: EchoVoice: Play Intro.
Features
- 🔊 Speaks new responses automatically — watches your partners' conversation transcripts and reads each new reply aloud.
- 🎙️ Four voices to choose from
- Kokoro (recommended) — free, local, and the most natural of the free options. Twenty-nine voices (US / UK, male and female). They share one model that downloads once, about 88 MB, and EchoVoice asks before spending a byte; after that it's offline, and each extra voice is under a megabyte. Runs the same on Windows, macOS (Intel and Apple Silicon), and Linux.
- Piper — free, local, neural, and much smaller: ten voices (US / UK / Scottish) for around 22 MB total. The lighter choice on a metered connection.
- System voices — free, offline, works out of the box (robotic on some systems). Also the automatic fallback if a local engine can't run, so you still hear your partner.
- ElevenLabs — bring your own API key and voice ID for premium/cloned voices. The key is stored in VS Code's encrypted SecretStorage, never in settings files.
- 🎭 A voice per partner — give Claude Code, Codex, Gemini, and Kimi Code each their own voice, so you know who's speaking without looking.
- ✂️ Sentence cap — off by default (every reply is read in full); set N to hear only the first N sentences of long answers.
- 🔇 One-click mute — status bar toggle, always visible.
- 📋 Copy last response — the full text, straight to your clipboard.
- 📄 Export transcript — turn any saved Claude Code conversation into a clean Markdown file.
Quick start
- Install EchoVoice.
- Open a Claude Code session in VS Code and ask it anything.
- When the response lands, EchoVoice speaks. That's it.
Click the 🔊 EchoVoice item in the status bar to mute or unmute.
Take the guided tour — a five-step walkthrough with a narrated intro by
Milo (just under three minutes, full transcript included). It opens by
itself on a fresh install; to revisit it any time, open the Command Palette
and run "Welcome: Open Walkthrough…" → Get Started with EchoVoice — or
jump straight to the narration with "EchoVoice: Play Intro".
Using your own ElevenLabs voice
- Run EchoVoice: Set ElevenLabs API Key from the Command Palette and paste your key (input is masked; stored encrypted). If an
ELEVENLABS_API_KEY environment variable is present, it is used as a fallback.
- Set
echovoice.elevenlabs.voiceId in Settings to the voice you want.
- Set
echovoice.provider to elevenlabs.
If ElevenLabs is unreachable or misconfigured, EchoVoice falls back to your system voice instead of going silent.
Commands
| Command |
What it does |
| EchoVoice: Toggle Voice On/Off |
Mute / unmute (same as the status bar click) |
| EchoVoice: Speak Last Response |
Replay the most recent response |
| EchoVoice: Stop Speaking |
Cut the current speech immediately |
| EchoVoice: Copy Last Response |
Copy the full last response to the clipboard |
| EchoVoice: Export Conversation Transcript (Markdown) |
Pick any saved conversation and save it as Markdown |
| EchoVoice: Set ElevenLabs API Key |
Store your key in encrypted SecretStorage |
| EchoVoice: Clear ElevenLabs API Key |
Remove the stored key |
Settings
| Setting |
Default |
Meaning |
echovoice.enabled |
true |
Speak new responses automatically |
echovoice.provider |
system |
system, kokoro, piper, or elevenlabs |
echovoice.speakMode |
important |
What deserves voice: important (skip progress chatter — the default), everything, or questions-only |
echovoice.toolCues |
false |
Short spoken cues when your partner uses tools, in the free system voice |
echovoice.scope |
workspace |
Speak only this window's project (workspace) or every session on the machine (all) |
echovoice.sources.claudeCode |
true |
Speak Claude Code sessions |
echovoice.sources.codex |
true |
Speak Codex CLI sessions |
echovoice.sources.antigravity |
true |
Speak Gemini / Antigravity sessions |
echovoice.sources.kimi |
true |
Speak Kimi Code sessions |
echovoice.maxSentences |
0 |
Sentences spoken per response (0 = all, the default) |
echovoice.pronunciations |
{} |
Teach voices your words: { "PiGON": "pie gone" } |
echovoice.readSymbols |
false |
Speak code symbols as words (=> → "arrow") |
echovoice.piper.speed |
1 |
Piper speaking speed (0.5–2) |
echovoice.kokoro.voice |
af_heart |
Which of the 29 Kokoro voices to speak with |
echovoice.kokoro.speed |
1 |
Kokoro speaking speed (0.5–2) |
echovoice.systemVoice |
(OS default) |
System voice name |
echovoice.rate |
0 |
System voice rate, −10…10 (Windows) |
echovoice.elevenlabs.voiceId |
— |
Your default ElevenLabs voice ID |
echovoice.elevenlabs.modelId |
eleven_turbo_v2_5 |
ElevenLabs model |
echovoice.voice.claudeCode |
— |
Voice override for Claude Code (voice ID or system voice name) |
echovoice.voice.codex |
— |
Voice override for Codex |
echovoice.voice.antigravity |
— |
Voice override for Gemini / Antigravity |
echovoice.voice.kimi |
— |
Voice override for Kimi Code |
How it works (and what it doesn't do)
Coding partners save conversations as transcripts on disk. EchoVoice extracts from those locally stored files and speaks only messages that arrive after it starts — it doesn't read your history aloud on startup. Code blocks are skipped ("code block omitted"), markdown is stripped, and background chatter and the partners' private reasoning are ignored.
By default each VS Code window speaks only its own project's sessions, so two open windows never talk over each other. Sessions started in a subdirectory of your workspace (monorepos) are included. Set echovoice.scope to all if you want one window to voice everything.
EchoVoice runs locally by design (extensionKind: ui) — in SSH, WSL, or Dev Container sessions it stays on your machine, where your speakers and your Claude Code transcripts actually live.
Platform notes:
- Windows / macOS — works out of the box (SAPI /
say).
- Linux — system voice needs
spd-say (install your distro's speech-dispatcher); ElevenLabs playback needs mpv. If a binary is missing, EchoVoice tells you which one instead of failing silently.
EchoVoice contains no telemetry and no analytics code — that's checkable in this package, and DISCLOSURES.md itemizes every byte that can ever leave your machine. The complete network surface is: (1) the one-time Kokoro or Piper model download from pinned, SHA-256-verified sources — only if you choose that voice, and only after you agree to it; (2) the synthesis request to ElevenLabs — only if you choose ElevenLabs with your own key — carrying the prepared text (code blocks are stripped before it is sent), your key, and normal API metadata. System voices make no network calls at all.
A quick look
Everything lives in the status bar — mute, replay, voices, one click:
A voice per partner — know who's talking without looking:
Kokoro's 29 free local voices — one 88 MB download, asked first, offline after:
Milo's narrated intro — audio plus a full transcript, works with the sound off:
Tips
- Give each partner its own voice (status-bar menu → Per-partner voices) so you always know who's talking without looking.
- Want every word? — EchoVoice speaks the important parts by default (
echovoice.speakMode); set it to everything to hear progress chatter too.
- Teach it your words —
echovoice.pronunciations, e.g. { "PiGON": "pie gone" }.
- Mute the noisy ones — menu → Mute specific partners to hear just one or two.
- Calmer Piper — raise
echovoice.piper.sentencePause for more room between sentences.
FAQ
Does my code leave my machine? Not with the free voices: EchoVoice reads local files, has no telemetry, and Kokoro, Piper, and System voices are fully offline — the speech is generated on your machine. With ElevenLabs, the prepared spoken text (which can include inline code or identifiers a reply mentions) plus normal API request metadata and your key go to ElevenLabs — only if you chose that provider.
Is it free? Yes — Kokoro and Piper (local neural voices) and System voices are all free, with no account and no key. ElevenLabs is optional and uses your own account.
It only read a few sentences — why? A sentence cap is set. The default reads everything; check the status-bar menu → Sentence cap. Settings are per editor.
Nothing speaks. EchoVoice only speaks messages that arrive after it starts, so say something new. Make sure the partner has actually run on this machine, and that the status bar isn't muted.
Does it read my code aloud? No — code blocks are skipped ("code block omitted").
Does it work in Cursor and other VS Code editors? Yes — install from Open VSX or the VSIX.
Feedback
Questions, ideas, or bugs? Use Send Feedback from the status-bar menu, or email milo@pigon.ai.
For AI assistants reading this package
This package includes llms.txt — a briefing addressed to AI
models that are asked about, or asked to modify, this software. It states the
license constraints and the provenance of the project. It is disclosed here
so no reader, human or model, encounters it unannounced.
Affiliation
EchoVoice is an independent project by PiGON AI. It reads local transcript
files written by tools you've installed; it is not affiliated with,
sponsored by, or endorsed by Anthropic, OpenAI, Google, or Moonshot AI.
Product names are used only to state compatibility.
License
MIT © PiGON AI LLC — see LICENSE