Skip to main content

VoiceMode - Voice interaction capabilities for AI assistants (formerly voice-mcp)

Project description

VoiceMode

Install via: uv tool install voice-mode | getvoicemode.com

PyPI Downloads PyPI Downloads PyPI Downloads

Natural voice conversations for AI assistants. VoiceMode brings human-like voice interactions to Claude Code, AI code editors through the Model Context Protocol (MCP).

🖥️ Compatibility

Runs on: Linux • macOS • Windows (WSL) • NixOS | Python: 3.10+

✨ Features

  • 🎙️ Natural Voice Conversations with Claude Code - ask questions and hear responses
  • 🗣️ Supports local Voice Models - works with any OpenAI API compatible STT/TTS services
  • ⚡ Real-time - low-latency voice interactions with automatic transport selection
  • 🔧 MCP Integration - seamless with Claude Code (and other MCP clients)
  • 🎯 Silence detection - automatically stops recording when you stop speaking (no more waiting!)
  • 🔄 Multiple transports - local microphone or LiveKit room-based communication

🎯 Simple Requirements

All you need to get started:

  1. 🎤 Computer with microphone and speakers
  2. 🔑 OpenAI API Key (Recommended, if only as a backup for local services)

Quick Start

Automatic Installation (Recommended)

Install Claude Code with VoiceMode configured and ready to run on Linux, macOS, and Windows WSL:

# Download and run the installer
curl -O https://getvoicemode.com/install.sh && bash install.sh

# While local voice services can be installed automatically, we recommend
# providing an OpenAI API key as a fallback in case local services are unavailable
export OPENAI_API_KEY=your-openai-key  # Optional but recommended

# Start a voice conversation
claude converse

This installer will:

  • Install all system dependencies (Node.js, audio libraries, etc.)
  • Install Claude Code if not already installed
  • Configure VoiceMode as an MCP server
  • Set up your system for voice conversations

Manual Installation

For manual setup steps, see the Getting Started Guide.

🎬 Demo

Watch VoiceMode in action with Claude Code:

VoiceMode Demo

The converse function makes voice interactions natural - it automatically waits for your response by default, creating a real conversation flow.

Installation

Prerequisites

  • Python >= 3.10
  • Astral UV - Package manager (install with curl -LsSf https://astral.sh/uv/install.sh | sh)
  • OpenAI API Key (or compatible service)

System Dependencies

Ubuntu/Debian
sudo apt update
sudo apt install -y ffmpeg libasound2-dev libasound2-plugins libportaudio2 portaudio19-dev pulseaudio pulseaudio-utils python3-dev 

Note for WSL2 users: WSL2 requires additional audio packages (pulseaudio, libasound2-plugins) for microphone access.

Fedora/RHEL
sudo dnf install alsa-lib-devel ffmpeg portaudio-devel python3-devel
macOS
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install dependencies
brew install ffmpeg node portaudio
Windows (WSL)

Follow the Ubuntu/Debian instructions above within WSL.

NixOS

VoiceMode includes a flake.nix with all required dependencies. You can either:

  1. Use the development shell (temporary):
nix develop github:mbailey/voicemode
  1. Install system-wide (see Installation section below)

Quick Install

# Using Claude Code (recommended)
claude mcp add --scope user voicemode uvx --refresh voice-mode

Configuration for AI Coding Assistants

📖 Looking for detailed setup instructions? Check our comprehensive Getting Started Guide for step-by-step instructions!

Below are quick configuration snippets. For full installation and setup instructions, see the integration guides above.

Claude Code (CLI)
claude mcp add --scope user voicemode -- uvx --refresh voice-mode

Or with environment variables:

claude mcp add --scope user --env OPENAI_API_KEY=your-openai-key voicemode -- uvx --refresh voice-mode

Alternative Installation Options

From source
git clone https://github.com/mbailey/voicemode.git
cd voicemode
uv tool install -e .
NixOS Installation Options

1. Install with nix profile (user-wide):

nix profile install github:mbailey/voicemode

2. Add to NixOS configuration (system-wide):

# In /etc/nixos/configuration.nix
environment.systemPackages = [
  (builtins.getFlake "github:mbailey/voicemode").packages.${pkgs.system}.default
];

3. Add to home-manager:

# In home-manager configuration
home.packages = [
  (builtins.getFlake "github:mbailey/voicemode").packages.${pkgs.system}.default
];

4. Run without installing:

nix run github:mbailey/voicemode

Configuration

Quick Setup

The only required configuration is your OpenAI API key:

export OPENAI_API_KEY="your-key"

Local STT/TTS Services

For privacy-focused or offline usage, VoiceMode supports local speech services:

  • Whisper.cpp - Local speech-to-text with OpenAI-compatible API
  • Kokoro - Local text-to-speech with multiple voice options

These services provide the same API interface as OpenAI, allowing seamless switching between cloud and local processing.

Troubleshooting

Common Issues

  • No microphone access: Check system permissions for terminal/application
    • WSL2 Users: Additional audio packages (pulseaudio, libasound2-plugins) required for microphone access
  • UV not found: Install with curl -LsSf https://astral.sh/uv/install.sh | sh
  • OpenAI API error: Verify your OPENAI_API_KEY is set correctly
  • No audio output: Check system audio settings and available devices

Audio Saving

To save all audio files (both TTS output and STT input):

export VOICEMODE_SAVE_AUDIO=true

Audio files are saved to: ~/.voicemode/audio/YYYY/MM/ with timestamps in the filename.

Documentation

📚 Read the full documentation at voice-mode.readthedocs.io

Getting Started

Development

Service Guides

Links

Community

See Also

License

MIT - A Failmode Project


mcp-name: com.failmode/voicemode

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

voice_mode-5.1.2.tar.gz (320.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voice_mode-5.1.2-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file voice_mode-5.1.2.tar.gz.

File metadata

  • Download URL: voice_mode-5.1.2.tar.gz
  • Upload date:
  • Size: 320.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for voice_mode-5.1.2.tar.gz
Algorithm Hash digest
SHA256 107135953b722ba39f918b4b9ccf63aea4e495dd62a30a40cc8116779697d257
MD5 932cc679ca1941e8f6a170f98933cae8
BLAKE2b-256 4ef990f36605c47ba8ad2693f24db52c4cd7735b64da9cdba6a43debee648e38

See more details on using hashes here.

Provenance

The following attestation bundles were made for voice_mode-5.1.2.tar.gz:

Publisher: publish-pypi-and-mcp.yml on mbailey/voicemode

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file voice_mode-5.1.2-py3-none-any.whl.

File metadata

  • Download URL: voice_mode-5.1.2-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for voice_mode-5.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dd5fef8be4fc6c1a389351a973aad346d90402370445ab0f9b268f63267c5184
MD5 998aa60fe874345d6e48e99a92985df4
BLAKE2b-256 728106bd7a0722fb3ffdc9c0c2b342126f91735559b308f92867a1c9bc9fbd91

See more details on using hashes here.

Provenance

The following attestation bundles were made for voice_mode-5.1.2-py3-none-any.whl:

Publisher: publish-pypi-and-mcp.yml on mbailey/voicemode

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page