A reprodução curta de áudio está silenciada, requer aquecimento ou áudio secundário em segundo plano

A reprodução curta de áudio está silenciada, requer aquecimento ou áudio secundário em segundo plano

Percebi que isso acontece tanto no meu PC ArchLinux quanto no meu MacBook ArchLinux. Preciso receber notificações de aplicativos por meio de tons de áudio curtos e descobri que isso não é um problema devido à notificação de aplicativos, mas ao próprio sistema, e isso acontece em ambos os sistemas, que são muito diferentes.

Quando reproduzo um arquivo de áudio curto, paplay /usr/share/sounds/freedesktop/stereo/message.oganão ouço na primeira vez que o reproduzo.

Se eu tocar novamente em sequência, eu ouço e é tocado corretamente, sempre repito em sequência.

Se eu esperar cerca de 10 segundos para tocar novamente, ele fica mudo (como no início): soa apenas durante o aquecimento.

O mesmo acontece com o aplay /usr/share/sounds/alsa/Front_Left.wav, mas como é um tom mais longo, o problema acontece logo no início do arquivo. No começo ouço apenas "t left", faltando "fron". Depois ouço claro e completo: "frente esquerda". Se eu esperar 10 segundos, "não saí" novamente.

O problema não acontece se eu estiver reproduzindo um arquivo de música em segundo plano em um reprodutor de mídia. Isso acontece apenas quando o computador não está reproduzindo nenhum som.

Como consertar isto? (exceto manter o PC tocando um som inaudível no daemon em segundo plano para mantê-lo sempre aquecido)

Sessão de teste relevante onde o problema persiste apenas usando 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]

ATUALIZAR

Após o kernel Linux 4.11.2,O codec ALC1220 está em:

~ ❯❯❯ 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

Conectei meus fones de ouvido e consegui reproduzir o problema apenas usando, aplaymas de forma diferente:

~ ❯❯❯ 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
...

Tive que reproduzir diferentes arquivos de áudio residentes em diretórios diferentes, ambas as reproduções são cortadas no início se uma for reproduzida e depois a outra, o intervalo entre as reproduções não importa. Se um arquivo for reproduzido uma vez, reproduzir arquivos no mesmo diretório posteriormente não reproduzirá o problema, nem esperará que ele "esfrie" (esperei 1 minuto). O mesmo acontece paplayao ativar o pulseaudio. Ao jogar através de HDMI, reproduz em ambos os casos de teste.

ATUALIZAÇÃO 2

Preguiçoso como sou, ainda não relatei isso aos desenvolvedores do ALSA, mas criei umunidade systemd do usuário:

[Unit]
Description=Continuous silence

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

[Install]
WantedBy=default.target

Basta salvá-lo ~/.config/systemd/user/continuous-silence.servicee habilitá-lo com systemctl --user enable continuous-silence.

Responder1

Partindo do pressuposto de que o sistema de som receptor precisa "acordar" antes de emitir sons, e só o fazdepoisrecebendo o lote inicial de dados de som, descartando o primeiro lote, se isso não puder ser corrigido no sistema de som receptor, uma solução alternativa é gerar silêncio continuamente, por exemplo, com playfrom sox:

play -n

Editar

Com a informação adicional de que funciona no Windows e de que nem a placa de som ("Dispositivo Intel Corporation") nem o Codec ("Genérico") são reconhecidos pelo nome, também é possível que haja algum problema de driver. Há um bit "keep alive enable" (KAE) no Codec, talvez isso precise ser definido, possivelmente por um controle de mixer, mas não sei o suficiente sobre isso.

Registre um bug com os desenvolvedores do ALSA, forneça as lspci -nninformações e a saída do arquivo cat /proc/asound/card*/codec\#*. (Você também pode colocar a saída deste último em um pastebin e editar sua pergunta com o link, para que eu possa dar uma olhada).

Responder2

Outra solução para mim aconteceu quando comecei a adotar o Jack Audio Connection Kit acoplado ao pulseaudio-jack, em vez do pulseaudio simples.

Responder3

Corrigido seguindo o wiki sobre como configurar áudio de baixa latência

  • Siga a Seção 1.1 no wikihttps://wiki.archlinux.org/title/Professional_audio
  • Não instale o kernel AUR do linux-rt
  • A reinicialização após concluir a Seção 1.1 deve eliminar a latência
  • Caso contrário, prossiga com o resto do wiki e configure o JACK

informação relacionada