短いオーディオ再生がミュートされ、準備が必要になるか、バックグラウンドでセカンダリオーディオが再生されます。

短いオーディオ再生がミュートされ、準備が必要になるか、バックグラウンドでセカンダリオーディオが再生されます。

私はArchLinux PCとArchLinux MacBookでこれが起こることを発見しました。短い音声でアプリ通知を受け取る必要がありますが、通知アプリの問題ではなく、システム自体の問題であり、非常に異なる2つのシステムで発生することがわかりました。

短いオーディオファイルを再生するとき、paplay /usr/share/sounds/freedesktop/stereo/message.oga初めて再生するときに音が聞こえないようです。

順番にもう一度再生すると、音が聞こえて正しく再生され、常に順番に繰り返します。

10秒ほど待ってから再生すると静かになります(最初のように)。予熱したときだけ音がします。

同じことが発生しますaplay /usr/share/sounds/alsa/Front_Left.wavが、ピッチが長いため、ファイルの先頭でのみ問題が発生します。最初は「t left」だけが聞こえ、「fron」は抜けました。それから「左前」という音が完全で明確に聞こえました。 10秒だけ待つと、もう一度「去ります」。

メディアプレーヤーのバックグラウンドで音楽ファイルを再生すると、この問題は発生しません。これは、コンピュータで音が再生されない場合にのみ発生します。

この問題をどのように解決しますか? (コンピュータが常に予熱状態を維持するように、バックグラウンドデーモンから聞こえない音を再生することに加えて)

alsaのみを使用しても問題が続く関連するテストセッション:

~ ❯❯❯ sudo mv /usr/bin/pulseaudio /usr/bin/pulseaudio.bak
~ ❯❯❯ pulseaudio.bak --kill
W: [pulseaudio.bak] main.c: Couldn't canonicalize binary path, cannot self execute.
~ ❯❯❯ paplay /usr/share/sounds/freedesktop/stereo/message.oga
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
~ ❯❯❯ ps axu | grep -i pulse
francis+ 31563  0.0  0.0  10796  2144 pts/2    S+   14:35   0:00 grep --color=auto -i pulse

~ ❯❯❯ aplay -D plughw:0,7 /usr/share/sounds/alsa/Front_Left.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Left.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

~ ❯❯❯ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: Generic Analog [Generic Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: Generic Digital [Generic Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
~ ❯❯❯ lspci -nn | grep -i audio
00:1f.3 Audio device [0403]: Intel Corporation Device [8086:a2f0]

修正する

Linuxカーネル4.11.2以降、ALC1220コーデックは次の場所にあります。:

~ ❯❯❯ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC1220 Analog [ALC1220 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC1220 Digital [ALC1220 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

ヘッドフォンを接続し、aplay他の方法だけを使用して問題を再現しました。

~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Left.wav
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/purple/alert.wav
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Left.wav
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/purple/alert.wav
...

異なるディレクトリにある異なるオーディオファイルを再生する必要があります。一方を再生してから別のファイルを再生すると、両方の再生が最初に切り捨てられます。再生間の間隔は重要ではありません。ファイルが一度再生されると、同じディレクトリにあるファイルを再生しても問題は再現されず、「冷える」まで待ちません(1分間待ちました)。paplayパルスオーディオがオンのときも同様です。 HDMI経由で再生すると、両方のテストケースで再現可能でした。

アップデート2

私は怠惰なので、まだALSA開発者にこれを報告していません。ユーザシステム装置:

[Unit]
Description=Continuous silence

[Service]
ExecStart=/usr/bin/play -qn

[Install]
WantedBy=default.target

に保存し~/.config/systemd/user/continuous-silence.serviceてを使用して有効にしますsystemctl --user enable continuous-silence

ベストアンサー1

サウンドを出力する前に、受信サウンドシステムが「目覚めなければならない」と仮定し、そうします。後ろにサウンドデータの初期配置を受け取り、最初の配置を破棄します。受信サウンドシステムでこの問題を解決できない場合、回避策は次のように無音を連続的に出力することplayですsox

play -n

編集する

Windowsで実行されており、サウンドカード(「Intel Corporation Device」)またはコーデック(「Universal」)を名前で識別できないという追加情報によれば、いくつかのドライバの問題かもしれません。コーデックには「KAE(Keep Alive Enable)」ビットがあります。おそらくミキサーコントロールで設定する必要があるかもしれませんが、それについて十分にはわかりません。

ALSA開発者にバグを提出し、lspci -nn情報も提供しますcat /proc/asound/card*/codec\#*。 (後者の出力をペーストビンに入れて、私が見ることができるように質問を編集することもできます。)

おすすめ記事