npx claudepluginhub twinpeakstownie/claude-to-speechVoice-first interaction with automatic TTS markers for Claude Code
Share bugs, ideas, or general feedback.
Voice-first interaction mode for Claude Code with automatic text-to-speech via ElevenLabs.
Claude-to-Speech is a plugin that enables automatic voice output for Claude Code responses. Instead of manually triggering TTS, Claude includes invisible markers in responses that are automatically extracted and spoken by a Stop hook.
requests library: pip install requestspython-dotenv: pip install python-dotenvmkdir -p ~/.claude/plugins/repos
cd ~/.claude/plugins/repos
git clone https://github.com/yourusername/claude-to-speech.git
claude plugin install ./claude-to-speech
.env file (see Configuration below).env file based on .env.example/plugin in Claude Code to refreshCreate a .env file in the plugin root directory:
# REQUIRED: ElevenLabs API Key
ELEVENLABS_API_KEY=your_api_key_here
# Voice ID (optional - defaults to Claude voice)
# Available names: laura, claude, rachel, domi, bella, antoni, arnold, adam, josh
# Or use a raw ElevenLabs voice ID
CLAUDE_VOICE_ID=claude
# ElevenLabs Model (optional - defaults to eleven_flash_v2_5)
# Options: eleven_flash_v2_5 (fastest), eleven_turbo_v2, eleven_multilingual_v2
ELEVENLABS_MODEL=eleven_flash_v2_5
# TTS Server URL (optional - leave empty for direct API mode)
# If you have a local TTS server, specify it here
TTS_SERVER_URL=
# Debug mode (optional - set to 1 to enable debug logging)
DEBUG=0
The plugin includes these pre-configured voices:
claude / assistant - British male voice (default)laura - American female voicerachel - Calm femaledomi - Confident femalebella - Soft femaleantoni - Well-rounded malearnold - Strong maleadam - Deep malejosh - Young maleYou can also use any ElevenLabs voice ID directly.
The plugin supports two operational modes:
When to use: Simple setup, single-user, occasional TTS use
Configuration:
TTS_SERVER_URL= # Leave empty
When to use: Multi-device setup, high-volume usage, local network integration
Configuration:
TTS_SERVER_URL=http://localhost:5001/tts # Or your server IP
Setting up a TTS server:
The plugin includes scripts/tts_server.py - a Flask-based TTS server:
# Install dependencies
pip install flask requests
# Run the server
cd scripts
python3 tts_server.py
The server listens on http://0.0.0.0:5001 by default. Point multiple Claude Code instances, mobile apps, or other devices to this server for centralized TTS.
Benefits for LAURA-style systems:
Run the /claude-to-speech:speak command (or /speak for short):
/speak
This activates voice-first mode where Claude will include TTS markers in responses.