h-yuusuke
2022年7月29日 11時04分
お世話になっております。
Armadillo-IoT G4にUSBスピーカーを接続し、"aplay -l"コマンドで音声再生デバイスのリストを表示すると、通常下記の通りcard0がaudio-hdmi、card1がUSBスピーカーとなっています。
**** List of PLAYBACK Hardware Devices **** card 0: audiohdmi [audio-hdmi], device 0: imx8 hdmi i2s-hifi-0 [imx8 hdmi i2s-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Speaker [Foster USB Speaker], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
しかし、時々ですが下記の様にcard0にUSBスピーカー、card1にaudio-hdmiが割り当たる場合がありました。
**** List of PLAYBACK Hardware Devices **** card 0: Speaker [Foster USB Speaker], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: audiohdmi [audio-hdmi], device 0: imx8 hdmi i2s-hifi-0 [imx8 hdmi i2s-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0
お聞きしたいことは下記2点です。
①上記の様に音声再生デバイスのcard番号が入れ替わる要因として何がありますでしょうか。
②音声再生デバイスのcard番号が入れ替わることを防ぐ方法はありますでしょうか。
以上、よろしくお願いいたします。
コメント
h-yuusuke
ご回答ありがとうございます。
教えて頂いた/etc/asound.confを設定してaplayコマンドで音声ファイルを再生した所、下記のエラーが表示されて音声が出力されませんでした。
# 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 aplay: set_params:1358: Channels count non available
上記エラーについてどのようにすれば解消できるでしょうか。
h-yuusuke
at_akihito.irie
入江です。
仰るとおり、モノラル音声を再生する際に当該のエラーが発生するようですね。
ひとつの案ですが、hwではなくplughwで再生することで、チャンネル数やサン
プリングレートをよしなに変換してから再生してくれるので、そちらで回避し
てみるというのはいかがでしょうか。
/etc/asound.confを以下のように書き換えてください。
pcm.!default { type plug slave { pcm spk } } ctl.!default { type hw card Speaker } pcm.spk { type hw card Speaker }
この状態でaplayで音声を再生してみてください。
[container]# aplay /usr/share/sounds/alsa/Front_Center.wav
h-yuusuke
at_akihito.irie
at_akihito.irie
2022年8月1日 16時56分
入江です。
> ①上記の様に音声再生デバイスのcard番号が入れ替わる要因として何がありますでしょうか。
サウンドモジュールの認識順です。
> ②音声再生デバイスのcard番号が入れ替わることを防ぐ方法はありますでしょうか。
card番号が入れ替わるのを防ぐ目的は、必ずUSBスピーカーの方から音が出る
ようにしたい、ということでしょうか?
その前提でお話しますと、コンテナ内の/etc/asound.conf(なければ作成して
ください)を以下のように設定することで、デフォルトの再生デバイスを
Speakerに固定できます。
例えばこの状態で、以下のコマンドのようにデバイスを指定せずに適当な音声
ファイルを再生すると、USBスピーカーがcard0であってもcard1であっても、
USBスピーカーに音が出力されます。