Hugging Face 为 Reachy Mini 机器人推出全本地语音流水线,基于 speech-to-speech 库,无需云端或 API 密钥即可运行。级联架构(VAD、STT、LLM、TTS)全部在本地完成,保护隐私且零费用,用户可自由替换组件。
组装好 Reachy Mini 后,通常会安装对话应用(GitHub 仓库)并开始与它对话。此前,需要将音频发送到服务器处理;但现在无需如此。本文将演示如何完全在本地运行整个流水线。
这套流水线基于 Hugging Face 的 speech-to-speech 库,采用级联方式实现 VAD(语音活动检测)→ STT(语音转文字)→ LLM(大语言模型)→ TTS(文字转语音),并暴露一个兼容 Realtime API 的 WebSocket 端点 /v1/realtime。启动后端后,只需在机器人 UI 中指向该地址即可。
级联流水线是目前开源领域最灵活的方案,只要组件选对,它也是最快的。本文将推荐一些优选组件,但级联的优势在于可以自由替换——新模型每周都在涌现。
摘要
- 为 Reachy Mini 部署本地语音后端
- 使用
speech-to-speech库,级联架构- 推荐:llama.cpp + Gemma 4、Silero VAD、Parakeet-TDT 0.6B v3 STT、Qwen3-TTS
以下步骤让 Reachy Mini 完全在本地进行对话,无需云端、无需 API 密钥,数据不会离开机器。这里有一段演示视频:
为了在本地运行 LLM,使用 Hugging Face 的 llama.cpp。安装方式:brew install llama.cpp(macOS)或 winget install llama.cpp(Windows),更多帮助见官方文档。首先运行:
llama-server -hf ggml-org/gemma-4-E4B-it-GGUF -np 2 -c 65536 -fa on --swa-full
完成!首次运行会下载模型,后续启动很快。
各参数含义:
-hf ggml-org/gemma-4-E4B-it-GGUF:直接从 Hugging Face Hub 拉取模型。首次下载,后续使用缓存。-np 2:两个并行槽位,允许服务器处理第二个请求(如快速打断)而不阻塞第一个。-c 65536:64k 上下文窗口,各槽位共享,长对话有充足空间。-fa on:启用 Flash Attention,更快、更省内存,现代硬件上几乎免费。--swa-full:保留完整的滑动窗口注意力缓存,而非重新计算。牺牲少量内存,换来 Gemma 上更快的提示处理。先安装库:
uv pip install speech-to-speech
然后在另一个终端中运行 LLM 服务的同时,执行:
speech-to-speech --responses_api_base_url "http://127.0.0.1:8080" --responses_api_api_key "" --mode local
现在就可以在终端中和模型对话了!首次运行会下载 Parakeet-TDT 0.6B v3 和 Qwen3TTS,后续启动很快。
在 --mode local 测试完毕后,不带该选项重新运行,即可将 speech-to-speech 服务提供给机器人。
在 llama.cpp 和 speech-to-speech 都运行起来后,启动机器人的桌面应用并运行对话应用。在对话应用的 UI 中,点击“HF backend”下的“edit connection”,选择本地模式。具体操作可参考以下视频:
至此,设置完成。你可以和机器人开始对话了。流水线的每个环节都有权衡:更快的 TTS 模型质量稍低,更慢的 STT 模型精度更高。本文针对多语言进行了优化,如果需要单一语言,可以自行调整。下文介绍如何自定义。
托管的实时后端很方便,但运行自己的引擎有三大优势:
speech-to-speech 仓库通过一个 CLI 提供所有这些功能。它启动一个 WebSocket 服务器(/v1/realtime),Reachy Mini 已经知道如何与该协议通信。
级联语音流水线包含四个阶段:VAD、STT、LLM、TTS。其中三个阶段本文给出了默认选择,因此你可以专注于 LLM:
| 阶段 | 选择 | 理由 |
|---|---|---|
| VAD | Silero VAD v5 | 小巧、准确、可在 CPU 上运行,开源语音智能体领域的事实标准。 |
| STT | Parakeet-TDT 0.6B v3 | 支持流式、速度快、英语质量好。 |
| TTS | Qwen3-TTS | 富有表现力、低延迟、多语言、支持自定义音色。 |
上述选择仅供参考,完全可以根据自己的偏好替换。
LLM 对系统延迟和整体性能影响最大。speech-to-speech 支持两种方式:本地运行模型(llama.cpp、MLX、Transformers、vLLM)或使用支持 Responses API 的服务器(OpenAI、Gemini、Hugging Face Inference Endpoints、llama.cpp、vLLM 等)。
系统的瓶颈在于 LLM 推理延迟。为此,speech-to-speech 支持通过 Responses API 协议使用外部推理引擎。LLM 在一个独立进程中运行,语音循环在另一个进程,两者通过 HTTP 通信。
终端 1:llama.cpp 服务器
llama-server -hf ggml-org/gemma-4-E4B-it-GGUF -np 2 -c 65536 -fa on --swa-full
终端 2:speech-to-speech 客户端
speech-to-speech \
--mode realtime \
--stt parakeet-tdt \
--tts qwen3 \
--llm_backend responses-api \
--model_name "unsloth/Qwen3-4B-Instruct-2507-GGUF" \
--responses_api_base_url "http://127.0.0.1:8080/v1"
需要 vLLM ≥ 0.21.0。vLLM 0.21.0 才开始完整支持 Responses API 协议,包括 tool-call streaming(供 speech-to-speech 后端使用)。旧版本可以启动,但当助手尝试调用工具时会失败。
使用 vLLM 服务模型时,有三个参数是必需的:
--enable-auto-tool-choice--tool-call-parser <tool_parser_name>:选择适配家族的解析器,将模型原始输出转为结构化的工具调用(例如 qwen3_coder 对应 Qwen3 instruct 模型、llama3_json 对应 Llama 3、hermes 对应 Hermes 风格模型等)。--default-chat-template-kwargs '{"enable_thinking":false}':禁用支持“思考”通道的模型的 <think> 推理过程。对于更复杂的智能体任务可以设为 true 让模型推理,但为了自然对话体验,强烈建议关闭:每个思考 token 都会造成用户听到的静默延迟。终端 1:vLLM 推理服务器(Qwen/Qwen3-4B-Instruct-2507)
vllm serve Qwen/Qwen3-4B-Instruct-2507 \
--port 8000 \
--host 127.0.0.1 \
--max-model-len 32768 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--default-chat-template-kwargs '{"enable_thinking":false}' \
--speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":1}'
--speculative-config参数启用多 token 预测(MTP)。这是可选的,但对端到端延迟有很大提升。如果模型支持,建议保留。
终端 2:speech-to-speech 客户端
speech-to-speech \
--mode realtime \
--stt parakeet-tdt \
--tts qwen3 \
--llm_backend responses-api \
--model_name "Qwen/Qwen3-4B-Instruct-2507" \
--responses_api_base_url "http://127.0.0.1:8000/v1"
协议相同,但模型运行在 Hugging Face 托管的 GPU 上。部署任意聊天模型为 Inference Endpoint,然后将语音循环指向其 URL:
speech-to-speech \
--mode realtime \
--stt parakeet-tdt \
--tts qwen3 \
--llm_backend responses-api \
--model_name "Qwen/Qwen3-4B-Instruct-2507" \
--responses_api_base_url "https://<your-endpoint>.endpoints.huggingface.cloud/v1" \
--responses_api_api_key "$HF_TOKEN"
如果不想管理自己的端点,可以使用 Inference Provider。Hugging Face 将请求路由到第三方后端(如 Together、Fireworks、Replicate),只需一个 URL:
speech-to-speech \
--mode realtime \
--stt parakeet-tdt \
--tts qwen3 \
--llm_backend responses-api \
--model_name "Qwen/Qwen3.6-35B-A3B:deepinfra" \
--responses_api_base_url "https://router.huggingface.co/v1" \
--responses_api_api_key "$HF_TOKEN"
想要零基础设施测试前沿模型时,只需将同样的参数指向 OpenAI:
speech-to-speech \
--mode realtime \
--stt parakeet-tdt \
--tts qwen3 \
--llm_backend responses-api \
--model_name "gpt-5.4" \
--responses_api_api_key "$OPENAI_API_KEY"
--responses_api_* 参数对任何实现了该协议的提供商(OpenRouter、Together、Fireworks 等)都适用。只需更换 base URL 和 API key,流水线其余部分不变。
如果使用 Mac,MLX 是以合理延迟运行真实模型最简单的方式。推荐 Qwen3-4B-Instruct-2507,它在 M 系列芯片上几乎即时响应,且足以进行流畅对话。
speech-to-speech \
--llm_backend mlx-lm \
--model_name "mlx-community/Qwen3-4B-Instruct-2507-bf16"
默认情况下,服务器监听 ws://127.0.0.1:8765/v1/realtime。保持运行,将对话应用连接到本地后端,即可与机器人交谈。
与上面思路相同,但使用标准 transformers。适用于 CUDA 机器、Linux,或希望自由切换模型而无需为 MLX 重新转换权重的场景。
speech-to-speech \
--llm_backend transformers \
--model_name "Qwen/Qwen3-4B-Instruct-2507"
提示:
Qwen3-4B-Instruct-2507在单消费级 GPU 上速度与质量平衡很好。可以将--model_name指向任何后端支持的模型,例如更大的 Gemma、Qwen 或 Mistral。
如果语音引擎运行在笔记本电脑上,而对话应用运行在 Reachy Mini Wireless 上,唯一需要改动的是 URL。确保引擎绑定到局域网地址(而非仅限 127.0.0.1),并在机器人 UI 中选择 IP 时使用笔记本电脑的 IP。
查看 IP 的方法:
macOS
ipconfig getifaddr en0 # wifi
ipconfig getifaddr en1 # 以太网(有时是 en0,因情况而定)
Linux
hostname -I
Windows
ipconfig
找到活动适配器下“IPv4 地址”一项。
需要的是 192.168.x.x 或 10.x.x.x 类型的地址。如果看到 169.254.x.x,说明并未真正连接到网络。
现在,你拥有了一个完全本地的语音循环:
原文链接:Hugging Face
本文由前途科技编辑整理
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断