어떤 프로젝트인가
Voicebox는 로컬 우선(local-first) 오픈소스 AI 보이스 스튜디오입니다. 클라우드 의존 없이 음성 복제, 텍스트 음성 변환(TTS), 음성 인식(STT), 글로벌 받아쓰기, AI 에이전트 음성 출력까지 한 데 묶은 데스크톱 애플리케이션입니다.
ElevenLabs와 WisprFlow를 합친 무료 대안. 모든 처리가 로컬에서 이루어지며, API 키나 구독이 필요 없습니다.
버전 0.4.0, MIT 라이선스로 배포됩니다. Tauri + Rust 데스크톱 셸과 Python FastAPI 백엔드, React 프론트엔드로 구성된 풀스택 프로젝트입니다.
핵심 기능
아키텍처
Voicebox는 세 가지 레이어로 분리된 구조입니다.
프로젝트 디렉토리
기술 스택
| 레이어 | 기술 |
|---|---|
| 데스크톱 앱 | Tauri (Rust) |
| 프론트엔드 | React, TypeScript, Tailwind CSS v4 |
| 상태 관리 | Zustand, React Query |
| 백엔드 | FastAPI (Python) |
| TTS 엔진 | Qwen3-TTS, Chatterbox, Kokoro, TADA 등 7종 |
| STT | Whisper / Whisper Turbo |
| 로컬 LLM | Qwen3 (0.6B / 1.7B / 4B) |
| MCP 서버 | FastMCP (Streamable HTTP + stdio) |
| 오디오 이펙트 | Pedalboard (Spotify) |
| 추론 | MLX (Apple Silicon) / PyTorch (CUDA/ROCm/XPU) |
| 데이터베이스 | SQLite |
| 빌드 오케스트레이션 | just (justfile) |
설치와 실행
필수 조건
- Bun 1.0.0 이상
- Rust (stable)
- Python 3.11 이상
- macOS: Xcode Command Line Tools
빠른 시작
1# 저장소 클론 2git clone https://github.com/jamiepine/voicebox.git 3cd voicebox 4 5# just 설치 (아직 없다면) 6brew install just 7 8# 전체 셋업 (Python venv + JS/Python 의존성) 9just setup 10 11# 개발 모드 실행 (백엔드 + 데스크톱 앱) 12just dev
모델은 HuggingFace Hub에서 최초 실행 시 자동 다운로드됩니다. Whisper, Qwen3-TTS 등 보통 2-4 GB 정도입니다.
백엔드만 실행하려면 just dev-backend, 프론트엔드만 실행하려면 just dev-frontend, 웹 버전은 just dev-web을 사용합니다.
API 사용법
FastAPI 백엔드는 http://127.0.0.1:17493에서 REST API를 제공합니다.
음성 생성
1curl -X POST http://127.0.0.1:17493/generate \ 2 -H "Content-Type: application/json" \ 3 -d '{ 4 "text": "안녕하세요, 반갑습니다", 5 "profile_id": "abc123", 6 "language": "ko" 7 }'
에이전트 음성 출력
1curl -X POST http://127.0.0.1:17493/speak \ 2 -H "Content-Type: application/json" \ 3 -H "X-Voicebox-Client-Id: my-script" \ 4 -d '{ 5 "text": "Deploy complete.", 6 "profile": "Morgan" 7 }'
음성 인식
1curl -X POST http://127.0.0.1:17493/transcribe \ 2 -F "audio=@recording.wav" \ 3 -F "model=whisper-turbo"
MCP 통합 — 에이전트에 목소리 달기
Voicebox에 MCP(Model Context Protocol) 서버가 내장되어 있어, 코딩 에이전트에 음성 출력을 한 줄로 연결할 수 있습니다.
Claude Code 연결
1claude mcp add voicebox \ 2 --transport http \ 3 --url http://127.0.0.1:17493/mcp \ 4 --header "X-Voicebox-Client-Id: claude-code"
제공되는 MCP 도구
| 도구 | 설명 |
|---|---|
| voicebox.speak | 텍스트를 음성으로 출력합니다 |
| voicebox.transcribe | 오디오를 텍스트로 변환합니다 |
| voicebox.list_captures | 저장된 녹음 목록을 반환합니다 |
| voicebox.list_profiles | 사용 가능한 음성 프로필을 나열합니다 |
에이전트별 음성 바인딩이 가능합니다. Claude Code에는 Morgan 목소리, Cursor에는 다른 목소리를 지정하는 식으로요.
7개 TTS 엔진 비교
| 엔진 | 특징 |
|---|---|
| Qwen3-TTS (0.6B) | 가벼운 모델. 빠른 생성 |
| Qwen3-TTS (1.7B) | 표준 모델. 품질과 속도 균형 |
| Qwen CustomVoice | 50개 이상 프리셋 보이스 |
| LuxTTS | 경량 고품질 엔진 |
| Chatterbox | 23개 언어 다국어 지원 |
| Chatterbox Turbo | 감정 태그 지원 ([laugh], [sigh], [gasp]) |
| HumeAI TADA | 표현력 높은 감정 음성 |
| Kokoro | 안정적이고 자연스러운 합성 |
무제한 길이 생성이 가능합니다. 긴 텍스트는 자동 청킹 후 크로스페이드로 이어붙입니다. 비동기 생성 큐가 직렬 실행되어 GPU 경합을 방지합니다.
감정 표현 태그
Chatterbox Turbo 엔진은 텍스트 안에 감정 태그를 삽입할 수 있습니다.
1[laugh] 그래서 제가 말했잖아요, 2이건 정말 [gasp] 놀라운 일이에요. 3[sigh] 하지만 다시 시작해야겠죠.
GPU 지원
| 플랫폼 | 백엔드 |
|---|---|
| macOS (Apple Silicon) | MLX (Metal) — Neural Engine로 4-5배 가속 |
| Windows / Linux (NVIDIA) | PyTorch (CUDA) |
| Linux (AMD) | PyTorch (ROCm) |
| Windows (범용 GPU) | DirectML |
| Intel Arc | IPEX / XPU |
| 모든 환경 | CPU (느리지만 동작함) |
보이스 퍼스낼리티
각 음성 프로필에 자유 형식 페르소나를 붙일 수 있습니다. 로컬 Qwen3 LLM이 텍스트를 먼저 페르소나에 맞게 변환한 뒤 TTS로 넘깁니다.
personality: true 파라미터와 함께 텍스트 전송