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。