Voicebox:开源语音工作室

一个本地优先的语音克隆和听写应用,完全在我们的机器上运行。云账单只是它有趣的原因之一。MCP服务器可能是更大的原因。

Voicebox:开源语音工作室
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI模型价格对比 | AI工具导航 | ONNX模型库 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

我们一直在为TTS付费给ElevenLabs,或为听写付费给WisprFlow,或者两者都在用,又或者正在考虑使用。Voicebox是一个开源的本地应用,它同时实现了这两个功能,在localhost上暴露服务,并附带一个MCP服务器,让我们的编程代理可以用我们克隆的任何声音说话。

它使用Tauri(Rust)构建,由Jamie Pine维护,他也是Spacedrive——开源跨平台文件管理器的开发者。

Voicebox并不是想做研究演示,它是想要成为两个特定云端SaaS产品的本地替代品:输出端的ElevenLabs,输入端的WisprFlow。这两个产品都有真实的业务、真实的客户和真实的订阅账单。

Voicebox每次调用不花一分钱,永远不会把我们的语音数据发送到任何地方,而且可以离线工作。

这种权衡是否足以满足我们的使用场景,才是这篇文章真正要讨论的问题。

1、Voicebox到底能做什么

三件事,整合到一个本地应用中。

1.1 语音生成和克隆

丢入几秒钟的参考音频,就能在Voicebox的本地UI中保存一个语音配置文件。或者从50多个预设语音中选择,通过Kokoro和Qwen CustomVoice生成。

支持23种语言的语音生成,横跨七个TTS引擎: Qwen3-TTS、Qwen CustomVoice、LuxTTS、Chatterbox Multilingual、Chatterbox Turbo、HumeAI TADA和Kokoro 82M。

每个引擎都有不同的优势,Chatterbox Turbo是唯一处理副语言标签如[laugh][sigh]的引擎,Kokoro在CPU实时运行且VRAM占用极小,HumeAI TADA在700秒以上的输出中保持声音一致性而不漂移,而且它们都可以在每次生成时切换。

1.2 系统级听写

按住全局热键,在系统任何地方说话,然后松开。

在macOS上,清理后的转录文本会直接粘贴到当前聚焦的文本框中。

Whisper处理转录,内置的Qwen3 LLM(本地运行)在粘贴前清理语气词、标点和口误。

这就是WisprFlow那一半的功能。

1.3 编程代理的MCP服务器

这是我们作为开发者应该关注的部分。

Voicebox内置了一个MCP服务器。

只需在Claude Code、Cursor、Windsurf、Cline或任何支持MCP的客户端中添加一行配置,代理就可以调用voicebox.speak用我们克隆的任何声音说话。

支持每个客户端绑定不同的声音——Claude Code用一种声音,Cursor用另一种。一个浮动的药丸状UI会显示每次代理发起的语音,所以我们始终能看到机器在说什么。

2、附带的REST API

每个TTS引擎都变成localhost:17493上的一个HTTP端点。没有API密钥,没有速率限制,也没有按字符收费。

我们最常用的两个端点:

POST /speak,用于通过屏幕药丸UI路由的简短状态消息:

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": "My Voice"}'

profile字段接受语音配置文件名称(不区分大小写)或其UUID,Voicebox通过与MCP工具相同的优先级来解析它们。

X-Voicebox-Client-Id头部让Voicebox可以为每个脚本或应用绑定默认语音。

一个最简的Python封装看起来像这样:

import requests

def speak(text, profile="My Voice", client_id="build-script"):
    requests.post(
        "http://127.0.0.1:17493/speak",
        json={"text": text, "profile": profile},
        headers={"X-Voicebox-Client-Id": client_id}
    )
# 在任何地方使用
run_tests()
speak("Tests passed. 247 of 247.")

这就是最小可用的集成: 十行代码把频繁切换窗口的习惯变成了环境感知。(将"My Voice"替换为我们在Voicebox UI中创建的配置文件名称。)

POST /generate,用于获取音频文件,支持引擎和风格控制:

curl -X POST http://127.0.0.1:17493/generate \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Welcome to the game, player one.",
    "profile_id": "b3f1c2d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "engine": "qwen_custom_voice",
    "instruct": "warm, slow, cinematic"
  }' \
  --output line.wav
