Короткое аудиовоспроизведение отключается, требуется разогрев или дополнительный звук в фоновом режиме

Короткое аудиовоспроизведение отключается, требуется разогрев или дополнительный звук в фоновом режиме

Я заметил, что это происходит как на моем ArchLinux PC, так и на моем ArchLinux MacBook. Мне нужно получать уведомления приложений с помощью коротких звуковых сигналов, и я выяснил, что это не проблема из-за уведомлений приложений, а самой системы, и это происходит в обеих системах, которые сильно различаются.

Когда я проигрываю короткий аудиофайл, paplay /usr/share/sounds/freedesktop/stereo/message.ogaя как будто не слышу его при первом воспроизведении.

Если я проигрываю его снова в определенной последовательности, я слышу его, и он проигрывается правильно, я всегда повторяю его в определенной последовательности.

Если я подожду около 10 секунд, чтобы воспроизвести его снова, звук будет отключен (как в начале): он будет звучать только во время разогрева.

То же самое происходит с aplay /usr/share/sounds/alsa/Front_Left.wav, но поскольку это более длинный тон, проблема возникает только в начале файла. Сначала я слышу только "t left", пропуская "fron". Затем я слышу его полностью и ясно: "front left". Если я подожду 10 секунд, снова "t left".

Проблема не возникает, если я проигрываю музыкальный файл в фоновом режиме в медиаплеере. Она возникает только тогда, когда компьютер не воспроизводит звук.

Как это исправить? (кроме того, чтобы ПК постоянно воспроизводил неслышимый звук в фоновом режиме, чтобы поддерживать его в прогретом состоянии)

Соответствующий тестовый сеанс, в котором проблема сохраняется только при использовании 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при включении PulseAudio. При воспроизведении через HDMI воспроизводится в обоих тестовых случаях.

ОБНОВЛЕНИЕ 2

Я ленивый и пока не сообщил об этом разработчикам ALSA, но я создалпользовательский блок systemd:

[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

При условии, что принимающая звуковая система должна «проснуться» перед тем, как выводить звуки, и она делает это толькопослеПри получении начальной партии звуковых данных первая партия отбрасывается. Если это невозможно исправить в принимающей звуковой системе, то обходным решением является непрерывный вывод тишины, например, с помощью playfrom sox:

play -n

Редактировать

С дополнительной информацией о том, что он работает на Windows, и информацией о том, что ни звуковая карта ("Intel Corporation Device"), ни кодек ("Generic") не распознаются по имени, также возможно, что это какая-то проблема с драйвером. В кодеке есть бит "keep alive enable" (KAE), возможно, его нужно установить, возможно, с помощью управления микшером, но я недостаточно знаю об этом.

Сообщите об ошибке разработчикам ALSA, предоставьте lspci -nnинформацию и вывод cat /proc/asound/card*/codec\#*. (Вы также можете поместить вывод последнего в pastebin и отредактировать свой вопрос, указав ссылку, чтобы я мог взглянуть).

решение2

Еще одно решение для меня пришло, когда я начал использовать комплект Jack Audio Connection Kit в сочетании с PulseAudio-Jack вместо простого PulseAudio.

решение3

Исправлено с помощью вики-инструкции по настройке звука с низкой задержкой

  • Следуйте разделу 1.1 на викиhttps://wiki.archlinux.org/title/Профессиональное_аудио
  • Не устанавливайте ядро ​​linux-rt AUR
  • Перезагрузка после завершения раздела 1.1 должна устранить задержку.
  • Если нет, то продолжайте читать остальную часть вики и настраивать JACK.

Связанный контент