rasperry PiでUSBオーディオ認識
前回、ラズパイでのpythonで音声出力の方法を記載しました。
elsammit-beginnerblg.hatenablog.com
しかしながらこちらの手順だけでは、
装着されたオーディオの識別順とかを考慮していなかったために
イヤホンジャックやHDMI、USBオーディオ、
と複数デバイスが装着された状態だと、意図しないデバイスから音声が出力される場合があります。
。。。すっかり抜けていた。。。泣
今回はオーディオデバイスの指定方法やデフォルトとなるデバイスの入れ替え方法などを書いていきたいと思います!!
■オーディオデバイスの指定方法
まず識別しているデバイス情報を確認します。
確認のコマンドはこちらです。
aplay -l
こちらを実行すると
**** ハードウェアデバイス PLAYBACK のリスト **** カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA] サブデバイス: 7/7 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 サブデバイス #4: subdevice #4 サブデバイス #5: subdevice #5 サブデバイス #6: subdevice #6 カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 0: ALSA [bcm2835 ALSA], デバイス 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: MicroII [Audio Advantage MicroII], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
というように、カード番号とサブデバイス番号が取得できます。
上記結果の場合には、USBオーディオデバイスは、
・カード:1
・サブデバイス:0
となります。
カード番号とサブデバイス番号がわかったら、音声コマンド実行時にオプションとしてデバイス情報を付与すればOK!!
付与の仕方はコマンドによりそれぞれだが、大体は
hw:カード番号,サブデバイス番号
でOKかと。
例えば、aplayコマンドやmpg321コマンドの場合には、
aplay -D hw:1,0 音声ファイル名.wav
mpg321 -a hw:1,0 音声ファイル名.mp3
とすればよいです。
■デフォルトデバイス切り替え方法
まずはデフォルトで設定されているデバイスの確認ですが、こちらのコマンドを実行すると確認できます。
cat /proc/asound/modules
今回実施してみたところ、
0 snd_bcm2835 1 snd_usb_audio
となりましたので、USBオーディオは2番目に認識することになります。
snd_usb_audioを1番に変更したい場合には、
/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
とすればOKです。