voicebox

jamiepineMIT活跃维护

开源 AI 语音工作室,支持声音克隆、语音听写和语音生成,基于 Qwen3-TTS 与 Whisper,可在 CUDA 或 MLX 上本地运行。

The open-source AI voice studio. Clone, dictate, create.

v0.5.0发布于 2026-04-25 22:46 UTC60,349star +596 / 7 天7,579fork同步于 2026-11-10 11:19 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/jamiepine/voicebox.git
cd voicebox
just setup
just dev
硬件要求按 README 说明

README 未给出具体显存要求;按平台区分后端:macOS 走 MLX/Metal,Windows 走 CUDA,另支持 Linux、AMD ROCm、Intel Arc 和 Docker。

支持 Apple Silicon需要 CUDA支持 ROCm / AMD有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

本地运行的 AI 语音工作室,一个应用搞定声音克隆、语音合成与全局听写

开源 AI 语音工作室,支持声音克隆、语音听写和语音生成,基于 Qwen3-TTS 与 Whisper,可在 CUDA 或 MLX 上本地运行。

核心能力

  • 用几秒参考音频做零样本声音克隆
  • 集成 8 个 TTS 引擎,可按次切换
  • 支持 23 种语言与 50+ 预设音色
  • 全局热键听写,Whisper 转写并自动粘贴
  • 内置 REST API 与 MCP 服务器供 agent 调用

容易踩的坑

