语音助手这件事,我对云端方案一直不太放心。倒不是怕什么,主要是对话内容全送出去,心里别扭。之前试了几家 API 的实时语音,延迟确实低,但每月几十刀的账单,讲中文时还偶尔抽风。我就想:有没有办法完全本地跑一个,数据不出我的机器?
搜了一圈,发现 Hugging Face 有个 speech-to-speech,36k 多星,最近还在密集更新。它的思路不是封装一个黑盒模型,而是搭了一条管道:你说的话先进 VAD 检测,再转文字,LLM 生成回复,最后 TTS 念出来。四个环节各自独立,每个都能换。

这设计对我这种喜欢折腾的人很友好。管道里用哪家的 STT、哪个 LLM、什么 TTS,完全自己定。不想联网的话,四个环节全用本地模型就行。
装起来比想象中简单
项目用 Python 3.10+,推荐 uv 管理依赖。我习惯 pip,所以直接:
pip install speech-to-speech
macOS 上它自动装了 ARM 架构优化版:STT 走 Parakeet TDT(MLX 加速),TTS 默认 Qwen3-TTS 配 mlx-audio,LLM 用 mlx-lm。一条命令就能启动本地对话:
speech-to-speech local --mac-optimal-settings
但我机器是 16GB 内存,直接跑默认配置有点顶。Qwen3-TTS 1.7B 加上默认的 LLM,内存峰值能到 14GB 以上,虽然没爆,但系统已经开始Swap了。这不行,得挑模型。
16GB 小主机的精简方案
speech-to-speech 的文档给了一套 mac-optimal-settings,但那个预设适合内存宽裕的机子。16GB 需要更克制的组合。我试了几种,最终定下来:
- STT:Parakeet TDT(默认就很快,<100ms 流式识别,25 种语言)
- LLM:Qwen3-4B-Instruct bf16(mlx-lm 后端,约 8GB 峰值内存)
- TTS:Qwen3-TTS 6bit 量化(mlx-audio,1.7B 参数压到约 3GB)
- VAD:Silero VAD v5 + Smart Turn(端点检测,自动判断你说完了没有)
加起来峰值内存约 10-12GB,16GB 设备留有余量。启动命令改成:
speech-to-speech local
--mac-optimal-settings
--model_name mlx-community/Qwen3-4B-Instruct-2507-bf16

实测下来,从我说完到听到回复,延迟大约 1.5-2 秒。比不上云端 API 的 300ms,但本地跑这个成绩,我已经挺满意了。Smart Turn 的话轮检测很准,我说到一半停顿思考,它不会急着截断;真正说完了,它才走后续流程。
中文支持是个惊喜
我本来担心开源语音项目的中文支持会拉胯,但 speech-to-speech 给了好几个选项。STT 方面,Paraformer 是阿里 FunASR 的模型,默认面向中文;Whisper 的 MLX 加速版也能用。TTS 方面,Qwen3-TTS 自带多语言自动检测,中文自然度不错;ChatTTS 更专精中英双语, emotion 控制也强。
我最后没换 ChatTTS,因为 Qwen3-TTS 的 6bit 量化在 ARM 上更省内存。中文朗读偶尔有轻微机器感,但比早期开源 TTS 强太多了。可以固定用中文:
speech-to-speech local --mac-optimal-settings --language zh
或者开自动检测,你说中文它回中文,切英文它也跟着换。
几个实际踩的坑
1. 依赖冲突:Pocket TTS 需要 numpy 2.x,但 DeepFilterNet(VAD 可选音频增强)锁 numpy<2。如果你同时装了两个,会炸。我干脆弃用 DeepFilterNet,反正 Parakeet TDT 的输入质量够好。
2. 模型下载:第一次跑 mlx-lm 和 Qwen3-TTS 会从 Hugging Face 拉模型,Qwen3-4B bf16 约 8GB,Qwen3-TTS 约 3GB。家里宽带够的话,几分钟下完。但如果用流量,得留意。
3. 打断逻辑:默认开启打断,你说到一半可以插嘴覆盖助手回复。但本地 LLM 生成速度不如云端,打断时偶尔会残留上一个回复的几个字。Smart Turn 的 --speculative_reopen_ms 可以调,默认 800ms,我改成了 500ms,响应更跟手。
4. API 兼容性:speech-to-speech 暴露的是 OpenAI Realtime-compatible WebSocket API。这意味着任何兼容这个协议的客户端都能连——不只是它自带的 talk 命令,你也可以自己写个网页版,或者接到别的设备上。
数据留在本地的感觉
全程跑下来,最大的好处不是省了订阅费,而是对话内容完全不出我的局域网。语音输入、文字理解、语音输出,全在 16GB 小主机上闭环。对于写代码时随口问个问题、查个文档、甚至只是无聊唠两句,这种“无心理负担”的交互方式,我觉得比云端方案更舒服。
当然,它也有天花板。4B 模型的智商和 70B 云端模型没法比,复杂推理和代码生成还是弱一些。延迟 1.5 秒 vs 云端 300ms,差距明显。但在“日常对话+轻量问答”这个场景,够用了。

这个项目从 2024 年 8 月创建到现在,两年间 star 数涨到了一万多。最近它甚至成了某机器人产品的生产对话后端。Apache 2.0 协议,代码全开源,模型权重也能本地下载。如果你也在找一条完全本地的语音助手路线,可以看看它。