モデル別実行レシピ

ESPHomeで音声サテライトを作る:ESP32-S3のマイクとウェイクワード設定

ウェイクワードはボードが検知し、音声そのものはHome Assistantが処理します。

ESPHomeのvoice_assistantはマイクの音をHome Assistantへ送り、micro_wake_wordはボードの中でウェイクワードを見つけます。両方を設定に入れると市販のサテライトのように動き、マイクとスピーカーの部品は選んだものを使えます。

実行条件と要点
  • voice_assistantはマイクの音をHome Assistantへ送ります。
  • micro_wake_wordはボードの中でウェイクワードを検知し、サーバー負担を減らします。
  • オーディオとBluetoothを同時に使うとメモリが足りなくなることがあります。

市販品ではなく自作する場合

市販のサテライトはマイクとスピーカーが一体で設定が簡単です。自作は部屋ごとに形と位置を合わせられ、手持ちのボードがあれば費用も抑えられます。

代わりにマイクの感度とスピーカーのノイズは部品によって大きく変わります。最初に1台だけ作って音を確認し、満足できたら部屋の数だけ増やします。

マイクの横のノートPCに音声波形が表示されています
ボードがウェイクワードを捉えると、そこから音がHome Assistantへ流れます。

ボードと部品の選び方

ボードはPSRAMのあるESP32-S3系が安定します。マイクはI2S方式、スピーカーはアンプ付きのI2Sアンプボードを使うと配線が簡単になります。

マイクとスピーカーが同じピンに重ならないよう、ボードのピン配置を先に確認します。音が小さい、途切れる場合は電源不足が多いので、USB電源を十分に与えることから確認します。

設定にウェイクワードを入れる

micro_wake_wordはボードの中でウェイクワードを検知するコンポーネントです。モデル名をリストに入れるとESPHomeがビルドに含め、起動後にそのモデルで検知を始めます。

初回起動ではリストの最初のモデルだけが有効です。複数入れておくと、Home Assistantからどれを使うか切り替えられます。

ESPHomeのウェイクワード設定
micro_wake_word:
  models:
    - model: okay_nabu
リストの最初のモデルが既定で有効になります。モデル名はESPHomeのモデルリポジトリの短い名前をそのまま使います。
書類の束の横で検索システムを動かす小型PC
マイクとスピーカーは別のピンに分け、電源を十分に与えます。

音声パイプラインにつなぐ

ボードをHome Assistantに追加するとWyoming1サービスとして認識され、音声アシスタント画面でパイプライン2を指定できます。パイプラインにはローカルの文字起こし(例:Whisper)と合成(例:Piper)のエンジンが入り、サテライトは音だけをやり取りします。

応答をサテライトのスピーカーではなく別の機器から出すなら、media_playerで出力を回せます。部屋に大きなスピーカーがある場合はこの方法が楽です。

資源の限界を先に見る

オーディオと音声の構成はボードのRAM3とCPU4を多く使います。コンポーネントを増やしすぎると再起動を繰り返したり応答が途切れたりするので、最初は音声関連だけを入れて1つずつ足します。

特にBluetoothはオーディオ構成と併用すると問題が起きると知られています。Bluetoothスピーカーも必要なら、ボードを分けるか有線スピーカーを使うほうが安定します。

マイク、ヘッドホン、音声波形を表示したモニターが見えます。
音声構成だけを先に載せ、Bluetoothなどの追加機能は後から足します。

用語の注釈

  1. Wyoming — Home Assistantと音声サービスが音声とテキストをやり取りするプロトコルです。認証も暗号化もないため、信頼できるネットワークでだけ使います。

    本文に戻る
  2. パイプライン — 入力から出力まで続く処理段階のまとまりです。段階ごとに異なるモデルやツールを使うことがあります。

    本文に戻る
  3. システムRAM — プログラムの実行中にデータを一時保存するシステムメモリです。

    本文に戻る
  4. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
ESPHomeのvoice_assistantはマイクの音をHome Assistantへ送り、micro_wake_wordはボードの中でウェイクワードを見つけます。両方を設定に入れると市販のサテライトのように動き、マイクとスピーカーの部品は選んだものを使えます。