需先自行安装 just、Bun、Rust、Python 3.12 与 Tauri 前置依赖,macOS 还需 Xcode;Linux 暂无预编译包,只能从源码构建;首次使用需下载各 TTS 模型,模型下载失败可查 Troubleshooting 文档。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.5.0
  1. v0.5.0最新正式版2026-04-25 · 2026-04-25 22:46 UTC

    The Capture release.

    Voicebox stops being just a voice-cloning studio and becomes a full AI voice studio. Hold a key anywhere on your machine, speak, release — the transcript lands in the focused text field. Flip the primitive around and any MCP-aware agent — Claude Code, Cursor, Spacebot — speaks back through an on-screen pill in one of your cloned voices. A local LLM sits between the two, so transcripts come out clean and voice profiles can carry a personality that reshapes what the agent says before it gets spoken.

    Dictation — speak anywhere, paste anywhere

    • Global hotkey capture. Hold a customizable chord anywhere on your machine (defaults: right-Cmd + right-Option on macOS, right-Ctrl + right-Shift on Windows), speak, release. A floating on-screen pill walks through recording → transcribing → refining → done with a live elapsed timer. The transcript lands as clean text.
    • Push-to-talk and toggle modes, each with its own chord. The default toggle chord adds Space to the push-to-talk chord. Holding PTT and tapping Space mid-hold upgrades a hold into a hands-free session without a gap in the recording.
    • Auto-paste into the focused app. Once transcription finishes, Voicebox synthesizes a paste into whatever text field had focus when you started the chord — not wherever focus drifted while you were talking. Works across Dvorak / AZERTY layouts. Your clipboard is saved before and restored after.
    • Chord picker UI. Customize either chord from Settings → Captures by holding the keys you want. Left/right modifier badges show whether a key is the left or right variant.
    • Defaults stay out of your way. macOS defaults avoid left-hand Cmd+Option chords so the system shortcuts they collide with stay yours. Windows defaults route around AltGr collisions on German / French / Spanish layouts.
    • Accessibility permission is scoped. If macOS Accessibility isn't granted, dictation still runs and transcripts still land in the Captures tab — only synthetic paste is disabled. The permission prompt lives inline next to the auto-paste toggle, not as a global banner.

    Personality — voice profiles that speak for themselves

    Voice profiles now carry an optional personality — a free-form description of who this voice is, up to 2000 characters. When set, two new controls appear next to the generate button, each powered by a new Qwen3 LLM running entirely locally:

    • Compose — the shuffle button drops a fresh in-character line into the textarea. Click again for variety, edit before speaking.
    • Speak in character — the wand toggle runs your input through the personality LLM before TTS, preserving every idea but delivering it in the character's voice.

    The same LLM doubles as the refinement model, so there's one local LLM in the app, not two.

    API surface. POST /generate, POST /speak, and the MCP voicebox.speak tool accept personality: bool. POST /profiles/{id}/compose powers the shuffle button. MCP client bindings carry a default_personality: bool that applies when personality isn't passed explicitly.

    Agents — any MCP-aware agent gets a voice

    Voicebox ships a built-in Model Context Protocol server at http://127.0.0.1:17493/mcp so Claude Code, Cursor, Windsurf, Cline, VS Code MCP extensions — any MCP-aware agent — can call into your local Voicebox install. Four tools ship with dotted names:

    • voicebox.speak — speak text in any voice profile, with optional personality: true to run through the profile's personality LLM first
    • voicebox.transcribe — Whisper transcription of a base64 blob or an absolute local path. Path mode is restricted to loopback callers so a Voicebox bound on 0.0.0.0 doesn't double as an unauthenticated arbitrary-local-file read primitive.
    • **`voic
  2. v0.4.52026-04-22 · 2026-04-22 07:03 UTC
    查看更新说明

    Second hotfix for the "offline mode is enabled" crash on model load. 0.4.4 reverted the inference-path offline guards but kept the same trap on the load path, so users who updated to 0.4.4 kept hitting the exact error the release was supposed to fix (#526). This release removes the load-path guards and patches the transformers tokenizer load to be robust to HuggingFace metadata failures at the source, so the class of bug can't recur.

    Reliability

    • Load no longer fails with "offline mode is enabled" (#530, fixes #526). transformers 4.57.x added an unconditional huggingface_hub.model_info() call inside AutoTokenizer.from_pretrained (via _patch_mistral_regex) that runs for every non-local repo load, regardless of cache state or whether the target model is actually a Mistral variant. The load-time HF_HUB_OFFLINE guard from 0.4.2 turned that into a hard crash for cached online users the moment 0.4.4 removed the inference-path guard that had been masking the problem. Fix wraps _patch_mistral_regex so any exception from the HF metadata check is caught and the tokenizer is returned unchanged — matching the success-path behavior for non-Mistral repos. The wrapper installs at backend.backends import time so it covers Qwen Base, Qwen CustomVoice, TADA, and every other transformers-backed engine on Windows, Linux, and CUDA alike. The load-time force_offline_if_cached guards were removed — with the wrapper in place they provide zero value and only risk re-introducing the same failure mode.
    • No more 30s pause when generating without a network. The HuggingFace metadata timeout called out as a known caveat in 0.4.4 is covered by the same patch; offline users no longer wait for the check to time out before load completes.
  3. v0.4.42026-04-21 · 2026-04-21 12:10 UTC
    查看更新说明

    Hotfix for a regression in 0.4.3 where generation and transcription could fail outright with "offline mode is enabled" even when the user was online.

    Reliability

    • Inference no longer fails with "offline mode is enabled" while online (#524, reverts the inference-path guards from #503). 0.4.3 wrapped every inference body (generate, transcribe, create_voice_clone_prompt) with a process-wide HF_HUB_OFFLINE flip to stop lazy HuggingFace lookups from hanging when the network drops mid-inference (#462). That flag also blocks legitimate metadata calls (e.g. HfApi().model_info for revision resolution) so online users started seeing generation fail outright. Inference now runs with the process's default HF state. Load-time offline guards — which weren't the source of the regression — stay in place.

    Known caveat: users generating without an internet connection may see brief pauses during inference while HuggingFace metadata lookups time out (typically ~30s, after which the library recovers). A proper offline-mode toggle is planned for 0.4.5.

  4. v0.4.3voicebox v0.4.32026-04-21 · 2026-04-21 07:51 UTC
    查看更新说明

    A patch focused on two user-impacting reliability fixes: macOS DMG notarization (unblocks brew install voicebox on macOS 15 Sequoia and fixes spurious "app isn't signed" Gatekeeper dialogs on older Intel Macs) and Kokoro Japanese voice initialization on fresh installs.

    macOS

    • DMGs are now notarized and stapled (#523). Tauri's bundler notarizes the .app inside the DMG but ships the DMG wrapper itself unnotarized. Gatekeeper rejects that on macOS 15 Sequoia (confirmed by Homebrew Cask CI failing on both arm and intel Sequoia runners) and causes the "the app is not signed" dialog on older Intel Macs when Apple's notarization servers are slow or unreachable (#509). The release workflow now submits each DMG to notarytool, staples the ticket, verifies with spctl, and overwrites the draft-release asset tauri-action uploaded. Adds ~5-10 min per macOS job.

    Backend

    • Kokoro Japanese voices no longer crash on fresh installs (#521, fixes #514). misaki[ja] pulls in fugashi, which needs a MeCab dictionary on disk. The unidic package that was being installed ships no data and expects a ~526MB runtime download that just setup doesn't run (and which wouldn't survive PyInstaller anyway). Swapped to unidic-lite, which bundles a MeCab-compatible dict inside the wheel (~50MB). Collected in build_binary.py so frozen builds pick up unidic_lite/dicdir/.
  5. v0.4.2voicebox v0.4.22026-04-21 · 2026-04-21 00:39 UTC
    查看更新说明

    This release localizes the entire app. English, Simplified Chinese (zh-CN), Traditional Chinese (zh-TW), and Japanese (ja) are wired up end-to-end across every tab, modal, dialog, and toast — 559 translation keys per locale, parity verified. Plus a batch of reliability fixes: offline-mode now actually stays offline, Chatterbox accepts reference samples it used to reject, MLX Qwen 0.6B points at the right repo, and macOS system audio survives backgrounding.

    Internationalization (#508)

    • i18next foundation with an in-app language switcher that re-renders the tree on change — lazy-loaded components were holding stale strings without an explicit key-bump on the React root.
    • Four locales at full coverage: English, Simplified Chinese, Traditional Chinese, Japanese. No partial/English-fallback surfaces.
    • Every user-visible surface translated: Stories (list, content editor, dialogs, toasts), Effects (list, detail, chain editor, built-in preset names), Voices (table, search, inspector, Create/Edit modal, audio sample panels), Audio Channels (list, dialogs, device picker), history + story dropdown menus, ProfileCard / ProfileList / HistoryTable, and the unsupported-model note.
    • Relative dates localize via date-fns locale objects (3 days ago → 3 天前 / 3 日前) — Intl.RelativeTimeFormat doesn't produce the phrasing we use in the history table.
    • Dev-build version suffix (v0.4.2 (dev) / (开发版) / (開發版) / (開発版)) is now locale-aware.
    • 559 translation keys across all four locales.

    Reliability

    • HF_HUB_OFFLINE now guards every inference path (#503) — some engines were still attempting a HuggingFace metadata roundtrip on first load when offline mode was enabled, causing hangs on airgapped or flaky networks.
    • Chatterbox reference samples are preprocessed instead of rejected (#502) — samples outside the expected sample rate or channel layout are resampled to match, rather than failing with an opaque error.
    • MLX Qwen 0.6B repo path fixed (#501) — now points at the published mlx-community repo so the model actually downloads on Apple Silicon.
    • macOS system audio survives backgrounding (#486, closes #41) — WKWebView was tearing down the audio session when the app lost focus, silently killing system-audio capture.
    • MLX backend miniaudio dependency pinned (#506) — mlx_audio.stt needs it at runtime and nothing else transitively pulled it in, so --no-deps installs were breaking on first use.

    Landing / Docs

    • New /download page (#487) — no more dumping first-time visitors onto the GitHub releases list. The API example snippet on the landing page also got an accuracy pass.
    • Download redirects work behind reverse proxies (#498) — uses the public origin instead of localhost when resolving platform-specific installer URLs.
    • MDX docs audited against the multi-engine backend (#484) — stale single-engine assumptions removed.
    • Three more tutorials + mobile navbar / hero CTA fixes (#483).

    Linux

    • Still not shipping. The re-enable attempt (#488) landed on main but CI still hangs in the tauri-action bundler step on ubuntu-22.04 — no output for 25+ minutes after rpm bundling, even with createUpdaterArtifacts: false and --bundles deb,rpm. The matrix entry is disabled again for 0.4.2; the ubuntu-specific setup steps stay in

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Built with Capy

    Voicebox is built and maintained with Capy. A Capy Captain thread directs the project day to day, and its crew threads test, rebase, and review each contributor pull request on Linux and on a Mac Studio before Jamie merges it. Voicebox stays free and open source under the MIT license, with no splash screens, banners, or interruptions in the app.

    Try Capy → · How Voicebox is built


    What is Voicebox?

    Voicebox is a local-first AI voice studio — a free and open-source alternative to ElevenLabs and WisprFlow in one app. Clone voices from a few seconds of audio, generate speech in 23 languages across 8 TTS engines, dictate into any text field with a global hotkey, and give any MCP-aware AI agent a voice of your choosing.

    The two cloud incumbents sit on opposite halves of the voice I/O loop — ElevenLabs on output, WisprFlow on input. Voicebox does both, bridges them with a bundled local LLM for refinement and per-profile personas, and runs the whole thing on your machine.

    • Complete privacy — models, voice data, and captures never leave your machine
    • 8 TTS engines — Qwen3-TTS, Qwen CustomVoice, Qwen VoiceDesign, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, HumeAI TADA, and Kokoro
    • Voice cloning and preset voices — zero-shot cloning from a reference sample, or 50+ curated preset voices via Kokoro and Qwen CustomVoice
    • 23 languages — from English to Arabic, Japanese, Hindi, Swahili, and more
    • Post-processing effects — pitch shift, reverb, delay, chorus, compression, and filters
    • Expressive speech — paralinguistic tags like [laugh], [sigh], [gasp] via Chatterbox Turbo; natural-language delivery control via Qwen CustomVoice; voices described in plain language via Qwen VoiceDesign
    • Unlimited length — auto-chunking with crossfade for scripts, articles, and chapters
    • Stories editor — multi-track timeline for conversations, podcasts, and narratives
    • Voice input — global dictation hotkey with push-to-talk and toggle modes, accessibility-verified auto-paste on macOS, in-app mic on every text field, Whisper-based STT
    • Agent voice output — one tool call (voicebox_speak) and any MCP-aware agent (Claude Code, Cursor, Cline) speaks to you in a voice you've cloned
    • Voice personalities — attach a free-form persona to any voice profile, then Compose, Rewrite, or Respond via a bundled local LLM — agents can invoke the same modes over MCP
    • API-first — REST API plus a built-in MCP server for integrating voice I/O into your own apps and agents
    • Native performance — built with Tauri (Rust), not Electron
    • Runs everywhere — macOS (MLX/Metal), Windows (CUDA), Linux, AMD ROCm, Intel Arc, Docker

    Download

    PlatformDownload
    macOS (Apple Silicon)Download DMG
    macOS (Intel)Download DMG
    WindowsDownload MSI
    Dockerdocker compose up

    View all binaries →

    Linux — Pre-built binaries are not yet available. See voicebox.sh/linux-install for build-from-source instructions.

    Having trouble? See the Troubleshooting Guide for common install, generation, model-download, and GPU issues.


    Features

    Multi-Engine Voice Cloning

    Eight TTS engines with different strengths, switchable per-generation:

    EngineLanguagesStrengths
    Qwen3-TTS (0.6B / 1.7B)10High-quality multilingual cloning, delivery instructions ("speak slowly", "whisper")
    Qwen CustomVoice109 curated preset voices with natural-language delivery control — no reference audio required
    Qwen VoiceDesign10Builds a voice from a written description — no reference audio or preset needed
    LuxTTSEnglishLightweight (~1GB VRAM), 48kHz output, 150x realtime on CPU
    Chatterbox Multilingual23Broadest language coverage — Arabic, Danish, Finnish, Greek, Hebrew, Hindi, Malay, Norwegian, Polish, Swahili, Swedish, Turkish and more
    Chatterbox TurboEnglishFast 350M model with paralinguistic emotion/sound tags
    TADA (1B / 3B)10HumeAI speech-language model — 700s+ coherent audio, text-acoustic dual alignment
    Kokoro850 curated preset voices, tiny 82M model, fast CPU inference

    Emotions & Paralinguistic Tags

    Only Chatterbox Turbo interprets paralinguistic tags like [laugh] and [sigh]. Qwen3-TTS, LuxTTS, Chatterbox Multilingual, and HumeAI TADA read them literally as text.

    With Chatterbox Turbo selected, type / in the text input to open the tag inserter and add expressive tags inline with speech:

    Sounds: [laugh] [chuckle] [gasp] [cough] [sigh] [groan] [sniff] [shush] [clear throat]

    Delivery: [angry] [crying] [dramatic] [fear] [happy] [narration] [sarcastic] [surprised] [whispering] [advertisement]

    Post-Processing Effects

    8 audio effects powered by Spotify's pedalboard library. Apply after generation, preview in real time, build reusable presets.

    EffectDescription
    Pitch ShiftUp or down by up to 12 semitones
    ReverbConfigurable room size, damping, wet/dry mix
    DelayEcho with adjustable time, feedback, and mix
    Chorus / FlangerModulated delay for metallic or lush textures
    CompressorDynamic range compression
    GainVolume adjustment (-40 to +40 dB)
    High-Pass FilterRemove low frequencies
    Low-Pass FilterRemove high frequencies

    Ships with 4 built-in presets (Robotic, Radio, Echo Chamber, Deep Voice) and supports custom presets. Effects can be assigned per-profile as defaults.

    Unlimited Generation Length

    Text is automatically split at sentence boundaries and each chunk is generated independently, then crossfaded together. Works with all engines.

    • Configurable auto-chunking limit (100–5,000 chars)
    • Crossfade slider (0–200ms) for smooth transitions
    • Max text length: 50,000 characters
    • Smart splitting respects abbreviations, CJK punctuation, and [tags]

    Generation Versions

    Every generation supports multiple versions with provenance tracking:

    • Original — clean TTS output, always preserved
    • Effects versions — apply different effects chains from any source version
    • Takes — regenerate with a new seed for variation
    • Source tracking — each version records its lineage
    • Favorites — star generations for quick access

    Async Generation Queue

    Generation is non-blocking. Submit and immediately start typing the next one.

    • Serial execution queue prevents GPU contention
    • Real-time SSE status streaming
    • Failed generations can be retried
    • Stale generations from crashes auto-recover on startup

    Voice Profile Management

    • Create profiles from audio files or record directly in-app
    • Import/export profiles to share or back up
    • Multi-sample support for higher quality cloning
    • Per-profile default effects chains
    • Organize with descriptions and language tags

    Stories Editor

    Multi-voice timeline editor for conversations, podcasts, and narratives.

    • Multi-track composition with drag-and-drop
    • Inline audio trimming and splitting
    • Auto-playback with synchronized playhead
    • Version pinning per track clip

    Global Dictation & Voice Input

    The other half of the voice I/O loop. Hold a hotkey anywhere on your system, speak, release — on macOS the transcript pastes straight into the focused text field. Or hit the mic on any Voicebox text input and dictate directly into the app.

    • Configurable chord bindings — hold-to-speak and tap-to-toggle chords, each rebindable in the in-app chord picker. Holding push-to-talk and tapping Space mid-hold upgrades into a toggle session without a gap in audio
    • Target-aware paste (macOS) — accessibility-verified injection into the focused text field, with atomic clipboard save/restore so your clipboard isn't clobbered
    • First-run permissions UX — in-app gates walk you through the macOS Accessibility and Input Monitoring grants with deep-links to System Settings
    • In-app mic button on every Voicebox text field — generation form, profile descriptions, story titles, anywhere you'd type
    • LLM refinement — optional cleanup of ums, stutters, and false starts before paste
    • On-screen pill — floating overlay surfacing recording, transcribing, refining, and speaking states. Same pill agents use when they speak to you, so there's one mental model for both directions of the loop

    Speech-to-Text

    Voicebox runs OpenAI Whisper for transcription — the same model that backs dictation, the Captures tab, and the /transcribe API. Running on MLX (Apple Silicon) or PyTorch (CUDA / ROCm / DirectML / CPU) depending on your platform.

    SizeNotes
    Base / Small / Medium / LargeStandard Whisper quality ladder
    Turbo~8x faster than Whisper Large, minimal quality loss

    More engines (Parakeet v3, Qwen3-ASR) are planned — see Roadmap.

    Captures

    Every dictation, in-app recording, and uploaded audio file lands in the Captures tab — original audio paired with transcript, always preserved.

    • Replay, re-transcribe, refine — rerun STT with any Whisper size, or re-run the raw transcript through the local LLM with different flags (filler cleanup, self-correction removal, technical-term preservation)
    • Edit inline — tweak the transcript and save on blur
    • Play as voice profile — turn any capture into speech with a cloned voice, one click
    • Promote to voice sample — use a capture's audio + transcript as a reference sample on any voice profile
    • Local capture storage — original audio and transcript stay in your Voicebox data directory, with a folder shortcut in Settings

    Agent Voice Output

    Every agent gets a voice. One tool call and any MCP-aware agent can speak to you in a voice you've cloned — task completions, questions, notifications. The same pill that surfaces during dictation surfaces during agent speech, so you always see what's coming out of your machine.

    // In any MCP-aware agent:
    await voicebox_speak({
      text: "Deploy complete.",
      profile: "Morgan",
    });
    

    Also exposed as POST /speak for anything that doesn't speak MCP — ACP, A2A, shell scripts, custom harnesses.

    • Bidirectional pill — recording, transcribing, refining, and speaking are all states of the same OS-level overlay, so dictation and agent speech share one surface
    • Per-agent voice binding — in Settings → MCP, pin Claude Code to Morgan and Cursor to Scarlett so you can tell which agent is talking without looking. Each client's last_seen_at timestamp confirms the install actually took
    • Always visible — no silent background TTS; every agent-initiated speak surfaces the pill with the voice profile name for the full duration
    • HTTP + stdio transports — install as a URL in Claude Code / Cursor / Windsurf / VS Code MCP, or point stdio-only clients at the bundled voicebox-mcp binary

    Voice Personalities

    Attach a free-form personality to any voice profile — who this voice is, how they speak, what they care about. Two actions appear on the generate box when a personality is set, powered by a bundled Qwen3 LLM running entirely locally.

    • Compose — a shuffle button that drops a fresh in-character line into the textarea; edit and speak, or click again for a different take
    • Speak in character — a toggle that routes your input text through the personality LLM to be rewritten in their voice before TTS

    Agents can reach the same rewrite path over MCP by passing personality: true to voicebox_speak, turning the tool into a text-in → personality-LLM → TTS pipeline. The same LLM backs dictation's refinement step — one LLM in the app, one model cache, one GPU-memory footprint.

    Local LLM options: Qwen3 0.6B / 1.7B / 4B, sharing the TTS runtime (MLX on Apple Silicon, PyTorch elsewhere).

    Use cases: agent dev loops (dictate a question, hear the answer in a cloned voice), interactive characters for games and narrative tools, speech assistance for people who can't speak in their original voice.

    Model Management

    • Per-model unload to free GPU memory without deleting downloads
    • Custom models directory via VOICEBOX_MODELS_DIR
    • Model folder migration with progress tracking
    • Download cancel/clear UI

    GPU Support

    PlatformBackendNotes
    macOS (Apple Silicon)MLX (Metal)4-5x faster via Neural Engine
    Windows (NVIDIA)PyTorch (CUDA)Auto-downloads CUDA binary from within the app
    Linux (NVIDIA)PyTorch (CUDA)Use a local/remote Python backend with CUDA PyTorch
    Linux (AMD)PyTorch (ROCm)Auto-configures HSA_OVERRIDE_GFX_VERSION
    Windows (any GPU)DirectMLUniversal Windows GPU support
    Intel ArcIPEX/XPUIntel discrete GPU acceleration
    AnyCPUWorks everywhere, just slower

    API

    Voicebox exposes a REST API for integrating voice I/O into your own apps and agents.

    # Generate speech
    curl -X POST http://127.0.0.1:17493/generate \
      -H "Content-Type: application/json" \
      -d '{"text": "Hello world", "profile_id": "abc123", "language": "en"}'
    
    # Agent voice output — any app or script can speak in a cloned voice
    curl -X POST http://127.0.0.1:17493/speak \
      -H "Content-Type: application/json" \
      -H "X-Voicebox-Client-Id: my-script" \
      -d '{"text": "Deploy complete.", "profile": "Morgan"}'
    
    # Transcribe an audio file
    curl -X POST http://127.0.0.1:17493/transcribe \
      -F "[email protected]" \
      -F "model=whisper-turbo"
    
    # List voice profiles
    curl http://127.0.0.1:17493/profiles
    

    POST /speak accepts profile as a name (case-insensitive) or id, and resolves via the same precedence as the MCP tool: explicit arg → per-client binding → capture_settings.default_playback_voice_id.

    MCP server

    Voicebox ships a built-in Model Context Protocol server so any MCP-aware agent (Claude Code, Cursor, Windsurf, Cline, VS Code MCP extensions) can speak, transcribe, and browse captures and profiles.

    Claude Code one-liner:

    claude mcp add voicebox \
      --transport http \
      --url http://127.0.0.1:17493/mcp \
      --header "X-Voicebox-Client-Id: claude-code"
    

    Any HTTP MCP client (Cursor, Windsurf, VS Code, etc.):

    {
      "mcpServers": {
        "voicebox": {
          "url": "http://127.0.0.1:17493/mcp",
          "headers": { "X-Voicebox-Client-Id": "cursor" }
        }
      }
    }
    

    Stdio fallback for clients that don't speak HTTP MCP — point at the bundled voicebox-mcp binary inside the app:

    {
      "mcpServers": {
        "voicebox": {
          "command": "/Applications/Voicebox.app/Contents/MacOS/voicebox-mcp",
          "env": { "VOICEBOX_CLIENT_ID": "claude-desktop" }
        }
      }
    }
    

    Four tools ship: voicebox_speak, voicebox_transcribe, voicebox_list_captures, voicebox_list_profiles. Per-client voice bindings are managed in Voicebox → Settings → MCP. See the full MCP guide for tool signatures, resolution precedence, the speaking-pill contract, and security notes.

    // In any MCP-aware agent:
    await voicebox_speak({
      text: "Tests passing. Ready to merge.",
      profile: "Morgan",      // optional — falls back to the per-client binding
      personality: true,      // optional — rewrites text through the profile's personality LLM first
    });
    

    Use cases: agent dev loops (voice in, voice out), game dialogue, podcast production, accessibility tools, voice assistants, content automation.

    Full API documentation available at http://127.0.0.1:17493/docs.


    Tech Stack

    LayerTechnology
    Desktop AppTauri (Rust)
    FrontendReact, TypeScript, Tailwind CSS
    StateZustand, React Query
    BackendFastAPI (Python)
    TTS EnginesQwen3-TTS, Qwen CustomVoice, Qwen VoiceDesign, LuxTTS, Chatterbox, Chatterbox Turbo, TADA, Kokoro
    STTWhisper / Whisper Turbo (PyTorch or MLX)
    Local LLMQwen3 (0.6B / 1.7B / 4B), shared runtime with TTS / STT
    MCP ServerFastMCP mounted at /mcp (Streamable HTTP) + bundled stdio shim binary
    Native ShimRust (inside Tauri) for global hotkey, paste injection, focus introspection
    EffectsPedalboard (Spotify)
    InferenceMLX (Apple Silicon) / PyTorch (CUDA/ROCm/XPU/CPU)
    DatabaseSQLite
    AudioWaveSurfer.js, librosa

    Roadmap

    FeatureDescription
    Windows / Linux auto-pasteDictation paste parity — SendInput on Windows, uinput / AT-SPI on Linux
    STT engine expansionParakeet v3 and Qwen3-ASR joining Whisper — 50+ languages, better non-English quality
    Pipeline routingConfigurable source → transform → sink chains with webhook + MCP sinks and a preset editor
    Streaming transcriptionWebSocket /transcribe/stream for partial transcripts as you speak
    End-to-end speech LLMsMoshi, GLM-4-Voice, Qwen2.5 Omni — real voice-to-voice, no text between
    Voice DesignCreate new voices from text descriptions
    Long-form captureDual-stream recorder (mic + system audio) with summary LLM transform
    Platform sinksApple Notes, Obsidian, and other opt-in integrations
    Plugin architectureExtend with custom models, transforms, and sinks
    Mobile companionControl Voicebox from your phone

    For the full engineering status, open-issue triage, and prioritized work queue, see docs/PROJECT_STATUS.md — a living document that tracks what's shipped, what's in-flight, candidate TTS engines under evaluation, and why we've accepted or backlogged specific integrations.


    Development

    See CONTRIBUTING.md for detailed setup and contribution guidelines.

    Quick Start

    git clone https://github.com/jamiepine/voicebox.git
    cd voicebox
    
    just setup   # creates Python venv, installs all deps
    just dev     # starts backend + desktop app
    

    Install just: brew install just or cargo install just. Run just --list to see all commands.

    Prerequisites: Bun, Rust, Python 3.12, Tauri Prerequisites, and Xcode on macOS.

    The repo ships a pre-wired .mcp.json at the root — running Claude Code inside this checkout picks up the Voicebox MCP tools automatically once the dev app is running.

    Building Locally

    just build          # Build CPU server binary + Tauri app
    just build-local    # (Windows) Build CPU + CUDA server binaries + Tauri app
    

    Adding New Voice Models

    The multi-engine architecture makes adding new TTS engines straightforward. A step-by-step guide covers the full process: dependency research, backend protocol implementation, frontend wiring, and PyInstaller bundling.

    The guide is optimized for AI coding agents. An agent skill can pick up a model name and handle the entire integration autonomously — you just test the build locally.

    Project Structure

    voicebox/
    ├── app/              # Shared React frontend
    ├── tauri/            # Desktop app (Tauri + Rust)
    ├── web/              # Web deployment
    ├── backend/          # Python FastAPI server
    └── scripts/          # Build & release scripts
    

    Contributing

    Contributions welcome! See CONTRIBUTING.md for guidelines.

    1. Fork the repo
    2. Create a feature branch
    3. Make your changes
    4. Submit a PR

    Security

    Found a security vulnerability? Please report it responsibly. See SECURITY.md for details.


    License

    MIT License — see LICENSE for details.