AI 能力與分工:裝置端做什麼,服務端做什麼

AI 能力與分工:裝置端做什麼,服務端做什麼

小智韌體是語音互動的入口,不是大模型的執行環境:裝置負責喚醒、音訊處理、編解碼、顯示和工具執行;語音識別(ASR)、大模型對話(LLM)和語音合成(TTS)由服務端完成。本頁按韌體 v2.5.2 的原始碼和上游文件,整理這條分工線、各環節的開關在哪裡,以及幾個常見誤解。

一次對話的流程

  flowchart LR
    A[喚醒詞或按鍵] --> B[裝置:音訊採集與處理]
    B --> C[Opus 編碼上行]
    C --> D[服務端:ASR、LLM、TTS<br>或 Realtime 端到端模型]
    D --> E[Opus 下行]
    E --> F[裝置:解碼並播放]
    D -. stt / llm / tts 訊息 .-> G[裝置:顯示文字與表情]
    D -. MCP 呼叫 .-> H[裝置:執行工具]
  • 上行:裝置把麥克風的單聲道 16 kHz 音訊編碼為 Opus(幀時長 60 ms)發給服務端;
  • 下行:服務端下發 Opus 音訊,協議文件示例中的下行取樣率為 24000 Hz;
  • JSON 訊息:stt 攜帶識別文字,llm 攜帶表情(emotion),tts 標記語音合成的開始、每句文字和結束,欄位見 WebSocket 協議;
  • 對話方案:既支援傳統的流式 ASR + LLM + TTS,也支援 Realtime 端到端語音模型,兩者都由服務端實現。

裝置端負責的環節

環節裝置端做什麼條件與開關
喚醒詞基於 ESP-SR 離線檢測:WakeNet,自訂喚醒詞用 MultiNet;ESP32-S3 的預設配置使用「你好小智」模型Kconfig WAKE_WORD_TYPE;自訂喚醒詞需要 ESP32-S3 / P4 / S31 並帶 PSRAM;自訂詞用拼音、空格分隔,閾值 1~99,越小越靈敏,預設 20
回聲消除與 VADESP32-S3 / P4 / S31 使用 AFE,啟用音訊處理時帶 AEC 與 VAD;ESP32 / C3 / C5 / C6 輸出原始單聲道 PCM,不做 AEC 和 VADUSE_AUDIO_PROCESSOR 預設開;裝置端 AEC USE_DEVICE_AEC 預設關,只對 Kconfig 中列出的開發板可選;服務端 AEC 在 Kconfig 中標註為不穩定
編解碼與傳輸Opus 編解碼;WebSocket 或 MQTT + UDP使用哪種協議由服務端在 OTA 回應中指定,見 首次啟動
監聽模式自動停止、手動停止、Realtime;Realtime 需要 AEC 支援協議中 listen 訊息的 mode 取 auto、manual、realtime
喚醒詞音訊上傳喚醒後把最近約 2 秒的音訊作為對話的第一條資料發給服務端SEND_WAKE_WORD_DATA 預設開,僅 AFE 喚醒詞與自訂喚醒詞可用
顯示與表情按 llm 訊息中的 emotion 切換表情見 表情與情緒

各晶片可選的喚醒詞型別、音訊引擎和 PSRAM 要求見 晶片支援與儲存規格,擴充入口見 進階擴充點。

裝置控制與攝影機

裝置端 MCP 讓大模型呼叫裝置上的工具(音量、燈光、馬達、GPIO 等),雲端 MCP 擴充大模型本身的能力,協議與用法見 MCP 文件。

帶攝影機的開發板會註冊工具 self.camera.take_photo,參數是 question。大模型決定呼叫時,裝置拍照並編碼為 JPEG,以 multipart/form-data POST(欄位 question 與 file)到服務端指定的網址,把回傳的文字作為工具結果。這個網址和令牌由服務端在 MCP initialize 的 capabilities.vision 中下發,見 MCP 協議;沒有下發時工具會回傳「Image explain URL or token is not set」。影象理解由服務端完成。

聲紋識別

上游 README 把基於 3D Speaker 的聲紋識別列為已實現功能。v2.5.2 的韌體原始碼裡沒有聲紋相關程式碼,只在 README 等文件中提到,能否使用以所接入服務端的說明為準。

介面語言

韌體在 menuconfig 的 Default Language 中提供 40 個選項,main/assets/locales 下也是 40 個語言目錄;上游 README 的文字寫作 38 種。語言目錄(以 en-US 為例)包含數字、歡迎、啟用、配網、升級、PIN 與註冊錯誤等提示的 OGG 音訊和 language.json。語音提示優先使用本地化資源,缺失時回退到英文。喚醒詞、字型、表情和聊天背景可以用上游的 Assets 生成器 線上定製,見 自訂 Assets 指南。

幾個常見誤解

  • 「裝置本地執行大模型或 TensorFlow Lite」:v2.5.2 儲存庫中沒有 TensorFlow Lite 的相關檔案,韌體原始碼和依賴清單裡也沒有 ESP-DL。裝置端模型只有 ESP-SR 的喚醒詞和 AFE 音訊處理,對話由服務端完成。
  • 「韌體內建某家大模型或語音服務的接入」:韌體只實現與服務端通訊的協議(WebSocket、MQTT + UDP)。接入哪家模型取決於服務端的配置,官方伺服器與自建服務端的區別見 自建服務端。
  • 「識別率、延遲、功耗有標準數字」:上游沒有公佈裝置級的識別率、延遲或功耗指標,這些取決於所接入的服務端、網路和開發板。本站不提供沒有上游依據的數字。

繼續閱讀

來源:78/xiaozhi-esp32 v2.5.2 的 main/audio/README.md、main/Kconfig.projbuild、main/mcp_server.cc、main/boards/common/esp32_camera.cc、sdkconfig.defaults.esp32s3 與 README_zh.md。