進階擴充點:網路形態、喚醒詞、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。