2018年2月4日日曜日

Raspberry Piで USBスピーカ・マイクを使う

3.5mm ステレオミニプラグで接続するアナログスピーカだと、Raspberry Piでは雑音が大きくて使いにくい。USBであればデジタルで出力できるので、音質を改善できる。

Googleアシスタントで使用するUSBデバイスには設定が必要なのだが、USBサウンドデバイスを複数繋げた場合はどういう名前で認識されたのか分かりにくいので、順にテストすることが必要です。

■ USBスピーカの設定
今回は、「サンワサプライ USBスピーカー(ブラック) MM-SPU8BK」を使います。


USB接続すれば自動で認識されるはず。
認識されたら、カード番号、デバイス番号を確認します。

$ aplay -l
カード 1: MicroII [Audio Advantage MicroII], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0


今回の場合は、「カード 1」「デバイス 0」です。

デバイスをテストします。
$ speaker-test -D plughw:1,0 -t wav

デバイスの指定方法は、
plughw:<card number>,<device number>
なの、今回のUSBスピーカは plughw:1,0 となります。

この内容で、ALSA の設定ファイルに登録します。(下記を参照)

■ USBマイクの設定
今回は、感度高めのコンデンサータイプのマイクを使用します。

サンワサプライ USBマイクロホン MM-MCU01BK


こちらも自動認識されたら、カード番号、デバイス番号を確認します。

pi@raspberrypi:~ $ arecord -l
カード 0: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 0/1
サブデバイス #0: subdevice #0


今回の場合は、「カード 0」「デバイス 0」です。

デバイスをテストします。
$ arecord -D plughw:0,0 test.wav
上記で接続したUSBスピーカに出力してみます。
$ aplay -D plughw:1,0 test.wav

デバイスの指定方法は、同じく
plughw:<card number>,<device number>
なの、今回のUSBマイクは plughw:0,0 となります。

この内容で、ALSA の設定ファイルに登録します。(下記を参照)

■ ALSA(Advanced Linux Sound Architecture) の設定

この内容で、ALSA の設定ファイルに登録します。
シンプルにやるならば、ユーザのホームディレクトリにファイルを作成します。

Configure and Test the Audio
https://developers.google.com/assistant/sdk/guides/library/python/embed/audio

ALSA 設定ファイル
pi@raspberrypi:~ $ cat $HOME/.asoundrc
pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:0,0"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:1,0"
  }
}

これでデフォルトのサウンドデバイスが指定されたので、
検証してみます。

スピーカーテスト
$ speaker-test -t wav

マイクのテスト
$ arecord test.wav
$ aplay test.wav

これで動作すれば、Googleアシスタントの設定は妥当です。