はじめに
Ubuntuで音声ファイルを再生する方法を紹介する。同時再生する際に、いくつか設定変更が必要なのでで紹介する。
動作確認環境
- Ubuntu 20.04 x64/arm64
- NVIDIA Jetson JetPack 5.1.1
方法
ターミナルからaplay
コマンドで音声ファイルを指定することで再生可能。コマンドが見つからない場合は以下でインストールする。
sudo apt update
sudo apt install alsa-base
デバイスの確認
aplay -l
結果例
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: PCH [HDA Intel PCH], デバイス 0: ALC3234 Analog [ALC3234 Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: NVidia [HDA NVidia], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 2: NVidia_1 [HDA NVidia], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 3: UACDemoV10 [UACDemoV1.0], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
表示されている、カードNoとデバイスNoで音声デバイスを特定することができる。
音声ファイルの再生
例: カードNo=3、デバイスNo=0のデバイスで再生する場合
aplay --device="hw:3,0" {wav_file_path}
- --device
- 音声デバイスの指定 (
hw:{card},{device}
)-
hw:
の後ろに、カードNo
,デバイスNo
-
hw
の前に、plug
をつけることも可能- 下記警告が出る場合は、plugも付ける
警告: レートが不正確です (要求値 = 44100Hz, 使用値 = 48000Hz)
- 下記警告が出る場合は、plugも付ける
-
- 【推奨】PulseAudiooデバイスの指定(
default
)-
default
とすると、PulseAudioのデフォルトデバイス経由となり複数のアプリから同時再生可能となる
-
- 音声デバイスの指定 (
- {wav_file_path}
- 任意のWAVファイルパス
PulseAudioのデフォルトデバイスの変更方法
ALSAの設定ファイルを修正する。
sudo vi /usr/share/alsa/alsa.conf
ファイルの中身は以下のようになっている。
#
# defaults
#
# show all name hints also for definitions without hint {} section
defaults.namehint.showall on
# show just basic name hints
defaults.namehint.basic on
# show extended name hints
defaults.namehint.extended on
#
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.pcm.subdevice -1
defaults.pcm.nonblock 1
...
上記中のデフォルトカードNoとデバイスNoを、aplay -l
で出てくるカード番号とデバイス番号に書き換える。
例:カードNo=3、デバイスNo=0の場合
defaults.ctl.card 3
defaults.pcm.card 3
defaults.pcm.device 0
defaults.pcm.subdevice -1
保存して終了。再起動などは不要。
音声ファイル再生のトラブルシューティング
aplay: set_params:1374: チャネル数が使用不可能
対策
--deviceにplug
を入れる。
- 例
aplay --device="plughw:3,0" {wav_file_path}
aplay: main:852: オーディオオープンエラー デバイスもしくはリソースがビジー状態です
原因: デバイス指定が誤っている場合
対策
deviceの設定が、文字列になっているかを確認する(--device="hw:x,x" になっているか確認)。
原因:他のデバイスが利用している場合
対策
デバイスを直接指定しない(hw:を利用しない)で、PulseAudio経由にする(--device=default
を指定)。詳細はこの記事を参照。
- 例
aplay --device=default {wav_file_path}
まとめ
Ubuntuで音声ファイルを再生する方法を紹介した。複数アプリから同時再生する際には、デバイス指定をPulseAudioにすることで同時再生可能となる。
参考