ESP32S3 + reSpeaker を使用してクラウド AI Xiaozhi 音声アシスタントをデプロイする
目標:ESP32S3 を reSpeaker XVF3800 と連携させ、クラウド大規模モデルを活用した Xiaozhi アシスタントを実行する。 プロジェクトソース:https://github.com/Seeed-Projects/Xiaozhi_Esp32S3_reSpeaker Seeed-Projects:https://github.com/Seeed-Projects
reSpeaker XVF3800 は、XMOS XVF3800 チップをベースとした専門的な 4 マイク円形アレイです。デュアルモード、360° 遠距離集音(最大 5m)、音響エコーキャンセレーション(AEC)、自動ゲイン制御(AGC)、到来方向(DoA)、残響除去、ビームフォーミング、ノイズ抑制などの機能により、ノイズの多い環境でも信頼性の高い音声収集を提供します。その堅牢な収集とノイズ除去能力により、Xiaozhi はより優れた「耳」を得ることができます。

パート 1:reSpeaker ハードウェアファームウェアの準備
このセクションは reSpeaker XVF3800 ハードウェア自体を対象としています。デフォルトの USB ファームウェアは I2S 出力をサポートしていないため、XIAO ESP32S3 などのホストで使用するには専用の I2S ファームウェアをフラッシュする必要があります。
注意:I2S ファームウェアは I2C DFU を使用します(USB DFU ではありません)。デバイスが既に I2S ファームウェアを持っているが異常な動作をする場合は、まず「セーフモード」に入ってから USB DFU を使用してファームウェアを復旧または切り替えてください。セーフモードは USB DFU と I2C DFU の両方をサポートします。 公式リファレンスを参照:
1.1 準備
ハードウェア
- reSpeaker XVF3800 USB 4-Mic Array
- USB Type-C データケーブル(電源 + データ)
- コンピュータ:Windows / macOS / Linux
- XIAO ESP32S3 と統合する場合は、I2S / I2C / 電源接続の適切なはんだ付けを確認してください
ソフトウェア(dfu-util のインストール)
Windows:
dfu-utilバイナリをダウンロードして解凍します(例:D:\dfu-util-0.11-binaries\win64\)。dfu-util.exeを含むディレクトリを PATH に追加します。dfu-util -Vで確認します。dfu-util -lがLIBUSB_ERROR_NOT_SUPPORTEDを返す場合は、Zadig を使用してデバイスドライバを WinUSB に置き換えてください。
macOS(Homebrew):
brew install dfu-util
dfu-util -l
Linux(Debian / Ubuntu / Raspberry Pi OS):
sudo apt update
sudo apt install dfu-util
sudo dfu-util -l
I2S ファームウェアのダウンロード
- ファームウェアリポジトリにアクセス:https://github.com/respeaker/reSpeaker_XVF3800_USB_4MIC_ARRAY/tree/master/xmos_firmwares
i2sで始まる名前の.binファイルをダウンロードします(例:respeaker_xvf3800_i2s_dfu_firmware_v1.0.x.bin)。
1.2 接続と DFU モードへの移行
配線に関する注意
- コンピュータに接続する際は、3.5mm ヘッドフォンジャック近くの USB-C ポート(XMOS 側)を使用してください。XIAO 側のポートは使用しないでください。
セーフモードに入る(推奨)
次の場合に使用:現在のファームウェアが I2S だが USB に変更したい場合、ファームウェアが破損している場合、または間違ったファームウェアがフラッシュされた場合。
- 電源を完全に取り外します。
- オンボードの "Mute" ボタンを押し続けます。
- ボタンを押し続けながら、電源を再接続します。
- 赤色 LED が点滅し始めたらボタンを離します — デバイスはセーフモードになります。
1.3 dfu-util を使用した I2S ファームウェアのフラッシュ
デバイスが認識されることを確認
# Linux / Raspberry Pi OS
sudo dfu-util -l
# macOS / Windows
dfu-util -l
期待される出力には Found DFU: [2886:001a] ... alt=1, name="reSpeaker DFU Upgrade" が含まれます。
フラッシュコマンド
# Linux / Raspberry Pi OS (replace path)
sudo dfu-util -R -e -a 1 -D /path/to/respeaker_xvf3800_i2s_dfu_firmware_v1.0.x.bin
# macOS / Windows (no sudo)
dfu-util -R -e -a 1 -D /path/to/respeaker_xvf3800_i2s_dfu_firmware_v1.0.x.bin
パラメータ:-R(リセット/再起動)、-e(消去)、-a 1(Upgrade alt に書き込み)、-D(ファームウェアファイル)。
1.4 検証とトラブルシューティング
ファームウェアの検証
フラッシュ後、デバイスは自動的に再起動し、I2S ファームウェアがアクティブになります。ESP32S3 を I2S ホストとしてデバイスからオーディオデータを読み取ることで確認できます。
FAQ
- Q:
dfu-util -lでデバイスが表示されない?- USB ケーブルとポートを確認してください(XMOS 側のコネクタを使用する必要があります)。
- デバイスが現在 I2S ファームウェアを実行している場合は、フラッシュ前にセーフモードに入ってください。
- Windows ユーザー:Zadig 経由で WinUSB ドライバを確認してください。
- Q:フラッシュ中にエラーが発生?
- 別の USB ケーブルまたはホストポートを試し、セーフモードで再試行してください。
- Q:フラッシュ後にオーディオが出ない?
- I2S ホスト設定(サンプルレート、チャンネル)がファームウェア設定と一致することを確認してください。
パート 2:Xiaozhi ソフトウェア適応変更
このセクションでは、Xiaozhi プロジェクトが reSpeaker XVF3800 をサポートするためのコード変更について説明します。
2.1 変更の概要
主要な変更:
- I2C マスターを一元管理し、競合を回避するための共有 I2C バスラッパーを追加。
- 起動時のハードウェアプローブを追加:アプリケーション開始前に I2C 経由で XVF3800 をプローブ。
- ボードレベル設定の分離:ピンとアドレスに
config.hマクロを使用してポーティングを容易に。 - ビルド更新:新しい BSP ソースファイルをビルドに含める。
2.2 主要なコード変更箇所
A. 新規:共有 I2C バス
- ファイル:
main/shared_i2c_bus.h/main/shared_i2c_bus.c - 目的:デフォルトで内部プルアップを有効にした ESP-IDF I2C マスター API を使用する
shared_i2c_master_bus_get()を提供。
B. 新規:reSpeaker オーディオハードウェア初期化
- ファイル:
main/audio_bsp.c - 関数:
audio_hardware_init() - ロジック:共有 I2C バスを取得し、
i2c_master_probe()を呼び出してXVF3800_I2C_ADDR(0x2C)を検出し、プローブログを出力。
C. 変更:起動順序
- ファイル:
main/main.cc - 変更:
Application::GetInstance().Start()の前にaudio_hardware_init()を呼び出し。
D. 変更:ビルドとボード設定
CMakeLists.txt:ビルドソースにaudio_bsp.cとshared_i2c_bus.cを追加。boards/xiao-esp32s3-sense/config.h:I2C_SDA_PIN(5)、I2C_SCL_PIN(6)を追加。XVF3800_I2C_ADDR(0x2C)を追加。- 完全な I2S ピンとビット幅設定。
パート 3:ビルド、フラッシュ、デプロイ
このセクションでは、適応されたファームウェアのコンパイルと ESP32S3 へのフラッシュについて説明します。
3.1 ハードウェア接続の確認
ESP32S3 と reSpeaker XVF3800 間の接続を確認:
- I2S オーディオラインが正しく接続されている。
- I2C 制御ラインが接続されている:ESP32S3 GPIO5(SDA)/ GPIO6(SCL)から XVF3800 へ。
3.2 ビルドターゲットの選択
idf.py set-target esp32s3
3.3 Menuconfig
idf.py menuconfig
必要な調整:
- ボードを選択:
Xiaozhi Assistant -> Board Type -> Seeed Studio XIAO ESP32S3 Sense。 - ピン競合を回避:I2S が GPIO43/44 を使用する場合、コンソール出力を USB に切り替え:
Component config -> ESP System Settings -> Channel for console output -> USB Serial/JTAG。 - フラッシュ設定:
Serial flasher config -> Flash size -> 8 MBおよびPartition Table -> Custom partition CSV file -> partitions/v1/8m.csv。
3.4 ビルドとフラッシュ
idf.py build
idf.py flash
3.5 ログの監視と検証
idf.py monitor
パート 4:ネットワーク設定とアクティベーション
フラッシュ後、デバイスは AI 会話機能を使用するためにネットワーク設定とクラウドバインディングが必要です。
4.1 デバイスホットスポットへの接続
- スマートフォンで
Xiaozhi-XXXXXXという名前の Wi-Fi SSID を見つけます。 - ブラウザを開いて
http://192.168.4.1にアクセスします。
4.2 Wi-Fi の設定
- キャプティブポータルでネットワークスキャンを約 5 秒待ちます。
- 2.4GHz Wi-Fi を選択します(iPhone ホットスポット:「最大互換性」を有効にしてください)。
- パスワードを入力して "Connect" をクリックします。
- "Login successful" の後、デバイスは約 3 秒で再起動します。

4.3 管理バックエンドへのデバイス追加
- デバイス ID を取得:デバイスがオンラインになった後、「Hello Xiaozhi」と言ってウェイクし、6 桁の認証コードを聞きます。
- https://xiaozhi.me にアクセスしてサインアップ/サインインします。
- "Agents" またはデバイス管理セクションで「デバイスを追加」を選択し、6 桁のデバイス ID を入力して送信します。

完了すると、reSpeaker–Xiaozhi デバイスが準備完了し、動作可能になります。
そして、設定で出力言語をお好みに変更することをお忘れなく!

技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。