Marketplace for the Claude Voice TTS plugin
npx claudepluginhub adjit/claude-voiceAdds TTS narration to Claude Code using local Kokoro model
Giving Claude Code a voice — adds conversational TTS narration to your Claude coding sessions using local AI models.
Claude Voice is a plugin for Claude Code that makes Claude narrate what it's doing — like having a senior engineer pair-programming with you, talking through their thought process.
All speech synthesis runs locally on your machine using the Kokoro ONNX model. No API calls, no cloud services, complete privacy.
Claude Voice offers two modes of operation:
When Claude finishes responding, a brief summary of the response is automatically spoken aloud. This provides passive, low-distraction narration.
An MCP server provides a speak tool that Claude can call explicitly to narrate what it's doing. This gives Claude control over when and what to speak.
Both behaviors active simultaneously for maximum audio feedback.
All modes use:
aplay, paplay, or ffplay for audio playback
# Debian/Ubuntu
sudo apt install alsa-utils
afplay)winsound)Open Claude Code and run:
/install-plugin https://github.com/adjit/claude-voice
Run the install script to fetch the TTS model and dependencies:
bash scripts/install.sh
(For MCP mode) Add the MCP server:
claude mcp add claude-voice -- python /path/to/claude-voice/mcp/server.py
Restart Claude Code — narration will be active.
Clone this repository:
git clone https://github.com/adjit/claude-voice.git
cd claude-voice
Run the install script:
bash scripts/install.sh
Register the plugin:
/install-plugin file:///path/to/claude-voice
(For MCP mode) Add the MCP server:
claude mcp add claude-voice -- python /path/to/claude-voice/mcp/server.py
pip install -r requirements.txt
python -c "from src.model_manager import ensure_models; ensure_models()"
Create ~/.claude-voice.json to configure the plugin:
{
"enabled": true,
"mode": "both",
"voice": "af_bella",
"speed": 1.1,
"summary_max_length": 200
}
| Mode | Behavior |
|---|---|
"stop" | Speaks summary when Claude finishes responding (default) |
"mcp" | Claude calls speak tool explicitly for narration |
"both" | Both Stop hook and MCP server active |
| Setting | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Enable/disable narration |
mode | string | "stop" | Operation mode: "stop", "mcp", or "both" |
voice | string | "af_bella" | Kokoro voice identifier |
speed | float | 1.1 | Speech speed multiplier |
summary_max_length | int | 200 | Max characters for Stop hook summaries |
model_path | string | "models/kokoro-v0_19.onnx" | Path to ONNX model |
voices_path | string | "models/voices.json" | Path to voice configs |
Disable narration:
echo '{"enabled": false}' > ~/.claude-voice.json
Switch to MCP-only mode:
echo '{"mode": "mcp"}' > ~/.claude-voice.json