好的,这是您要求的英文文章的中文翻译,已按照要求保留原文结构、Markdown 格式、技术术语和代码块。
Reachy Mini 实现完全本地化
回到文章
Reachy Mini 实现完全本地化 发布于 2026 年 5 月 27 日 在 GitHub 上更新 点赞 10 +4
Amir Mahla A-Mahla 关注 Andres Marafioti andito 关注
快速开始 本地运行 LLM 设置语音到语音 将 Reachy Mini 连接到语音到语音 深入探讨 为什么要运行你自己的语音到语音服务器? 我们的推荐默认配置:VAD, STT, TTS 选择你的 LLM 在笔记本上运行引擎,在机器人上运行应用 总结
在组装好你的 Reachy Mini 后,你需要安装对话应用并开始与它交谈。直到现在,你都必须将音频发送到服务器。但这种情况已经改变了。今天,我们将带你了解如何在本地运行整个技术栈。这个技术栈由我们的语音到语音(speech-to-speech)库驱动,它是一个级联的 VAD → STT → LLM → TTS 管道,并暴露了一个兼容 Realtime API 的 /v1/realtime WebSocket。一旦你启动了后端,就可以从 UI 界面将机器人指向它。
在当今的开源领域,级联架构是最灵活的选择,并且如果组件选择得当,它们也是最快的。我们会推荐我们最喜欢的组件,但级联架构的重点在于你可以自由替换它们。新的模型每周都会发布。
TL;DR 为你的 Reachy Mini 部署一个本地语音后端。我们使用我们的语音到语音(speech-to-speech)库,采用级联架构。推荐配置:使用 Gemma 4 的 llama.cpp、Silero VAD、Parakeet-TDT STT、Qwen3-TTS。
快速开始
这篇博客将指导你如何完全在本地运行与 Reachy Mini 的对话。无需云端,无需 API 密钥,没有数据离开你的机器。以下是展示此过程的视频:
本地运行 LLM
为了运行 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— 保留完整的滑动窗口注意力缓存,而不是重新计算。在 Gemma 上,用少量 RAM 换取显著更快的提示处理速度。
设置语音到语音
我们首先简单地安装这个库:
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 和 Qwen3TTS,但后续启动会很快。以下视频展示了本地对话模式:
现在,在你尝试了 --mode local 模式之后,你可以不带该选项再次运行命令,以便为机器人提供语音到语音服务。
将 Reachy Mini 连接到语音到语音
一旦你运行了 llama.cpp 和 speech-to-speech,你就可以通过桌面应用启动机器人,并启动对话应用。在对话应用的 UI 中,你需要通过在 HF 后端点击“编辑连接”来选择本地模式。以下视频展示了如何操作:
这样就完成了。你可以开始与你的机器人对话了。
管道的每个阶段都是一种权衡:有速度更快但质量较低的 TTS 模型,也有速度较慢但质量更高的 STT 模型。我们针对多语言进行了优化,而你可能希望针对单一语言进行优化。博客的其余部分将介绍如何进行定制。
深入探讨
为什么要运行你自己的语音到语音服务器?
托管的实时后端很方便,但运行你自己的引擎可以解锁三个优势:
- 隐私。音频永远不会离开你的网络,整个管道在你控制的硬件上运行。
- 无 API 成本。没有按分钟或按 Token 计费。
- 完全控制管道。可以替换任何组件:VAD、STT、LLM、TTS。只要 Hub 🤗 上有更好的东西出现。
speech-to-speech 仓库通过一个单一的 CLI 为你提供了所有这些功能。它会在 /v1/realtime 启动一个 WebSocket 服务器,该服务器使用 Reachy Mini 已经知道如何通信的相同协议。
我们的推荐默认配置:VAD, STT, TTS
一个级联语音管道有四个阶段:VAD、STT、LLM 和 TTS。对于其中三个,我们选择了可靠的默认配置,以便你可以专注于 LLM:
| 阶段 | 选择 | 原因 | | :--- | :--- | :--- | | VAD | Silero VAD v5 | 体积小、准确、可在 CPU 上运行。是开源语音代理领域事实上的默认选择。 | | STT | Parakeet-TDT | 支持流式处理、速度非常快、英语质量出色。 | | TTS | Qwen3-TTS | 富有表现力、低延迟、支持多语言、支持自定义语音。 |
我们对这些选择有明确的倾向,如果你有自己的偏好,可以随意替换它们。
选择你的 LLM
LLM 是对系统延迟和整体性能影响最大的层级。我们支持两种选择:在本地运行模型(llama.cpp、MLX、Transformers、vLLM),或使用支持 Responses API 的服务器(OpenAI、Gemini、HF Inference Endpoints、llama.cpp、vLLM 等)。
Responses API:将大脑与语音循环解耦
系统的主要瓶颈是 LLM 推理延迟。为了解决这个问题,我们支持通过 Responses API 协议暴露的外部推理引擎。因此,speech-to-speech 引擎支持第二种模式,即只要 LLM 能使用 Responses API 协议进行通信,它就可以运行在独立的进程中。你可以在一个终端启动你的模型服务器,在另一个终端启动语音循环,两者通过 HTTP 进行通信。
选项 1:在一个终端运行 llama.cpp,在另一个终端运行 speech-to-speech
终端 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