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).