前々回、Raspberry Piにカメラモジュールを接続してみましたが、今回は、マイクロフォンを接続したいと思います。音響センサ=マイクでIoTというよりも、どちらかといえばAIネタ考えているのですが、まあお許しください。Raspberry Piでも Pi 1 やPi 3など、オーディオ出力のピンジャックを持っている機種もありますが、今回はピンジャックの無いPi Zero Wターゲットです。いずれにせよ、オーディオ入力は存在しないので、外付けするしかありません。かなりお安い周辺装置を購入したのですが大丈夫でしょうか。
※「IoT何をいまさら」投稿順Indexはこちら
まずは、オーディオインタフェースを取り付けたRaspberry Pi Zero Wの「様子」を御覧いただきましょう。作業は、WiFi経由でsshで行います。
中央下で緑色のLEDを光らせているものが、今回購入の「ノーブランド」USBオーディオインタフェースです。ぶっちゃけ、ワンコイン以下のかなりお手頃価格というか、大丈夫かあ、という代物、安い割には、やたらと機能が多く、マイク、スピーカのミュートボタンに、ボリュームスイッチなど可動部目白押し、値段にたがわぬスイッチの感触。さらに7.1ch オーディオ対応を謳っています(ジョークにしか聞こえませんが、接続すればALSAにはそのようなデバイスとして認識?されているようでした)それにこれまた100円ショップで購入のマイク+イヤホンを取り付けました。2つ合わせてもワンコイン以下、かなり不安な組み合わせです。
当然ながら、USBは普通のAコネクタなのでRaspberry Pi Zeroには直結できません。Raspberry Pi Zeroのセットアップ時に使用したOTG対応のHUBを使用して接続しました。写真左端がHUB。まずは、この状態でインタフェースが認識されているのかどうか確認。こんな感じ。
一番上の bcm2835は、Raspberry Pi ZeroのCPU SoCチップ内蔵のもの。Pi 1 やPi 3であれば、オーディオ用のピンジャックに出力されている筈ですが、Pi Zeroの場合はSoCには含まれていても物理的なジャックが無い。2番目のDevice、USB-Audioが、接続したUSBオーディオです。ちゃんと認識されとります。次に、オーディオ出力側のカード番号と、デバイス番号を aplay コマンドで確かめておきます。
内蔵のピンジャックとHDMI出力に続き、カード1のデバイス0にこのインタフェースがアサインされていることが分かりました。カード1のデバイス0を覚えておきます。続いて、arecordコマンドで、録音側のデバイスも確認しておきます。こちらもカード1のデバイス0と認識されている。
実を言えば、いろいろ設定しないと認識されないんじゃないかと恐れていたのですが、このバージョン(後で述べます)のRaspbianでは、何の苦もなくオーディオOKになっているのです。まずは音を鳴らしてみます。以下のディレクトリにサンプルのwavがありました。どれも面白みに欠けてはいますが、それこそ5.1chなどのテストには必要なファイルでしょう。
イヤホンを通じて、私には聞こえましたよ。USBオーディオに出力OK。それでは、録音してみます。
伝統の「アーアー、マイクの試験中」などとがなり立て、CTRL-Cで中断すれば、test.wavなるファイルが出来ておりまする。さて再生。
ここもお聞きいただけないのが残念ですが(そんなことはないか)、私の耳には聞こえましたよ。この Raspberry Pi Zero Wについては、何のセットアップもせず、ただUSBオーディオインタフェースを接続しただけで再生、録音ともにOKでした。ただしこれは、Raspbianが以下のOSバージョンであるからじゃないかと思います。
実を言えば、同様なことを Pi 1 model B+ と Pi 3 model B+でもやってみたのですが、
-
- Pi 3 model B+、OSバージョンは上のPi Zeroと同じでは、同様にOK
- Pi 1 model B+、OSバージョンは異なるでは、NG
でした。下のPi 1 model B+、OSインストールはかなり古く、その後、update, upgrade繰り返してきたのですが、どうも挙動がかなり怪しい。ピンジャックのオーディオ出力そのものは、物理的に動作している(壊れていない)ことは確認したので問題はソフト側のようです。原因究明に時間を使うよりは、SD-CARD新しくしてクリーンインストールした方が良いみたいな気がする。後で綺麗にしたら、また確かめてみます。