Voicebox — The Open-Source AI Voice Studio for Self-Hosted TTS and Voice Cloning
Voicebox — The Open-Source AI Voice Studio for Self-Hosted TTS and Voice Cloning
What is Voicebox?
Voicebox is an open-source, local-first AI voice studio that gives you a complete voice I/O stack — text-to-speech, voice cloning, speech-to-text, dictation, and agent voice output — all running on your own machine. Think of it as a self-hosted alternative to ElevenLabs (TTS) and WisprFlow (dictation) combined, with full privacy since models, voice data, and captures never leave your hardware.
GitHub: github.com/jamiepine/voicebox
Stars: ⭐ 32,000+
License: MIT
Language: TypeScript (frontend) + Python FastAPI (backend) + Rust (Tauri shell)
Website: voicebox.sh
Why this matters: Voice cloning and high-quality TTS have been locked behind cloud APIs with usage-based pricing. Voicebox brings 7 TTS engines (Qwen3-TTS, Chatterbox, Kokoro, LuxTTS, TADA), zero-shot voice cloning from seconds of audio, Whisper-based dictation, and MCP-based agent voice output to your own server or desktop. No data leaves your machine, no per-character billing.
Key Features
| Feature | Details |
|---|---|
| 7 TTS Engines | Qwen3-TTS, Qwen CustomVoice, LuxTTS, Chatterbox (2 variants), HumeAI TADA, Kokoro |
| Voice Cloning | Zero-shot cloning from a few seconds of audio, or 50+ preset voices |
| Languages | 23 languages including English, Arabic, Japanese, Hindi, Swahili |
| Speech-to-Text | OpenAI Whisper (Base to Turbo) with MLX/PyTorch acceleration |
| Post-Processing | 8 audio effects (pitch, reverb, delay, chorus, compression, filters) |
| Agent Voice | Built-in MCP server — any MCP-aware agent can speak in a cloned voice |
| Dictation | Global hotkey dictation with auto-paste (macOS), in-app mic everywhere |
| Deployment | Docker, macOS (DMG), Windows (MSI), or build from source on Linux |
Architecture Overview
Voicebox follows a layered architecture with a Tauri desktop shell wrapping a Python FastAPI backend and a React frontend. The backend orchestrates multiple TTS engines, Whisper STT, a bundled Qwen3 LLM, and audio effect pipelines, all exposed through a REST API and an MCP server for AI agent integration.
Here's how the components interact:
- User interacts through the React frontend (web or Tauri desktop) or directly via REST API
- The FastAPI Backend routes requests to the appropriate engine: TTS, STT (Whisper), or LLM (Qwen3)
- 7 TTS engines handle text-to-speech generation with different strengths (speed, quality, language coverage)
- Whisper STT transcribes audio from dictation or uploaded files
- Qwen3 LLM powers voice personalities (compose, rewrite) and dictation refinement
- Audio Effects Pipeline (Spotify Pedalboard) applies post-processing: pitch shift, reverb, delay, etc.
- SQLite Database persists voice profiles, generations, captures, and settings
- MCP Server (mounted at
/mcp) exposesspeak,transcribe,list_captures, andlist_profilesto AI agents - Inference backends select automatically: MLX (Apple Silicon), CUDA (NVIDIA), ROCm (AMD), or CPU fallback
The architecture is designed to be completely offline-capable — all models download on first use and run locally from then on.
Prerequisites
- A server with Docker and Docker Compose installed (recommended for self-hosting)
- Or a desktop machine (macOS/Windows/Linux) for the native app
- GPU recommended for real-time TTS: NVIDIA GPU with 4GB+ VRAM, Apple Silicon, or AMD ROCm-compatible card
- At least 8GB RAM (16GB recommended for multi-engine use)
- A domain or IP to access the web interface (optional, for Docker deployment)
- Reverse proxy (Nginx, Caddy, Traefik) for TLS if exposing publicly
Step-by-Step Setup Guide (Docker)
Step 1: Create the Project Directory
mkdir -p voicebox/output && cd voicebox
Step 2: Create docker-compose.yml
Create a docker-compose.yml file:
services:
voicebox:
build: https://github.com/jamiepine/voicebox.git
container_name: voicebox
restart: unless-stopped
ports:
- "127.0.0.1:17493:17493"
volumes:
- ./output:/app/data/generations
- voicebox-data:/app/data
- huggingface-cache:/home/voicebox/.cache/huggingface
environment:
- LOG_LEVEL=info
- NUMBA_CACHE_DIR=/tmp/numba_cache
deploy:
resources:
limits:
cpus: '4'
memory: 8G
networks:
voicebox-net:
driver: bridge
volumes:
voicebox-data:
huggingface-cache:
Note: For GPU acceleration, add
deploy.resources.reservations.devicesto your compose file. See the Voicebox Docker docs for GPU-specific configurations.
Step 3: Start Voicebox
docker compose up -d
On first launch, Voicebox will download the required model files (TTS engines, Whisper, Qwen3 LLM). This may take 5-15 minutes depending on your internet connection and which engines you use.
Step 4: Access the Web Interface
Open your browser and navigate to:
http://localhost:17493
The first-run wizard will guide you through:
- Selecting your default TTS engine
- Downloading models
- Creating your first voice profile (upload a short audio sample or choose a preset)
Step 5: Create Your First Voice Profile
- Click Profiles in the sidebar
- Click New Profile
- Upload a 10-30 second audio clip (clean speech works best)
- Enter a name for the profile
- Select your audio source format
- Click Create
Voicebox will process the sample and generate a voice model. You can now use this voice for TTS generation.
Step 6: Generate Speech
# Using the REST API
curl -X POST http://127.0.0.1:17493/generate \
-H "Content-Type: application/json" \
-d '{
"text": "Hello world, this is my cloned voice speaking!",
"profile_id": "<your-profile-id>",
"language": "en"
}'
Or use the web UI: navigate to Generate, select your voice profile, type your text, and click the generate button.
Connecting AI Agents to Voicebox (MCP)
Voicebox ships a built-in MCP server so your AI coding agents can speak in cloned voices:
Claude Code
claude mcp add voicebox \
--transport http \
--url http://127.0.0.1:17493/mcp \
--header "X-Voicebox-Client-Id: claude-code"
Cursor / Windsurf / VS Code
Add to your mcpServers configuration:
{
"mcpServers": {
"voicebox": {
"url": "http://127.0.0.1:17493/mcp",
"headers": { "X-Voicebox-Client-Id": "cursor" }
}
}
}
Then in any agent conversation:
// The agent calls voicebox.speak to output audio
await voicebox.speak({
text: "Build complete. All tests passing.",
profile: "Morgan"
});
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
LOG_LEVEL |
info |
Logging verbosity (debug, info, warning, error) |
NUMBA_CACHE_DIR |
/tmp/numba_cache |
Numba JIT cache directory |
VOICEBOX_MODELS_DIR |
/app/data |
Custom models directory |
Models Directory
Models are stored in the huggingface-cache volume and persist across container restarts. You can specify a custom path with the VOICEBOX_MODELS_DIR environment variable.
TTS Engine Selection
Voicebox supports 7 TTS engines, each with different strengths:
| Engine | Languages | Best For |
|---|---|---|
| Qwen3-TTS (0.6B/1.7B) | 10 | High-quality multilingual cloning, delivery instructions |
| Qwen CustomVoice | 10 | 9 curated presets, natural-language delivery control |
| LuxTTS | English | Lightweight (~1GB VRAM), 150x realtime on CPU |
| Chatterbox Multilingual | 23 | Broadest language coverage |
| Chatterbox Turbo | English | Fast 350M model, paralinguistic tags ([laugh], [sigh]) |
| HumeAI TADA (1B/3B) | 10 | 700s+ coherent audio, text-acoustic alignment |
| Kokoro | 8 | 50 preset voices, tiny 82M model, fast CPU |
Switch engines per-generation from the web UI or via the engine parameter in the API.
Verification Checklist
Once Voicebox is running, verify everything works:
- Web UI loads at
http://localhost:17493 - First-run wizard completes successfully
- Models download without errors
- A voice profile can be created from an audio sample
- TTS generation produces audible speech
- REST API responds on port 17493
- MCP server responds at
http://localhost:17493/mcp - Whisper-based dictation captures and transcribes audio
- Audio effects (pitch, reverb) modify output as expected
- Voice personalities generate in-character text
Resources
- GitHub: github.com/jamiepine/voicebox
- Documentation: docs.voicebox.sh
- Website: voicebox.sh
- Downloads: github.com/jamiepine/voicebox/releases
- Troubleshooting: docs.voicebox.sh/overview/troubleshooting
- License: MIT