左坊のメモ帳

WordPress など

*

ラズパイにUSBマイクをつける

   

RaspberryPI3にUSBマイクを接続して音声入力の設定を少しいじって録音しました

ネットの情報を参考にしながら、最終的には、USBマイクでflac形式のファイルで録音するようにしました。

USBマイクの優先順位のあげ方、soxのrecでのエラーメッセージ迂回方法もあります。

スポンサーリンク

使ったUSBマイク

USBマイクは、小型のものをamazonで探したら、本体450円で送料無料のものがあったのでこちらを購入。ラズパイに差し込むだけで認識され、録音できました。

音声出力は、手持ちのiPhoneに付いてきたイヤホンを使いました。

arecordコマンドでwav形式で録音するまで

ラズパイにUSBマイクを接続

ラズパイにUSBマイクを接続し、lsusbを実行すると、問題なく認識されます。
「Texax Instruments PCM2902 Audio Codec」と表示されてました。

USBマイクの優先順位を確認

オーディオモジュールの優先順位を確認すると

cat proc/asound/modules

snd_bcm_2835 0
snd_usb_audio 1

こんな感じで、USBマイクのほう(「snd_usb_audio 1」)が優先順位が低いようです。
arecordで録音するだけなら、このままの優先順位で録音できました。soxを使う方法では優先順位をあげる必要があります。

USBマイクのカード番号・デバイス番号

次にUSBマイクのカード番号、デバイス番号を確認しておきます。

arecord -l

**** List of CAPTURE Hardware Devices ****
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

カード番号「1」、デバイス番号「0」です。

ソフトのインストール

次に、必要(そうな)ソフトをインストール。

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo apt-get install alsa-base alsa-utils alsa-tools

音声入力、出力テスト

その後、早速、マイクから音声入力したものをそのままイヤホンから出力してみました。

arecord -f S16_LE -r 44100 -D hw:1 | aplay

無事、自分の声がイヤホンから聞こえましたので、録音した音声をファイルで保存します。

arecord -D plughw:1,0 test.wav

「plughw:」の後ろの「1」がカード番号、「0」がデバイス番号です。
test.wavというファイル名で保存されます。

※参考にさせていただいたサイト

flacで録音したかったのでsoxをインストール

arecordで録音できるファイル形式は「voc, wav, raw or au」とのこと。

soxのインストール

flacで録音したかったので「sox」をインストールすることにしました。

sudo apt-get install alsa-utils sox libsox-fmt-all

USBマイクの優先順位をあげる

USBマイクの優先順位の確認方法は

cat proc/asound/modules

snd_bcm_2835 0
snd_usb_audio 1

0のほうが1より優先順位が高いので、これを逆転させます。

ネットで探すと「/etc/modprobe.d/alsa-base.conf」を修正するとか、新規作成するという情報があるのですが、そのとおりに試したところ「snd_usb_audio 1」が消えてしまいます。

それでもalsa-base.confを作る

最終的には、こちらのサイトを参考にさせていただき、

以下の内容で/etc/modprobe.d/alsa-base.confを新規作成してうまくいきました。

options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1

alsa-base.confを作成したら再起動します。

cat proc/asound/modules

0 snd_usb_audio
1 snd_bcm_2835

となります。

また、優先順位が変わったので、カード番号も「0」になりました。

arecord -l

**** List of CAPTURE Hardware Devices ****
card 0: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

recで録音しようとするとエラーメッセージが

「sox -d ファイル名」「rec ファイル名」で録音されるはずなのですが、録音できずエラーメッセージが。

rec FAIL formats: can’t open input ‘default : snd_pcm_open error: No such file or directory

この迂回方法は、

「sudo rec test.flac」

です。。。これで無事録音できました。

 - ラズパイ