ReSpeakerは複数のマイクを搭載していて、音がどの方向から来たのか判定できたり、LEDがリング状に並べられていて複数の色を発光できる、ちょっと毛色の変わったデバイスです。製品名にspeakerが入ってますが主な機能はマイクです。
ReSpeaker 4-Mic Array for Raspberry Piはマイクが四隅に搭載され、ラズパイのGPIOピンに挿して使う形になっています。
この製品はシリーズになっていて、USB接続のもの(これが本筋?)やマイクの数も2や6,8のものもあります。
プラットフォームもMacやWindows、Linux(Jetson Nano) などに対応しています。
使ってみます。
目次
RaspberryPi4BでReSpeaker 4-Mic Array for Raspberry Piをセットアップ
ReSpeaker 4-Mic Array for Raspberry Piがマイクであることを確認
ラズパイ4Bの場合
OSイメージは32-bitのBusterでも64-bit Bullseye でもどちらでもいいです。
注:ラズパイ3B+ を使いたい場合は、Raspberry Pi OS(Legacy) Debian Buster desktop (32-bit) を使います。Bullseye の場合、Micのセットアップに失敗します。
MicroSDに焼いて、セットアップしておきます。
ラズパイ4BでReSpeaker 4-Mic Array for Raspberry Piをセットアップ
seeed-voicecardをクローンしておきます。
インストール
32-bit OSの場合
64-bit OSの場合
再起動
以下のコマンドでac108やCARD=seeed4micvoicec,DEV=0が見えているのを確認
ODAS(Open embeddeD Audition System)を使ってみる
Real-time Sound Source Localization and Trackingという触れ込みです。
この製品の特長をよく表していると思いますが、音がどの方向から来ているかを可視化してくれるそうです。
こんな感じ
マイク(source)から音を拾っている様子です。高さと方角を時系列で示しています。
ただ、Elevation は負値にはならないようです。
ではセットアップします
ODAS Studio はNode.js を使いますが、node/npmのバージョンによっては「require is not defined」というエラーが出ます。
インストール後、Local System Monitor が空のままだったら大抵このエラーです。
メニュ -> View -> Toggle Developper Tools で確認できます。
こんな感じ
Node.js からインストールしていきます。
「require is not defined」というエラーは新しめのnode/npmで出るようですので、
公式ではversion12が指定されていますが、ちょっと古めのバージョンを指定してみます。npmは個別にインストールする必要があります。
32-bit Buster だとなぜかバージョンはこうでした。
node –> v10.24.0
npm –> 5.8.0
64-bit Bullseye だとこう。
node –> v12.22.5
npm –> 7.5.2
ODAS をインストール
odas_webをクローンしてインストール
多分エラーが出ます。
以下で対処して再インストール
脆弱性の警告がでたらfixしておきます
起動します。
Local System Monitor に表示があればOKです
ReSpeaker 4-Mic Array for Raspberry Piのodasliveからデータを送信します。
soundcard番号とデバイス番号を確認しておきます。
IPアドレスを確認しておきます。
設定ファイルをodasliveのあるフォルダーにコピーしておきます。
設定ファイルを開いて修正
3か所
1:interfaceのcard番号を更新
2:127.0.0.1が記述された部分が2つあります。これを確認したIPアドレスに変更
データを送信
こんな感じになります。
これはサーバー・クライアント型のsocket通信なので、odas_webとodasliveが別のコンピュータ上にあってもネットワークが同じならデータを送れます。
Mic-Arrayで音声方向を測位
音声のLocalizationで、もう一つ別の方法をやってみます。
どの方角かを判定します。
依存ライブラリなどをインストール
mic_arrayをクローン
mic_array.pyを編集しておきます。
3か所
1:import Queue —> import queue
2:self.queue = Queue.Queue() —> self.queue = queue.Queue()
3:最終行8micをコメントアウトして、4micのコメントアウトは外す
測位してみます
音が来ている方向角です。
0は音が無い方向、1が音のある方向だそうです。
多分ですが、こういう感じで音をパッシブにソナーしてるっぽいです。
ReSpeaker 4-Mic Array for Raspberry Piがマイクであることを確認
改めて確認してみましょう。
1:Audacityを使用して音声の録音・再生の確認
起動
設定
録音デバイスを選択
ac108を選択
マイクのチャンネルを設定
4を選択
デバイスを設定
HDMIじゃない方を選択
レコーディング
5 3mくらい離れていても音声を拾えるそうです。
再生
ラズパイの3.5mmオーディオジャックにスピーカーを接続しておきます。
2:コマンドを使用して音声の録音・再生の確認
デバイスはac108、音声ファイルのフォーマットはSigned 32bit、16kHz、チャンネル数4として録音、hello.wavに出力
再生
音が再生されない場合、以下をやってみます。
soxインストール
sudo apt-get install sox
hello.wavをstereo.wavにコンバート
sox hello.wav -c 2 stereo.wav
上記の「デバイスを設定」で表示されたhwのカード番号,デヴァイス番号を確認
以下のコマンドでも確認可)
以下を実行
aplay -D plughw:1,0 stereo.wav
こんなこともできます、Lチカ
12個のLEDがリング状に並んでいます。
これを点灯
Appendix
ODAS_web はJetson Nanoにもインストールできます(Jetpack 4.6)。
Node.jsのインストールはこういう具合です。
バージョンはこうです。
node –> v8.17.0
npm –> 6.13.4
odas studio を起動すると以下のエラーが発生しますが動作に問題はないようです。
Error: Can’t initialize nvrm channel
ラズパイのodasliveとsocket通信で接続します。
ODAS はROS版もあるようです…まだ使ってないですが。
ラズパイ4B + Ubuntu 20.04 + ROS1 (Noetic) の環境でodas_rosのcatkin_makeインストールは可能でしたがReSpeaker 4-Mic Array for Raspberry Piのセットアップができませんでした。多分対応しているReSpeakerはUSB接続するタイプのものが必要なのかも…..。
ちょっとワザを使ってみました。
ラズパイ4B + ODAS_ROS でReSpeaker 4-Mic Array for Raspberry Piを使ってみる
Leave a Reply