Raspberry Pi 3にマイクロホンを接続し、arecord コマンドを使用して音声を録音し、aplayコマンドを使用して録音した音声を再生します。
Raspberry Pi 3とマイクロホンの接続
マイクロホンは、サンワサプライ USBヘッドセット/ヘッドホン ブラック MM-HSU01BKを使用しました。USBコネクタに次のように接続します。
USBヘッドセット/ヘッドホンを接続して、lsusbコマンドで確認すると次のように認識します。USBヘッドセット/ヘッドホンは、「C-Media Electronics, Inc.」と認識されます。
$ lsusb Bus 001 Device 004: ID 0d8c:0139 C-Media Electronics, Inc. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
次に、USBオーディオアダプタの優先度を次のコマンドで確認します。数字が小さい方が優先度高いので、もし、usbオーディオアダプタsnd_usb_audioの優先順位が低い場合、「Raspberry Pi 3にUSB DACの接続」に従って設定を変更します。
$ cat /proc/asound/modules 0 snd_usb_audio 1 snd_bcm2835
マイクの感度を次に示すamixerコマンドで調整します。Micの後の数字はマイクに応じて適宜調整します。実行すると出てくる表示の最後の [81%]というのが感度です。
$ amixer sset Mic 13 Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined Capture channels: Mono Limits: Capture 0 - 16 Mono: Capture 13 [81%] [19.34dB] [on]
マイクロホンによる音声録音
接続されたマイクロホンで音声録音します。次ののコマンドでtest.wavというファイルに録音します。以下のコマンドを実行した後、マイクに声を吹き込みます。吹き込み終わると、Ctrl+Cで終了します。
$ arecord -r 16000 -f S16_LE test.wav
録音した音声を確認します。最初に、aplayコマンドでデバイスを確認します。
$ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA] サブデバイス: 8/8 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 サブデバイス #4: subdevice #4 サブデバイス #5: subdevice #5 サブデバイス #6: subdevice #6 サブデバイス #7: subdevice #7 カード 1: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] サブデバイス: 1/1 サブデバイス #0: subdevice #0
音声出力のコマンドは、先ほど録音した「test.wav」というファイルを再生する場合は以下のような形式となります。
$ aplay -D plughw:[card, device] test.wav
例えば上の場合だと、[0,0]がUSBヘッドセットのオーディオ、[1,1]がHDMIのオーディオなので、USBヘッドセットから音出したい場合は以下のように実行します。plugをつけると指定のフォーマット、ビットレートになるよう自動でリサンプリング処理を行ってくれます。
$ aplay -D plughw:0,0 test.wav
次のaplayコマンドパラメータでは、「モノラル音声は再生できない」と怒られています。
$ aplay -D hw:0,0 test.wav 再生中 WAVE ‘test.wav’ : Signed 16 bit Little Endian, レート 44100 Hz, モノラル aplay: set_params:1239: チャネル数が使用不可能