Voicebox:开源语音工作室
我们一直在为TTS付费给ElevenLabs,或为听写付费给WisprFlow,或者两者都在用,又或者正在考虑使用。Voicebox是一个开源的本地应用,它同时实现了这两个功能,在localhost上暴露服务,并附带一个MCP服务器,让我们的编程代理可以用我们克隆的任何声音说话。它使用Tauri(Rust)构建,由Jamie Pine维护,他也是Spacedrive——开源跨平台文件管理器的开发者

我们一直在为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时做的大多数事情来说,这个理由刚刚变得更容易成立了。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)