Claude-to-Speech
A community Claude Code plugin that adds automatic text-to-speech to Claude’s responses via the ElevenLabs API. A small, focused example of the Claude Code plugin ecosystem — agent I/O tooling rather than a capability/knowledge skill.
How it works
- User activates voice mode with the
/speakslash command. - Claude embeds invisible TTS markers in its responses (e.g.
<!-- TTS: "…" -->). - A Stop hook extracts those markers from the transcript.
claude_speak.pysends the text to ElevenLabs (or a local TTS server).- Audio plays through the system’s default player.
Features
- Smart defaults: silent for code dumps (
<!-- TTS: SILENT -->), vocal for questions/confirmations. - Dual-mode: direct ElevenLabs API or a local TTS server.
- Multiple preset voices + custom voice IDs; 2-second dedup; macOS/Linux (incl. Raspberry Pi)/Windows.
Requirements & status
ElevenLabs API key, Python 3.7+, requests. MIT, ~89% Python. Early-stage community
project: 15 stars, 6 forks, 19 commits.
Where it fits
A concrete instance of the agent-skills idea — capability packaged as files an
agent loads — but on the output/UX side (voice) rather than reasoning. Sibling to
compound-engineering-plugin as another Claude Code plugin, and runs on the same
hook/slash-command surface that hosts like claude-cowork expose. A lightweight agent I/O facet of the ecosystem; notable mainly as evidence the Claude Code
plugin surface is attracting small third-party tools. Arrived via Telegram, routed here
by the hub router (../HUB.md).
Re-verified 2026-08-04 (staleness queue)
18★ / 6 forks, 19 commits, 3 open issues, 1 open PR. No release timestamps are visible, so maintenance status cannot be confirmed either way — recorded as unknown rather than assumed.
Worth stating the scale plainly, because this spoke’s other entries are three to four orders of magnitude larger: this is one person’s hook script. The mechanism it demonstrates — Claude emits invisible markers, a stop hook extracts them and routes to ElevenLabs — is a clean instance of the harness intercepting model output for a side effect, and that is why the page exists. The star count is not evidence of anything.