Raz
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Razstart listening so I can speak my next command"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Raz — Voice Interface for Claude Code
Talk to Claude Code with your voice. Claude talks back. Everything runs locally on your Mac — no cloud APIs, no subscriptions, no data leaves your machine.
Raz (from Aramaic רָז, "mystery revealed") gives Claude Code a voice and ears using kokoro-mlx for speech and mlx-whisper for listening, both optimized for Apple Silicon.
How It Works
You speak (hold Right Option key) ──► Whisper transcribes ──► text goes to Claude
Claude responds ──► auto-speak reads the response aloud through your speakersThat's it. When Raz is on, you have a voice conversation with Claude. Code blocks and tables are silently skipped — only prose is spoken.
Related MCP server: Voice MCP
What You Need
Requirement | Why |
Apple Silicon Mac (M1/M2/M3/M4) | kokoro-mlx and mlx-whisper only run on Apple Silicon |
Python 3.12 | Pinned version — kokoro-mlx requires it |
The CLI this integrates with | |
Python package manager (handles everything) | |
jq | JSON processing for the CLI ( |
Setup
The whole setup takes about 5 minutes. Every step is copy-paste.
Step 1: Clone and install
git clone https://github.com/Mateob6/claude-voice-interaction.git
cd claude-voice-interaction
uv syncThis downloads the code and installs all Python dependencies (kokoro-mlx, mlx-whisper, FastAPI, pynput, etc.) in an isolated virtual environment.
Step 2: Install the CLI
mkdir -p ~/.local/bin
ln -sf "$(pwd)/scripts/raz" ~/.local/bin/raz
chmod +x scripts/raz scripts/start_server.sh scripts/stop_server.shMake sure ~/.local/bin is in your PATH. If it's not:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcVerify it works:
raz helpStep 3: Register the MCP server
This lets Claude Code control Raz through 10 built-in tools (speak, change voice, start/stop listening, etc.):
claude mcp add raz -- uv run --directory "$(pwd)" python -m raz.mcp_serverStep 4: Set up auto-speak
This hook makes Claude's responses automatically spoken aloud. Add it to your Claude Code settings:
cat ~/.claude/settings.jsonIf the file exists, add the hooks section. If it doesn't, create it:
{
"hooks": {
"Stop": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "/FULL/PATH/TO/claude-voice-interaction/hooks/stop_hook.sh",
"timeout": 30
}
]
}
]
}
}Important: Replace /FULL/PATH/TO/claude-voice-interaction with the actual path where you cloned the repo. You can get it with pwd while inside the project directory.
Step 5: First run
raz startThis starts two things:
The TTS server (text-to-speech) — loads the kokoro-mlx model (~10 seconds first time)
The STT daemon (speech-to-text) — listens for the Right Option key
You should see:
=== Starting Raz ===
Starting Raz TTS server (background) on port 8787...
Raz ready!
Starting STT daemon (lang=es)...
Loading Whisper model. ready!
PID: 12345Test it:
raz say "Hello, I can speak now"If you hear the voice, everything is working. Stop Raz with:
raz stopUsing Raz
Start a voice session
raz start # start voice + mic
raz stop # stop everything
raz status # check what's runningTalk to Claude (push-to-talk)
Hold Right Option (⌥) on your keyboard
Speak your message
Release the key
Your words are transcribed and pasted into Claude Code
You'll hear a Tink sound when recording starts and a Pop when it stops.
First time: macOS will ask for Accessibility permission for your terminal app. Grant it — pynput needs it to detect the hotkey globally.
First press: The Whisper model loads on first use (~3 seconds). After that, transcription is near-instant. The model auto-unloads after 5 minutes of idle to free memory.
Change the voice
raz voice af_heart # switch to English female (best quality)
raz voice em_alex # switch to Spanish male (default)
raz voice bm_fable # switch to British storyteller
raz voices # see all 54 voicesAdjust speed
raz speed 1.5 # faster
raz speed 0.8 # slower
raz speed 1.0 # normalOne-shot transcription
Record audio and copy the transcription to your clipboard (without the daemon):
raz listen # Spanish (default)
raz listen en # English
# Press Ctrl+C when done speakingSet up a keyboard shortcut (optional)
Toggle Raz on/off from any app with a global keyboard shortcut:
raz shortcut installThen assign the shortcut:
System Settings → Keyboard → Keyboard Shortcuts → Services → General
Find "Activar Raz"
Click "Add Shortcut" and press your preferred key combo (e.g., ⌃⌘R)
Now that key combo toggles Raz on/off from anywhere, with a macOS notification.
Voices
54 voices across 10 languages. Highlights:
ID | Language | Gender | Character |
| Spanish | ♂ | Default. Natural, clear |
| Spanish | ♀ | Warm, expressive |
| English | ♀ | Best overall quality |
| English | ♂ | Deep, clear |
| British | ♂ | Storytelling voice |
| French | ♀ | Clear, natural |
| Italian | ♀ | Warm, melodic |
| Japanese | ♀ | Standard |
| Mandarin | ♀ | Energetic |
| Portuguese | ♀ | Natural |
Full list: raz voices
Configuration
Auto-speak modes
Mode | What happens |
| Speaks prose, silently skips code and tables (default) |
| Speaks everything |
| Nothing auto-speaks — only explicit |
raz mode smart # recommended
raz mode auto # hear everything
raz mode off # silent, use speak() when neededLanguage detection
Raz auto-detects whether text is Spanish or English and switches voices accordingly. If you set em_alex (Spanish male) and Claude responds in English, Raz automatically switches to am_adam (English male) for that response, then back.
STT language
The push-to-talk daemon defaults to Spanish. Start it with a different language:
raz stt start en # English
raz stt start es # Spanish (default)Architecture
Claude Code
├── MCP tools (10) ──► localhost:8787 (TTS: kokoro-mlx)
│ ──► raz.stt.daemon (STT: control)
├── Stop hook ──► localhost:8787/auto-speak
├── STT daemon (pynput + mlx-whisper) ──► clipboard ──► paste
└── CLI (raz) ──► unified lifecycleComponent | What it does | Memory |
TTS server | Speaks text through speakers (FastAPI + kokoro-mlx) | ~730 MB |
STT daemon | Listens for Right Option, transcribes with Whisper | ~2 MB idle, ~4 GB when Whisper loaded |
MCP server | 10 tools for Claude Code to control Raz | runs inside Claude Code |
Stop hook | Captures Claude's response and sends it to TTS | bash script, no memory |
The STT daemon lazy-loads Whisper on first keypress and auto-unloads after 5 minutes of idle to free ~4 GB of memory.
Troubleshooting
"Right Option doesn't do anything"
Your terminal app needs Accessibility permission. Go to System Settings → Privacy & Security → Accessibility, and add your terminal (iTerm2, Terminal.app, etc.).
"raz start hangs on 'Loading Whisper model'"
First run downloads the Whisper model (~800 MB). Check your internet connection. The model is cached after the first download.
"Port 8787 already in use"
Another instance of Raz is running. Kill it:
raz stop
# If that doesn't work:
pkill -f "raz.tts_server""Daemon won't stop"
pkill -f "run_daemon""No sound output"
Check that your Mac's audio output is set correctly (System Settings → Sound). Raz plays through the default output device.
CLI Reference
raz start # Start Raz (voice + mic)
raz stop # Stop Raz
raz on / raz off # Enable/disable Raz
raz status # Show Raz status
raz say "text" # Speak text
raz listen [lang] # Record → transcribe → clipboard
raz voice NAME # Change voice
raz voices # List all 54 voices
raz mode MODE # smart | auto | off
raz speed N # 0.5–2.0
raz stt start|stop # Mic only
raz tts start|stop # Voice only
raz shortcut install|remove # Keyboard shortcutMCP Tools
When registered as an MCP server, Claude Code gets these 10 tools:
Tool | What it does |
| Speak text aloud |
| Change voice |
| List all voices |
| Change auto-speak mode |
| Change speech speed |
| Enable/disable TTS |
| Check Raz status |
| Start push-to-talk |
| Stop push-to-talk |
| Check mic status |
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
No-data MCP handoff for local Claude Code to Codex harness moves. $49 lifetime.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables hands-free voice conversations with Claude using real-time speech recognition and text-to-speech on macOS. Creates a self-sustaining conversation loop where Claude can autonomously listen, respond, and continue the interaction without keyboard input.MIT
- FlicenseNot gradedqualityDmaintenanceEnables voice interaction with Claude Code through local speech-to-text (Whisper) and text-to-speech (Supertonic), allowing verbal input/output without external API calls.1-
- AlicenseNot gradedqualityDmaintenanceEnables bidirectional voice interaction for Claude Code using local speech-to-text and text-to-speech models optimized for Apple Silicon. It provides tools to listen to user speech via microphone and speak responses aloud through system speakers.16Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceA voice-enabled interface for Claude Desktop that supports speech-to-text input and text-to-speech output via ElevenLabs, turning Claude into a voice assistant.1-