拡張ポイント:ネットワーク形態、ウェイクワード、MCP、アセットのカスタマイズ
ボードの基本対応と会話が動いた後は、ファームウェアが提供するいくつかの拡張入口を使えます。このページはナビゲーション専用です。各機能がソースのどこにあるかを示し、詳細ドキュメントへ案内します。上流の裏付けがない実装方法は書いていません。
1. ネットワーク形態
main/boards/common/ にはネットワーク形態ごとの基底クラスがあり、個々のボードはそのうち 1 つを継承します。
| 基底クラス | 用途 |
|---|---|
WifiBoard | Wi-Fi 接続。ネットワーク設定の流れは初回起動とネットワーク設定を参照 |
Ml307Board | ML307 モジュールによる 4G Cat.1 ネットワーク |
DualNetworkBoard | Wi-Fi と ML307 を切り替える。ネットワーク種別は Settings に保存され、既定値はボードのコンストラクタ引数で与えられる |
EthernetBoard、RndisBoard、Nt26Board | その他のネットワーク形態の基底クラス。使い方は、これらを使うボードのディレクトリを参照 |
bread-compact-ml307 などは ML307 4G のリファレンス実装です。配線はハードウェア構築ガイドの 4G モジュールの項を参照してください。
2. ウェイクワードとオーディオ処理
- ウェイクワードの種類は Kconfig の
WAKE_WORD_TYPEで選びます。AFE ウェイクワード、AFE なしの WakeNet、MultiNet のカスタムウェイクワード、または無効です。チップごとの選択肢はチップ対応とストレージ仕様を参照してください。 - カスタムウェイクワードには 2 つの経路があります。コンパイルオプション(
CUSTOM_WAKE_WORDなど)か、assets.binへのパッケージ化です。詳細はカスタム Assets ガイドを参照してください。 SEND_WAKE_WORD_DATAを有効にすると、ウェイク後に直近約 2 秒のオーディオが会話の最初のメッセージとしてサーバーに送られます(PSRAM のリングバッファ。main/audio/README.mdを参照)。
3. MCP ツール
デバイスは main/mcp_server.* でツールを登録し、大規模言語モデルがデバイスを制御できるようにします。ユーザーだけが呼び出せるツール(self.assets.set_download_url など)もあります。登録方法と組み込みツール一覧は MCP IoT 制御の使い方、プロトコルの流れは MCP プロトコルを参照してください。ボードは自身の初期化コードでツールを追加できます。たとえば bread-compact-esp32 は LampController をライト制御の例として使っています。
4. 通知、フォント補完、絵文字
- 非同期音声通知(notify):デバイスがアイドルのときにクラウドが一方向の音声通知を送り、タイムラインに沿って字幕を表示します。
- 動的テキスト Glyph Push 拡張:デバイスのフォントに文字がない場合、サーバーがビットマップのグリフを送ります。
- 絵文字による感情表示:大規模言語モデルが絵文字で感情を表現し、デバイスが対応する表情を表示します。
5. ネットワーク設定とアップグレード
- BluFi 設定ガイド:Bluetooth で Wi-Fi を設定します。
- OTA のバージョン確認、アクティベーションコード、ファームウェアアップグレードは
main/ota.*とApplicationが処理します。流れは初回起動を参照してください。 - assets パーティションは、ファームウェアとは独立してアップグレードできます。カスタム Assets ガイドを参照してください。
6. 電源管理
Board は LOW_POWER、BALANCED、PERFORMANCE の 3 つの省電力レベルを定義しており、ボード側の 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。