
He notado que esto sucede tanto en mi PC ArchLinux como en mi MacBook ArchLinux. Necesito recibir notificaciones de aplicaciones a través de tonos de audio cortos y descubrí que no es un problema debido a las aplicaciones de notificación sino al sistema en sí, y sucede en ambos sistemas, que son muy diferentes.
Cuando reproduzco un archivo de audio corto, paplay /usr/share/sounds/freedesktop/stereo/message.oga
no lo escucho la primera vez que lo reproduzco.
Si lo vuelvo a reproducir en secuencia lo escucho y se reproduce correctamente, en todo momento lo repito en secuencia.
Si espero unos 10 segundos para volver a reproducirlo, se silencia (como al principio): suena sólo cuando se calienta.
Lo mismo ocurre con aplay /usr/share/sounds/alsa/Front_Left.wav
, pero como es un tono más largo, el problema ocurre justo al inicio del archivo. Al principio solo escucho "t left", falta "fron". Después lo escucho completo y claro: "delantero izquierdo". Si espero 10 segundos, "no se fue" otra vez.
El problema no ocurre si estoy reproduciendo un archivo de música en segundo plano en un reproductor multimedia. Ocurre sólo cuando la computadora no reproduce ningún sonido.
¿Cómo arreglar esto? (excepto para mantener la PC reproduciendo un sonido inaudible en el demonio en segundo plano para mantenerla siempre caliente)
Sesión de prueba relevante donde el problema persiste utilizando únicamente 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]
ACTUALIZAR
Después del kernel de Linux 4.11.2,El códec ALC1220 está en:
~ ❯❯❯ 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
Conecté mis auriculares y logré reproducir el problema simplemente usando aplay
pero de manera 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
...
Tuve que reproducir diferentes archivos de audio que residen en diferentes directorios, ambas reproducciones se cortan al principio si se reproduce una y luego la otra, el intervalo entre reproducciones no importa. Si un archivo se reproduce una vez, reproducir archivos en el mismo directorio posteriormente no reproducirá el problema, ni esperará a que se "enfríe" (he esperado 1 minuto). Lo mismo sucede paplay
al encender pulseaudio. Al reproducir a través de HDMI, se reproduce en ambos casos de prueba.
ACTUALIZACIÓN 2
Por perezoso que soy, todavía no informé de esto a los desarrolladores de ALSA, pero he creado unaunidad del sistema de usuario:
[Unit]
Description=Continuous silence
[Service]
ExecStart=/usr/bin/play -qn
[Install]
WantedBy=default.target
Simplemente guárdelo ~/.config/systemd/user/continuous-silence.service
y habilítelo con systemctl --user enable continuous-silence
.
Respuesta1
Bajo el supuesto de que el sistema de sonido receptor necesita "despertarse" antes de emitir sonidos, y sólo lo hacedespuésrecibir el lote inicial de datos de sonido, descartar el primer lote, si esto no se puede solucionar en el sistema de sonido receptor, una solución alternativa es generar silencio continuamente, por ejemplo con play
from sox
:
play -n
Editar
Con la información adicional de que funciona en Windows y la información de que ni la tarjeta de sonido ("Dispositivo Intel Corporation") ni el Códec ("Genérico") son reconocidos por su nombre, también es posible que se trate de algún problema con el controlador. Hay un bit de "habilitación de mantenimiento" (KAE) en el códec, tal vez sea necesario configurarlo, posiblemente mediante un control de mezclador, pero no sé lo suficiente sobre esto.
Presente un error a los desarrolladores de ALSA, proporcione la lspci -nn
información y el resultado del archivo cat /proc/asound/card*/codec\#*
. (También puedes poner el resultado de este último en un Pastebin y editar tu pregunta con el enlace, para que pueda echarle un vistazo).
Respuesta2
Otra solución para mí ocurrió cuando comencé a adoptar el kit de conexión de audio Jack junto con pulseaudio-jack, en lugar de pulseaudio simple.
Respuesta3
Se solucionó siguiendo la wiki sobre cómo configurar audio de baja latencia.
- Siga la Sección 1.1 en la wikihttps://wiki.archlinux.org/title/Professional_audio
- No instale el kernel AUR de Linux-rt
- Reiniciar después de completar la Sección 1.1 debería eliminar la latencia
- Si no, continúa con el resto de la wiki y configura JACK.