まず、下記を用意
1. RaspberryPi3(element14 製を使用しましたがRS製でもほぼ同じ)
2. MicroUSBケーブル(RaspberryPiとUSB ACアダプタを繋ぐ)
3. USB ACアダプタ(RaspberryPiへの5V電源供給)
4. USBキーボード
5. USBマウス
6. スピーカー(ダイソーの300円USBスピーカーを使用しました)
7. マイク(ウェブカメラのマイクを使用しました)
8. HDMIケーブル
9. モニタ(HDMIが使用できるもの)
RaspberryPi3へのOS Raspbianのインストール方法は、ネット上にたくさんあるため
割愛させていただきます。
それでは、上記用意したものをRaspberryPiにセットし、電源ON(MicroUSBに電気を流す)
無事モニタに下記デスクトップ画面が表示されたら起動完了
まず、今回はスピーカーとマイクの動作確認をして、録音テストまで行います。
【スピーカー】
スピーカーが認識されているかをaplay -lで確認
カード番号0、デバイス番号0にスピーカーが認識されています。
pi@raspberrypi:~ $ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC95 8/HD MI] Subdevices: 1/1 Subdevice #0: subdevice #0
次に音声を出して、音声確認をしてみましょう。フロントセンターと聞こえればOKです。
pi@raspberrypi:~ $ aplay /usr/share/sounds/alsa/Front_Center.wav Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
【マイク】
マイクについては手持ちがなかったので、ウェブカメラに埋め込めれているマイクを流用します。
スピーカーが認識されているかをarecord -lで確認。
カード番号1、デバイス番号0にマイクが認識されています。
pi@raspberrypi:~ $ arecord -l **** List of CAPTURE Hardware Devices **** card 1: Camera [PC Camera], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
ここで、音声を録音しようと
pi@raspberrypi:~ $ arecord test.wav arecord: main:788: audio open error: No such file or directory
としても、エラーになります。
【録音】下記のように録音(4秒)してみます
arecord -D plughw:(カード番号),(デバイス番号), -d (秒数) -f (サンプルフォーマット) (ファイル名)
pi@raspberrypi:~ $ arecord -D plughw:1,0 -d 4 -f cd test.wav Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
ちなみにarecordのオプションの意味は下記、他にもオプションがあるので、-hでヘルプを読んでください
【arecordのオプション(一部)】
-l : 全てのサウンドカードとオーディオデバイスの番号を表示する
-D : 使用するPCMを指定する
-d : 指定の秒数後に終了する
-f : サンプルフォーマットを指定する(下記は環境によって変わります)
-f cd (16bit little endian, 44100, streo)
-f cdr (16bit big endian, 44100, streo)
-f dat (16bit little endian, 48000, streo)
-h : ヘルプを表示する
【マイクボリューム調節】マイクのボリュームを必要に応じて調節します
まずは現状のマイク(シンプルコントロール名 ‘Mic’ )の設定音量を確認。
$ amixer -c 1 sget Mic
※(-c でカード番号を指定)
pi@raspberrypi:~ $ amixer sget Mic -c 1 Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined Capture channels: Mono Limits: Capture 0 - 3 Mono: Capture 0 [0%] [30.00dB] [on]
0%になっていたので、60%へと変更してみる
$ amixer -c 1 sset Mic 60%
pi@raspberrypi:~ $ amixer -c 1 sset Mic 60% Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined Capture channels: Mono Limits: Capture 0 - 3 Mono: Capture 0 [67%] [50.00dB] [on]
となり67%になりました。
60%指定したのに67%になった理由は、今回使用したウェブカメラのマイクが4段階しかコントロールできないもののため、0%⇒33%⇒67%⇒100%のレベルでしか設定できない事が理由。
繰り上げで設定されるので、もし70%と指定したら100%に指定されます。
このように、”-c” でマイクのカード番号を指定して、 ”sset”でボリュームを調整します。
ちなみに同じようにスピーカーも設定が可能です。
スピーカー(シンプルコントロール名 ‘PCM’、カード番号0 )の音量を確認
$ amixer -c 0 sget PCM
スピーカー(シンプルコントロール名 ‘PCM’ )の音量を 50% に設定する
$ amixer -c 0 sset PCM 50%
ただ、スピーカーは下記を使うとGUIでキーの上下操作で簡単に音量調整できます
alsamixer //Escで設定が保存され、元の画面に戻ります
【マイクの音をそのままスピーカーから出力する】
arecord | aplay
ではエラーとなるので、下記を入力すると、ハウリングがでますが録音ファイルを作成せずに
マイクの音がそのままスピーカーより出力されます
arecord -f cd -D plughw:1 | aplay -D hw:0 ※Ctrl+Cで終了します。
ちなみにplugをつけないと、モノラル音声は再生できないというようなエラーが発生します。
なのでリサンプリングを行う”plug”をデバイスの前につけて解消しましょう
plugをつけると指定のフォーマット、ビットレートになるよう自動でリサンプリング処理を行ってくれます。
ただ、ハウリングはけっこうひどかったりします。