回到文章Reachy Mini 組裝完成後,您將安裝對話應用程式並開始與其對話。在此之前,您必須將音訊傳送到伺服器,但現在已不再需要。今天,我們將引導您如何在本地運行整個堆疊。
這個堆疊由語音轉語音技術驅動,這是一個串聯式 VAD → STT → LLM → TTS 管線,它提供了一個相容 Realtime API 的 /v1/realtime WebSocket。一旦啟動後端,只需從使用者介面將機器人指向它即可。
串聯式方法是當今開源領域中最靈活的選擇,並且搭配正確的組件,它們也能達到最快的速度。我們將推薦我們最喜歡的組件,但串聯式方法的重點在於您可以隨意替換它們。每週都有新的模型發布。
懶人包
為您的 Reachy Mini 部署一個本地語音後端。
我們使用語音轉語音函式庫,這是一種串聯式方法。
推薦組件:llama.cpp 搭配 Gemma 4、Silero VAD、Parakeet-TDT 0.6B v3 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 — 保留完整的滑動視窗注意力快取,而不是重新計算。這會犧牲一些 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 後,您可以再次運行不帶該選項的指令,將語音轉語音功能部署到機器人。
將 Reachy Mini 連接到語音轉語音系統
一旦 llama.cpp 和語音轉語音系統運行起來,您就可以透過桌面應用程式啟動機器人,並啟動對話應用程式。在對話應用程式的使用者介面中,您需要點擊 Hugging Face 後端中的「編輯連線」來選擇本地模式。以下是展示如何操作的影片:
這樣就完成了。您可以開始與您的機器人對話。管線的每個階段都是一種權衡:有品質較低但速度更快的 TTS 模型,也有品質較高但速度較慢的 STT 模型。我們針對多語言進行了優化,您可能希望針對單一語言進行優化。部落格的其餘部分將介紹如何自訂。
深入探討
為何要運行自己的語音轉語音伺服器?
託管的即時後端很方便,但運行自己的引擎可以解鎖三件事:
隱私。音訊永遠不會離開您的網路,整個管線都在您控制的硬體上運行。
無 API 費用。沒有按分鐘或按權杖計費的費用。
完全掌控管線。隨意替換任何組件: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 0.6B v3 支援串流、速度非常快,在英文上品質極佳。
TTS Qwen3-TTS 富有表現力、低延遲、支援多語言,並支援自訂語音。
我們對這些選擇有自己的看法,如果您有偏好,請隨意替換成您自己的組件。
選擇您的 LLM
LLM 是對系統延遲和整體效能影響最大的層級。我們支援兩種選項:本地運行模型(llama.cpp、MLX、Transformers、vLLM),或使用帶有 Responses API 的伺服器(OpenAI、Gemini、Hugging Face 推論端點、llama.cpp、vLLM 等)。
Responses API:將「大腦」與語音迴圈解耦
系統中的主要瓶頸是 LLM 推論延遲。為了解決這個問題,我們支援透過 Responses API 協定公開的外部推論引擎。
因此,語音轉語音引擎支援第二種模式,其中 LLM 位於單獨的程序中,只要它支援 Responses API 協定即可。您在一個終端機中啟動模型伺服器,在另一個終端機中啟動語音迴圈,兩者透過 HTTP 進行通訊。
選項 1:一個終端機運行 llama.cpp,另一個運行語音轉語音
終端機 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 \
--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"
選項 2:一個終端機運行 vLLM,另一個運行語音轉語音
需要 vLLM ≥ 0.21.0。對 Responses API 協定的完整支援,包括語音轉語音後端使用的工具呼叫串流,已在 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> 推理通道。對於更困難的代理任務,您可以將其設定為 true 並讓模型進行推理,但對於自然流暢的對話,我們強烈建議將其關閉:每個思考權杖都是使用者在機器人開始說話之前聽到的靜默延遲。
終端機 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 行啟用多權杖預測 (MTP)。它是可選的,但對端到端延遲有很大的影響。只要模型支援,就保持啟用。
終端機 2:語音轉語音客戶端:
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"
選項 3:Hugging Face 推論端點
相同的協定,但模型在 Hugging Face 託管的 GPU 上運行。將任何聊天模型部署為推論端點,然後將語音迴圈指向端點 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"
選項 4:Hugging Face 推論供應商
如果您不想管理自己的端點,請使用推論供應商。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"
選項 5:OpenAI (或任何相容 OpenAI 的供應商)
當您想在零基礎設施下測試前沿模型時,將相同的參數指向 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 等)都以相同的方式工作。替換基礎 URL 和 API 金鑰,其餘管線保持不變。
運行內部處理的 LLM
選項 1:MLX 上的本地 LLM (Apple Silicon 晶片)
如果您使用的是 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。保持其運行,將對話應用程式連接到本地後端,您就可以與您的機器人對話了。
選項 2:Transformers 上的本地 LLM (CUDA / CPU / MPS)
同樣的概念,但使用標準的 Transformers。如果您在 CUDA 機器、Linux 上,或者您想自由替換模型而無需為 MLX 重新轉換權重,請使用此選項。
speech-to-speech \
--llm_backend transformers \
--model_name "Qwen/Qwen3-4B-Instruct-2507"
提示:Qwen3-4B-Instruct-2507 是 LLM 的另一個不錯的選擇,因為它在單一消費級 GPU 上提供了良好的速度/品質平衡。您可以將 --model_name 指向後端支援的任何 Hugging Face 模型 — 例如更大的 Gemma、Qwen 或 Mistral。
在筆電上運行引擎,在機器人上運行應用程式
如果您在筆電上運行語音引擎,在 Reachy Mini Wireless 上運行對話應用程式,唯一改變的是 URL。確保引擎綁定到區域網路位址(而不僅僅是 127.0.0.1),並在使用者介面中選擇 IP 時使用筆電的 IP 位址。
如果您不知道您的 IP 位址,以下是查找方法:
macOS
ipconfig getifaddr en0 # Wi-Fi
ipconfig getifaddr en1 # 乙太網路(有時是 en0,會有所不同)
Linux
hostname -I
Windows
ipconfig
在您的活動網路介面卡下尋找「IPv4 位址」。
您需要的是 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 加星,並在討論區告訴我們您最終在機器人上運行了哪個開源串聯式系統。
