进阶扩展点:网络形态、唤醒词、MCP 与资源定制
基础的板级适配和对话功能跑通之后,固件还提供了几类扩展入口。本页只做导航:说明每类能力在源码中的位置,并指向详细文档,不重复写没有上游依据的实现方案。
一、网络形态
main/boards/common/ 为不同网络提供了基类,具体板子继承其一:
| 基类 | 用途 |
|---|---|
WifiBoard | Wi-Fi 联网,配网流程见首次启动与网络配置 |
Ml307Board | 通过 ML307 模组使用 4G Cat.1 网络 |
DualNetworkBoard | 在 Wi-Fi 与 ML307 之间切换,网络类型保存在 Settings 中,默认值由板级构造参数给出 |
EthernetBoard、RndisBoard、Nt26Board | 其他网络形态的基类,具体用法请参考使用它们的板子目录 |
bread-compact-ml307 等板子是 ML307 4G 的参考实现,接线见硬件搭建指南中的 4G 模块部分。
二、唤醒词与音频处理
- 唤醒词类型由 Kconfig 的
WAKE_WORD_TYPE选择:AFE 唤醒词、无 AFE 的 WakeNet、MultiNet 自定义唤醒词或关闭,各芯片的可选项见芯片支持与存储规格。 - 自定义唤醒词有两条路径:编译选项(
CUSTOM_WAKE_WORD等)或打包进assets.bin,详见自定义 Assets 指南。 - 打开
SEND_WAKE_WORD_DATA时,唤醒后会把最近约两秒的音频作为对话的第一条消息发给服务器(PSRAM 环形缓冲,见main/audio/README.md)。
三、MCP 工具
设备端通过 main/mcp_server.* 注册工具,供大模型控制设备,也有仅限用户调用的工具(如 self.assets.set_download_url)。注册方式和内置工具列表见 MCP 物联网控制用法,协议流程见 MCP 协议。板子可以在自己的初始化代码里添加工具,例如 bread-compact-esp32 用 LampController 做灯控示例。
四、通知、字体补充与表情
- 异步语音通知(notify):云端在设备空闲时下发单向语音通知,并按时间轴显示字幕。
- 动态文字 Glyph Push 扩展:设备字库缺字时,由服务器下发位图 glyph。
- Emoji 心情显示:大模型通过 Emoji 表达情绪,设备显示对应表情。
五、配网与升级
- BluFi 配网指南:用蓝牙配置 Wi-Fi。
- OTA 版本检查、激活码和固件升级由
main/ota.*与Application完成,流程见首次启动。 - assets 分区可独立于固件升级,见自定义 Assets 指南。
六、电源管理
Board 定义了三个省电级别:LOW_POWER、BALANCED、PERFORMANCE,由板级的 SetPowerSaveLevel() 实现;boards/common/ 还提供 power_save_timer、sleep_timer 与电池监测等辅助类。是否进入睡眠由 Application::CanEnterSleepMode() 判断。具体行为因板而异,请阅读目标板子的源码。
相关文档
对照来源:78/xiaozhi-esp32 v2.5.2 的 main/boards/common/、main/Kconfig.projbuild、main/mcp_server.cc、main/audio/README.md。