第 9 章:音声対話
この章の目標:小智 AI クラウドサービスに接続し、NanoCam と自然な音声対話を行います。
本章について
本章では XiaoZhi AI モード(ai_mode:6)を扱います。重要:モード 6(音声対話)とモード 7(ESP-Claw)は同じ 1 つのファームウェア(nanocam_espclaw/)を共用し、デバイス起動時に NVS に保存された ai_mode 値に応じて異なる MCP ツールセットをロードするだけの違いです。
| 比較項目 | XiaoZhi AI (mode 6) | ESP-Claw (mode 7) |
|---|---|---|
| 音声対話 | ✅ ASR→LLM→TTS | ✅ 同じ音声パイプライン |
| MCP ツール | 汎用ツール(音量/撮影など) | 汎用ツール + 5 つのハードウェア専用ツール |
| 視覚理解 | self.camera.take_photo | self.camera.inspect_image (マルチモーダル視覚) |
| LED 制御 | ❌ | ✅ 音声で色調整 |
| 適用シーン | 汎用 AI 対話、子供の教育 | ハードウェア制御、ビジュアル点検、スマートホーム |
本章は XiaoZhi AI(モード 6) の音声対話の中核機能に焦点を当てます。ESP-Claw のハードウェア制御機能については第 11 章:ESP-Claw 音声制御をお読みください。
原理
NanoCam は小智 AI オープンソースフレームワークを統合し、WebSocket / MQTT プロトコルで LLM サーバーに接続して完全な音声対話パイプラインを実現します:
ユーザーが話す → ES8311 マイクで収音 → Opus エンコード
→ WebSocket → クラウド ASR 音声認識
→ LLM 大規模モデルが返答を生成
→ TTS 音声合成 → Opus デコード
→ NS4150B アンプ → スピーカー再生全二重設計:AI が話している最中でもユーザーが直接割り込め(barge-in)、まるで人と会話しているかのような体験が得られます。
ハードウェア要件
本章は音声機能を扱うため、以下のハードウェアが必要です:
NanoCam コアボード(ES8311 Codec + AP2718AT マイク搭載)
NanoCam ベースボード(NS4150B アンプ + CH340K 搭載)
スピーカー(ベースボードのスピーカーインターフェース、VON/VOP に接続)
コアボードのみでもテストできます(ES8311 のヘッドホン出力でモニタリング)。マイクは AP2718AT アナログ MEMS シリコンマイクで、C26 の直流阻止コンデンサを介して ES8311 MIC1P に接続されています。
手順
9.1 XiaoZhi AI ファームウェアの書き込み
XiaoZhi AI は nanocam_espclaw/ という独立したファームウェアプロジェクトを使用します:
cd nanocam_espclaw
idf.py set-target esp32s3
idf.py build
idf.py -p COMx flash monitor起動後はデフォルトで XiaoZhi AI モードになります。
9.2 xiaozhi.me クラウドサービスへの接続
NanoCam は出荷時から xiaozhi.me 公式クラウドサービス(無料)に接続する設定で、自前サーバーの構築は不要です。
xiaozhi.me でアカウントを登録
デバイスの電源を入れると、自動的に 6 桁のアクティベーションコードを読み上げます
xiaozhi.me コンソールでアクティベーションコードを入力 → デバイスをバインド
コンソールで LLM モデル(Qwen / DeepSeek など)を選択
アクティベーションは 1 回だけで、以降は電源投入ごとに自動接続されます。
9.3 初回の対話
プロンプト音が聞こえたら会話できます:
あなた: "你好小智、今日の天気はどう?"
NanoCam: "今日の天気を調べてみますね..."ウェイクワードは 「你好小智」(デフォルト)です。
9.4 よく使う対話シーン
💬 "ジョークを言って" → AI が音声で回答
💬 "5 分後にアラームをセットして" → アラーム機能
💬 "今何時?" → 時刻の読み上げ
💬 "軽い音楽をかけて" → ネット経由で音楽再生
💬 "ブラックホールとは?" → 知識 Q&A自前サーバーの構築(任意)
プライバシー上の要件がある場合、または自前の LLM を使いたい場合は、小智 AI オープンソースサーバーをデプロイできます:
git clone https://github.com/xinnan-tech/xiaozhi-esp32-server
cd xiaozhi-esp32-server
pip install -r requirements.txt
python app.pyファームウェアのサーバーアドレスは OTA システム(sdkconfig の CONFIG_OTA_URL)を通じて配信され、デバイスは電源投入後に自動的にサーバーアドレスを要求します。
XiaoZhi AI は小智 AI オープンソースサーバー(WebSocket 私有プロトコル + ASR/LLM/TTS パイプライン)を使用します。ESP-Claw モードではこれに加え、視覚分析機能の Vision API URL と token が MCP ハンドシェイク段階でサーバーから配信され、ファームウェア側で独自に設定する必要はありません。
トラブルシューティング
| 症状 | 考えられる原因 | 解決方法 |
|---|---|---|
| 音が聞こえない | スピーカーが未接続 | ベースボードのスピーカーインターフェースを確認 |
| 音声認識が不正確 | 環境ノイズが大きい | マイクに近づいて話す(距離 < 1m) |
| 接続できない | WiFi が未設定 | まずシリアルで設定 sta_ssid:xxx |
| アクティベーションコードがない | 初回起動が未完了 | 30 秒待つと、デバイスが自動的に読み上げます |
| 応答が遅い | LLM サーバー側の遅延 | xiaozhi.me でより高速なモデルを選択、またはサーバーを自前構築 |
シリアル設定などの完全なコマンドはシリアルプロトコルマニュアルを参照。
次の章:第 10 章:AI 視覚理解

