ESP32-S3のUSB Hostでスピーカーマイク

概要

ESP32-S3でUSB Host経由で音声処理ができればなと思っていたので、実装してみました。スピーカー・マイクは便利ですがESP32-S3だとちょっと通信速度的に同時利用は厳しいかもしれません。ESP32-P4のHSだとなんとかなるかも?

製品

Audio Technica(オーディオテクニカ)
¥5,940(2026/08/21 00:00時点)
【PC につなぐだけで簡単に使用可能】USB 接続するだけで通話ができるプラグ&プレイに対応し、ソフトウェアをインストール不要ですぐに使えます。

基本どんなデバイスでもいいのですが、これを使っています。オーディオテクニカ製で小さいですがそこまで高くなく、物理ボリューム付きになります。

UGREEN
¥2,799(2026/08/21 00:00時点)
ご注意:①該オーディオ変換アダプターはPSシリーズ、任天堂シリーズ、XBoxなどのゲーム機には非対応です。②Win8/8.1及び Windows10 1703以前のバーションに非対応です。③50オーム未満の通常のヘッドフォンをサポートしており、ハイインピーダンスヘッドフォンには非対応です。最大音声出力は13mW です。

マイクを利用しないのであれば100円ショップなどで販売しているDAC内蔵のUSBケーブルでも大丈夫です。たまに安いけれど汎用的に使えないやつがあるので注意してください。DAC内蔵と書いてあるやつであれば問題ありません。また、パッケージにはイヤホンマイクも使えると書いてありますが、ジャックが対応しているだけで、マイク入力のADCには対応していません。あくまで音を鳴らすDACのみです。

UGREEN
¥1,299(2026/08/21 00:00時点)
【USB オーディオ 変換アダプタ】3.5mmプラグのヘッドホン、スピーカー等の音声出力やマイク入力をUSBポートに変換するオーディオ変換アダプタです。3.5mm端子がない、もしくはそれが壊れたPCやゲーム機に適用します。【ご注意:当サウンドカードはUSBポートからオーディオに変換するというものでございます。ノイズを軽減する目的としたら、ノイズフィルタを別途でご用意ください。】

あとは普通のUSBオーディオのアダプタも利用できます。この手のだとマイクも利用可能です。

制御方法 mp3再生

EspUsbHost/examples/Audio/EspUsbHostAudioOutputMP3PCMFlow at main · tanakamasayuki/EspUsbHost
Library for using USB Host with ESP32. Contribute to tanakamasayuki/EspUsbHost development by creating an account on Git…

いろいろな制御方法があるので、Audioフォルダを確認してほしいのですがMP3をUSB Audioで再生する例がこちらです。気をつけないといけないのは出力フォーマットが何種類か選択可能で、デバイスによって選択肢が変わります。48kHz/16bitが標準的で、44kHzに対応しているかはデバイスによって変わります。ある程度自動的にフォーマットを選択できる機能がライブラリに組み込まれています。

GitHub – tanakamasayuki/PCMFlow
Contribute to tanakamasayuki/PCMFlow development by creating an account on GitHub.

何らかの方法でオーディオストリームを作って、それを流すだけになります。このサンプルではPCMFlowという別ライブラリを利用しています。このライブラリは純正なオーディオデータの入力と出力間に入ってサンプリングレートやビット数などを調整するレイヤーになります。たとえばmp3は44kHzの場合が多いので、48kHzのUSBオーディオに流す場合にはリサンプリングをする必要がありますので、そこをPCMFlowが変換をしてくれます。

入力側としてmp3デコーダーがあるのでそれを利用しています。入力はUDP通信からPCMFlowに流す兄弟ライブラリとかもありますので複数を組み合わせて利用が可能です。この手の音声ストリームはよくある処理が多いのですが入力から出力まで全部を担当するライブラリが多く、部品だけで利用するのは面倒な作りになっているものが多いので新規作成しています。

利用方法 マイク入力

EspUsbHost/examples/Audio/EspUsbHostAudioInput at main ?? tanakamasayuki/EspUsbHost
Library for using USB Host with ESP32. Contribute to tanakamasayuki/EspUsbHost development by creating an account on Git…

マイク入力例です。入力したあとにどうするかは要件によるので、どんな形で受信をするのかだけのサンプルとなります。

まとめ

音声に関して言うと、ATOMなどのスピーカーを持っていないデバイスに、100円ショップなどで売っているDAC内蔵ケーブルを利用して音を出すのが音質的にもおすすめです。

逆にマイクはちょっと使いにくいのでそこまで需要がないのかなと思っています。あまり最適化はしていないのでマイクとスピーカーの同時利用だとサンプリングレートを落とす必要がありますが、もしかしたらもう少し綺麗に同時利用できるかもしれません。

コメント