Reachy Mini 完全本地运行
Hugging Face Blog··作者 Amir Mahla
关键信息
该后端使用与 Reachy Mini 现有兼容的 Realtime API 风格协议,因此后端启动后,机器人即可通过界面连接。Hugging Face 也强调,每个阶段都可以替换,而当前默认配置更偏向多语言场景,而不是单一语言场景。
资讯摘要
Hugging Face 介绍了一个面向 Reachy Mini 的完全本地对话方案,核心是其 speech-to-speech 库。这个系统采用四段式语音流水线:VAD、STT、LLM 和 TTS。后端提供一个兼容 Realtime API 的 /v1/realtime WebSocket 接口,因此 Reachy Mini 可以沿用现有的界面流程连接到本地服务器。文章推荐使用 llama.cpp 来服务 LLM,并建议将 Gemma 4、Silero VAD、Parakeet-TDT 0.6B v3 和 Qwen3-TTS 作为实用默认组件。
教程还给出了启动 llama.cpp 的示例命令,以及在终端里用 local 模式运行 speech-to-speech 的方法。用户先在本地模式下测试后,还可以切换为给机器人本身提供服务,并在 conversation app 中选择本地连接。Hugging Face 表示,这种做法能让音频始终停留在用户可控的硬件上,避免 API 费用,并且便于随着新的开源模型出现而替换各个环节。文章也强调,这条流水线本质上是在做取舍,例如更快但质量较低的 TTS,与更慢但质量更高的 STT 之间需要平衡。
资讯正文
这个栈由 speech-to-speech 提供支持,它是我们级联式的 VAD → STT → LLM → TTS 管线,暴露出一个兼容 Realtime API 的 /v1/realtime WebSocket。启动后端后,就可以在 UI 里把机器人指向它。
级联方案是当今开源领域里最灵活的选择,而且只要组件搭配得当,它们也往往是最快的。我们会推荐我们最喜欢的组件,但级联的核心就在于你可以替换它们。新模型每周都会发布。
TL;DR
- 为你的 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 或 winget install llama.cpp;如需更多帮助,请查看文档。
首先,我们将运行:
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——直接从 Hub 拉取模型。首次运行会下载,之后会使用缓存。
-np 2——两个并行槽位。让服务器在处理第一个请求时,也能处理第二个请求(例如一次快速打断),而不会被第一个请求阻塞。
-c 65536——64k 上下文窗口,在所有槽位之间共享。足以应付长对话。
-fa on——flash attention。更快、显存占用更低,在现代硬件上几乎是免费收益。
--swa-full——保留完整的滑动窗口注意力缓存,而不是重新计算。用少量 RAM 交换明显更快的 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 后端里点击“edit connection”来选择本地模式。下面是一段演示视频,展示了具体做法:
到这里就完成了。你现在可以开始和机器人对话了。这个管线的每个阶段都是一种权衡:有更快但质量更低的 TTS 模型,也有更慢但质量更高的 STT 模型。我们的优化目标是多语言,你也许会想针对单一语言进行优化。博客的其余部分会介绍如何进行定制。
托管式实时后端很方便,但运行你自己的引擎可以解锁三件事:
- 隐私。音频永远不会离开你的网络,整个流水线都运行在你可控的硬件上。
- 没有 API 成本。没有按分钟或按 token 收费。
- 对整个流水线拥有完全控制权。可以替换任何组件:VAD、STT、LLM、TTS。每当 Hub 🤗 上出现更好的方案时,都可以换上。
speech-to-speech
仓库把这一切都集成在一个 CLI 里。它会在 /v1/realtime 启动一个 WebSocket 服务器,使用与 Reachy Mini 已经知道如何对话的相同协议。
一个级联式语音流水线包含四个阶段:VAD、STT、LLM 和 TTS。在其中三个阶段,我们选择了稳定可靠的默认方案,这样你就可以把注意力放在 LLM 上:
我们对这些选择有明确偏好,如果你有自己的偏好,完全可以替换掉它们。
LLM 是对系统延迟和整体性能影响最大的层。我们支持两种方案:在本地运行模型(llama.cpp、MLX、Transformers、vLLM),或者使用带有 Responses API 的服务器(OpenAI、Gemini、HF Inference Endpoints、llama.cpp、vLLM 等)。
系统的主要瓶颈是 LLM 推理延迟。为了解决这一点,我们支持通过 Responses API 协议暴露的外部推理引擎。
因此,engine 还支持第二种模式:只要 LLM 进程能说 Responses API 协议,就可以把它放在独立进程里。你在一个终端启动模型服务器,在另一个终端启动语音循环,二者通过 HTTP 通信。
终端 1:llama.cpp 服务器:
终端 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。对 Responses API 协议的完整支持,包括 speech-to-speech 后端使用的工具调用流式输出,已经在 vLLM 0.21.0 中落地。旧版本虽然能够启动,但一旦助手尝试调用工具就会出问题。
当通过 vLLM 为这个流水线提供模型服务时,实际上有三个参数是必需的:
--enable-auto-tool-choice
--tool-call-parser <tool_parser_name>
— 选择按模型家族划分的解析器,用来把模型的原始输出转换为结构化的工具调用(例如,Qwen3 指令模型使用 qwen3_coder,Llama 3 使用 llama3_json,Hermes 风格模型使用 hermes,等等)。--default-chat-template-kwargs '{"enable_thinking":false}'
:禁用支持该功能的模型的 <think>
推理通道。对于更困难的 agent 任务,你可以把它改成 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)。它不是必须的,但对端到端延迟有很大影响。只要模型支持,就应该保持开启。
--model_name "Qwen/Qwen3-4B-Instruct-2507" \
--responses_api_base_url "http://127.0.0.1:8000/v1"
协议相同,但模型运行在 Hugging Face 托管的 GPU 上。你也可以把任何聊天模型部署为 Inference Endpoint,然后将语音循环指向该端点 URL:
--responses_api_base_url "https://<your-endpoint>.endpoints.huggingface.cloud/v1" \
--responses_api_api_key "$HF_TOKEN"
如果你不想自己管理端点,也可以使用 Inference Provider。Hugging Face 会通过一个统一 URL 将你的请求路由到第三方后端(例如 Together、Fireworks、Replicate):
--model_name "Qwen/Qwen3.6-35B-A3B:deepinfra" \
--responses_api_base_url "https://router.huggingface.co/v1" \
当你想在零基础设施的情况下测试前沿模型时,把同一个标志指向 OpenAI:
--model_name "gpt-5.4" \
--responses_api_api_key "$OPENAI_API_KEY"
对于任何实现了该协议的提供商(OpenRouter、Together、Fireworks,等等),这些 --responses_api_* 标志的用法都是一样的。只需要替换 base URL 和 API key,其余流程保持不变。
如果你用的是 Mac,MLX 是以最小摩擦运行真正模型且延迟表现合理的最佳方式。我们推荐 Qwen3-4B-Instruct-2507,它足够小,在 M 系列芯片上几乎能做到即时响应,同时又足够强大,能够进行对话。
--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 重新转换权重,就使用这个方案。
--llm_backend transformers \
--model_name "Qwen/Qwen3-4B-Instruct-2507"
提示:
Qwen3-4B-Instruct-2507 也是 LLM 的另一个不错选择,因为它在单张消费级 GPU 上能很好地平衡速度和质量。你可以把 --model_name 指向后端支持的任何 HF 模型——例如更大的 Gemma、Qwen 或 Mistral。
如果你把语音引擎运行在笔记本电脑上,而把对话应用运行在 Reachy Mini Wireless 上,唯一变化的就是 URL。请确保引擎绑定到 LAN 地址(而不只是 127.0.0.1),并在 UI 中选择 IP 时,使用机器人端能访问到的那台笔记本电脑的 IP。
如果你不知道自己的 IP,可以这样查找:
macOS
ipconfig getifaddr en0 # wifi
ipconfig getifaddr en1 # ethernet (sometimes en0, varies)
Linux
hostname -I
Windows
ipconfig
查看当前活动网卡下的 “IPv4 Address”。
你要找的是 192.168.x.x 或 10.x.x.x 这一类地址。如果你看到的是 169.254.x.x,那就说明你实际上并没有连上网络。
现在,你已经拥有了一个完全本地化的语音循环:
- 一个用 Silero 倾听的机器人,
- 用 Parakeet-TDT 0.6B v3 进行转录,
- 用你选择的任意 LLM 进行思考,无论是本地 MLX、本地 Transformers、隔壁的 vLLM 或 llama.cpp 服务器,还是托管的 Responses API 端点,
- 并使用 Qwen3-TTS 进行应答。
给 huggingface/speech-to-speech 和 pollen-robotics/reachy_mini_conversation_app 点个星,并到讨论区告诉我们,你最终在自己的机器人上运行了哪套开源级联方案。
来源与参考
收录于 2026-05-28