注意两个端点之间的区别: /generate使用UUID(profile_id)而不是名称,支持引擎选择,并支持通过instruct进行自然语言风格指令。 它返回保存到文件的音频字节。/speak用于对话循环;/generate用于内容生产。

3、给编程代理一个声音

MCP服务器是Voicebox对开发者来说特别有趣的原因。在Claude Code中的一条命令,直接取自Voicebox的v0.5.0发布说明:

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

对于其他MCP客户端(Cursor、Windsurf、Claude Desktop),通用的HTTP传输配置如下:

{
  "mcpServers": {
    "voicebox": {
      "type": "http",
      "url": "http://127.0.0.1:17493/mcp"
    }
  }
}

将此放入项目根目录的.mcp.json用于Claude Code,.cursor/mcp.json用于Cursor,或所用MCP客户端对应的等效路径。连接后,代理可以直接调用voicebox.speak

Voicebox仓库甚至附带了一个预配置的.mcp.json,在检出目录中运行Claude Code时会自动加载工具。

4、简要的成本计算

Voicebox是免费的,它要替代的两个云服务却不是。

ElevenLabs运行在一个信用额度系统上,一个信用额度等于生成音频的一个字符。

Voicebox是免费的。初始下载之后,唯一的持续成本就是我们机器已经在消耗的电费。

对于在自己应用中构建语音功能的开发者来说,按字符计费的云账单不再是唯一的选择。

对于将听写作为日常输入方法的团队来说,按席位订阅不再是唯一的选择。成本优势是真实存在的。

但成本实际上并不是Voicebox有趣的全部原因。

一旦语音成为localhost:17493上的本地REST API,我们能构建的东西就不同了。

一个在工作时播报状态更新的CLI工具、在玩家机器上以玩家选择的声音生成的NPC对话、一个为无法再用自己的声音说话但拥有旧录音的人提供的无障碍层。

这些都不是新想法,它们只是被锁在了云API和按字符计费之后。

Voicebox通过将语音变成一种原语而不是一种服务来解锁它们。就像localhost:5432在我们运行Postgres时就在那里一样。

5、坦诚说还缺什么

这个项目发展很快,但也显现了这一点。Linux预编译二进制文件尚不存在,Linux用户需要从源码构建。语音克隆质量因引擎而异,差异很大;Qwen3-TTS保真度最高,但最近一个公开的issue(#515)报告了v0.4.1在Apple Silicon上的一致性退化。

没有云同步功能,如果我们跨多台机器工作,每个安装都是独立的世界。虽然Voicebox自称本地优先,但某些模型(特别是早期版本的Qwen3-TTS 1.7B)在下载后仍需要网络访问来获取HuggingFace元数据——这在v0.4.5中已修复,但它提醒我们"本地优先"配合云训练模型存在模糊边界。

巴士因子在这里很重要:

Voicebox主要由一个人维护,这个人同时也是Spacedrive的维护者。MIT许可证意味着我们可以在需要时分叉,但"可以分叉"和"不需要分叉"是两回事。对于将Voicebox视为生产环境中承重依赖的开发者来说,单一维护者风险是真实存在的。

对于生产级多租户SaaS应用,这些都不重要,因为Voicebox不是为那种用例设计的。它是一个桌面应用和本地服务器。

如果我们正在向大规模用户交付语音功能,ElevenLabs的API和基础设施仍然是正确的选择。Voicebox替代的是个人订阅和面向开发者的语音基础设施,而不是SaaS产品的语音基础设施。

6、值得花一个周末

对于阅读本文的大多数开发者来说,Voicebox值得花一个周末的关注。安装它,把Claude Code指向它,听到构建完成时用我们选择的声音播报,然后决定这个工作流转变是否会留下来。

如果我们现在正在为ElevenLabs或WisprFlow付费,用实际使用量算算账。

如果我们正在构建某个东西,语音功能一直是"锦上添花"直到我们看到了API账单,那么计算已经改变了。

它不会在所有场景下替代ElevenLabs,它也不需要。它只需要在长尾用例中足够好用就行——在这些场景中,在我们自己的机器上运行模型是正确的选择——而对于大多数开发者在使用这些API时做的大多数事情来说,这个理由刚刚变得更容易成立了。


原文链接: Voicebox: The Open-Source Voice Studio That Just Made Two Paid SaaS Tools Optional

汇智网翻译整理,转载请标明出处