ラズパイ4B + Raspberry Pi OS でReSpeaker 4-Mic Array for Raspberry Piを使ってみる


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をセットアップ

ODASを使ってみる

Mic-Arrayで音声方向を測位

ReSpeaker 4-Mic Array for Raspberry Piがマイクであることを確認

こんなこともできます、Lチカ

 


ラズパイ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の場合

 

再起動

 

以下のコマンドでac108CARD=seeed4micvoicec,DEV=0が見えているのを確認

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


ODASOpen 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じゃない方を選択

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

レコーディング

  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を使ってみる

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*