MrHuang Listener
開発中· プレアルファESP32-S3を用いたWiFiオーディオストリーミングデバイス。デュアルステレオマイクから音声をキャプチャし、ネットワーク経由でPython asyncioのUDPサーバーへストリーミング、そこからMrHuangバックエンドへ引き渡す。MrHuang向けの組み込み音声入力フロントエンドであり、デスクトップのマイクデーモンに対応するハードウェア版。両者とも同一のセルフホスト型音声認識レイヤーに音声を供給するために構築。
AI生成: この技術解説はプロジェクトのソースコードからAIが作成したもので、不正確な記述を含む場合があります。
MrHuang Listenerは、MrHuang向けのハードウェア音声入力フロントエンドです。ESP32-S3が2基のマイクから音声をキャプチャし、WiFi経由でサーバーへストリーミングします。サーバーはそれをMrHuangバックエンドへ転送し、処理を行います。これは開発途中のprealpha段階の学習プロジェクトです。目的は、タイピングせずに音声入力を既存のアシスタントへ届けることで、これまでの作業の大半はファームウェアの立ち上げと、デバイスからクリーンな音声経路を取り出すことに費やされています。
アーキテクチャ
デバイスはESP32-S3上で、Cで書かれたESP-IDFファームウェアを動作させます。INMP441 MEMSマイク2基をステレオのI2S構成で配線し、ファームウェアがI2Sサンプルを読み取り、生PCMをWiFi経由でUDPデータグラムとしてサーバーへストリーミングします。ホスト側ではPython asyncioのUDPサーバーがそのストリームを受信し、AI処理のために音声をMrHuangバックエンドへ引き渡します。デバイス側でのOpusエンコード(WiFiのビットレートを抑えるため)は次の予定ステップです。
INMP441 ×2 (stereo I2S)
│
▼
┌─────────────────────────┐
│ ESP32-S3 │
│ ESP-IDF (C) │
│ I2S capture → UDP/WiFi │
└─────────────────────────┘
│ raw PCM · UDP
▼
┌─────────────────────────┐
│ Python UDP server │
│ receive · hand off │
└─────────────────────────┘
│
▼
MrHuang backendこの分割により、組み込み側の責務を絞っています。ESP32-S3が担うのは、2つのI2Sチャンネルをキャプチャしてネットワークに載せることだけです。ストリームの処理、バッファリング、既存のMrHuangアシスタントへの引き渡しはすべてPythonサーバー側にあり、デバイス上よりも反復開発が容易です。これはMrHuangの音声ファースト構想に向けた組み込みの音声入力フロントエンドであり、デスクトップのマイクデーモンに対応するハードウェア版です。どちらも同一のセルフホスト型音声認識レイヤーへ音声を供給するために構築されています。
ステータス
これはprealpha段階で、現在も開発が進行中です。ファームウェアの立ち上げと、デバイスからサーバーへの音声経路が当面の焦点です。MrHuangバックエンドとの統合は、完成したパイプラインというより、これから接続していく先という位置づけであり、音声経路自体もまだスタブ状態です。ESP-IDF、I2Sマイクキャプチャ、CでのUDP音声ストリーミングを学びつつ、既にあるアシスタントを拡張するための取り組みであり、この記事は完成品ではなく意図した構成を説明したものです。