Voice MCP for natural conversations with Claude - simple, elegant, wake-word activated
Project description
talk-to-claude 🎤
Voice MCP for natural conversations with Claude. Simple, elegant, wake-word activated.
Why?
Existing voice solutions loop endlessly, have too many features, and don't wait for you to actually speak. This MCP:
- Waits for speech - VAD-based detection, only activates when you talk
- Simple - ~400 lines of code, 10 config options
- Just works - Install, configure API key, talk
Prerequisites
- ffmpeg - Required for MP3 audio playback
# macOS brew install ffmpeg # Ubuntu/Debian sudo apt install ffmpeg # Windows winget install ffmpeg
Installation
# Install via uvx (recommended)
uvx talk-to-claude
# Or via pip
pip install talk-to-claude
Quick Start
- Set your OpenAI API key:
export OPENAI_API_KEY=sk-...
- Add to Claude Code:
claude mcp add talk-to-claude -- uvx talk-to-claude
- Start a voice conversation:
claude converse
Configuration
All configuration via environment variables (sensible defaults provided):
| Variable | Default | Description |
|---|---|---|
OPENAI_API_KEY |
(required) | Your OpenAI API key |
TTC_VOICE |
nova |
TTS voice: alloy, echo, fable, onyx, nova, shimmer |
TTC_SPEED |
1.0 |
Speech speed (0.25-4.0) |
TTC_VAD_AGGRESSIVENESS |
2 |
VAD sensitivity (0-3, higher = stricter) |
TTC_SILENCE_MS |
800 |
Silence before speech ends (ms) |
TTC_MIN_SPEECH_MS |
500 |
Minimum speech to process (ms) |
TTC_WAKE_WORD |
(none) | Optional wake word (e.g., "hey claude") |
TTC_LISTEN_TIMEOUT |
30 |
Max seconds to wait for speech |
TTC_DEBUG |
false |
Enable debug logging |
MCP Tools
converse
The main tool for voice conversations.
{
"message": "Hello! How can I help you today?",
"wait_for_response": true,
"voice": "nova",
"speed": 1.0
}
Returns:
{
"status": "success",
"message": "Hello! How can I help you today?",
"transcription": "I need help with my code"
}
speak
Text-to-speech only, no listening.
{
"message": "Got it, let me look into that."
}
listen
Listen only, no speaking. Great for continuing a conversation.
{
"timeout": 30,
"wake_word": "hey claude"
}
Wake Word Mode
Set TTC_WAKE_WORD=hey claude to enable passive listening that only activates when you say "Hey Claude":
export TTC_WAKE_WORD="hey claude"
claude converse
Now it will wait quietly until you say the wake word, then respond.
How It Works
- VAD (Voice Activity Detection) using WebRTC VAD detects when you start speaking
- Recording continues until silence is detected (configurable)
- Whisper transcribes your speech to text
- OpenAI TTS speaks Claude's response
- Repeat!
Compared to VoiceMode
| Feature | talk-to-claude | VoiceMode |
|---|---|---|
| Lines of code | ~400 | 2000+ |
| Config options | 10 | 100+ |
| Loops endlessly | No | Yes |
| Wake word | Yes | Yes |
| Multiple agents | No | Yes |
| DJ ducking | No | Yes |
We focus on doing one thing well: natural voice conversations with Claude.
Development
# Clone
git clone https://github.com/bacharyehya/talk-to-claude
cd talk-to-claude
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run locally
python -m talk_to_claude.server
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file talk_to_claude-0.1.0.tar.gz.
File metadata
- Download URL: talk_to_claude-0.1.0.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61dc123c2aaa6ff5af893c4b198b505f18da0ee5ed7f14be2ed8d9ce9d6e3b2f
|
|
| MD5 |
04be6cd6cc08e298c9e24627fd7b8173
|
|
| BLAKE2b-256 |
179930786bd1d2f1d2407233a34b1f593005639d10a7866296747c6b670fc36c
|
File details
Details for the file talk_to_claude-0.1.0-py3-none-any.whl.
File metadata
- Download URL: talk_to_claude-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3556fd3bd9093ca7a559dbe3a25f16904d2d73c3080d719fb5d38f5a46cf4696
|
|
| MD5 |
97c85be7b95124fe5b6be463ccbfe02f
|
|
| BLAKE2b-256 |
c544edd7b505b17fd93eadd02a90af417922848594cd7784391f4110186fba83
|