ここではRaspberry Piに接続したUSBマイクから音を入力し、wavファイルとして保存してから再生する方法を説明します。
準備
- ラズパイにUSB マイクを接続してください。
- ラズパイのミニジャックにアンプ内蔵スピーカーを接続してください。
マイクの設定
- USBオーディオアダプタの優先順位を変更します。
- まずは下記のコマンドを実行し、現在の優先度を確認します。
-
1<span class="nv">$ </span>cat /proc/asound/modules
-
- Raspberry Piが初期状態だと、下記のようにUSB_Audioは2番めに表示されてしまうはずです。USB_Audioがリストの1番上に表示されている場合は、すでに設定は終了しているということなので、以下のステップは飛ばして次のステップ(マイクの感度調整) に進んでください。
-
12<span class="m">0</span> snd_bcm2835<span class="m">1</span> snd_usb_audio
-
- 「/etc/modprobe.d/」フォルダーに移動し設定ファイル「alsa-base.conf」を編集してください。
-
12$ cd /etc/modprobe.d/$ sudo nano alsa-base.conf
-
- すでにalsa-base.confが存在している場合と、新たに作成する場合とがありますが、いずれにしても、以下のように書き換えてください。
-
123options snd slots=snd_usb_audio,snd_bcm2835options snd_usb_audio index=0options snd_bcm2835 index=1
-
- Raspberry Piを再起動($ reboot)してください。
- 改めてUSB_Audioの優先順位を確認してください。
-
1$ cat /proc/asound/modules
-
- 以下のように表示されれば、優先順位の変更作業は成功です。
-
120 snd_usb_audio1 snd_bcm2835
マイクの感度調整
- マイクの感度を調整しておきます。最大値は62ですが、音が割れてしまうので50ぐらいがお勧めです。必要に応じて変更してください。
-
1$ sudo amixer sset Mic 50
- もし「Unable to find simple control ‘Mic’,0」といったエラーがでてしまった場合は、マイクが認識されていない可能性が高いです。このページの頭から再度確認してみてください。
-
録音テスト
- 以下のコマンドを入力後、マイクに向かって喋り、Ctrl+Cで終了させてください。
-
1$ sudo arecord -r 16000 -f S16_LE test.wav
- 16kHzでサンプリングしています。
- もし「 audio open error: そのようなファイルやディレクトリはありません」といったエラーがでてしまった場合は、マイクが認識されていない可能性が高いです。このページの頭から再度確認してみてください。
-
- test.wavが生成されていることを確認してください。
- wavファイルを再生してみましょう。
-
1$ aplay test.wav
-
pyaudioのインストール
- pyaudioをインストールしてください
-
1$ sudo apt-get install python-pyaudio
-
- マイクの感度を調整しておきます。最大値は62ですが、音が割れてしまうので50ぐらいがお勧めです。必要に応じて変更してください。
- まずは下記のコマンドを実行し、現在の優先度を確認します。
サンプルプログラム
- まずは先程作成した「test.wav」の権限を変更して書き込みができるようにします。
-
1$ sudo chmod a+w test.wav
-
- サンプルプログラムを実行してみましょう。
-
12$ cd /home/pi/bezelie/pi$ sudo python sampleRecord1.py
- ベゼリーが「録音開始!」と言ったら、2秒以内でマイクに向かって喋ってください。
- ちょっとしてからスピーカーからあなたの声が出力されたら成功です。
- 止めたいときは、CTRL+C を押してください。
-
応用
- サンプルプログラムをnanoで開いてみましょう。
-
1$ sudo nano sampleRecord1.py
-
- 16行目の変数RECORD_SECONDSの値が録音する音の長さを表しています。サンプルでは2秒と設定されていますが、この値を大きくしたり小さくしたりしてみましょう。