La salida de sonido comienza con retraso

10

A través de SPDIF, el sonido audible comienza tarde, por ejemplo, en el cuadro de diálogo Prueba de sonido, puedo escuchar "Izquierda" cuando la voz debería decir "Delantero izquierdo".

Cuando lo pavucontrolabro (en segundo plano) mientras hago clic en Test Sound, comienza inmediatamente.

En general, al iniciar cualquier archivo de audio / medios, el comienzo no se emite / se puede escuchar. Conexión óptica o coaxial. Esto solo parece afectar a Ubuntu 12.10, no fue el caso en 12.04, ¡no parece ser el caso en 13.04!

De ubuntuusers.de, un poco de ayuda: jugar un seno no curable para mantener vivo spdif:

apt-get install sox
play -n -c2 synth sin gain -100   # -c2 for two channels

Hardware en un ASRock 970 Extreme3 ​​(y GeForce 210):

$ cat /proc/asound/cards
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfe200000 irq 16
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xfe080000 irq 25

$ cat /proc/asound/card0/codec* | grep Codec
Codec: Realtek ALC892

Algunos pulseaudio -vresultados pegados a http://paste.ubuntu.com/5629082/

¿Puedo actualizar desde pulseaudio 2.1 de alguna manera?

La salida en vivo de Ubuntu 13.04 se pegó a http://paste.ubuntu.com/5630475/ . En realidad, aquí solo se inicia la primera invocación de sonido (¿o después de una pausa larga del usuario?), Es decir, después de "... Izquierda", Se escucha "Front Right" mientras que en 12.10 siempre es "... Left", "... Right".

tipo
fuente
1
¿Puede dar más información sobre la tarjeta de sonido y sobre qué está conectada? ¿Puedes probar con Jackd si este es el caso también? porque puede estar relacionado con Pulse Audio y no con la tarjeta de sonido.
ttoine
Realtek ALC892 parece ofrecer muchos éxitos en Google para minar a través de: /
escriba
instalar el controlador del fabricante como en community.linuxmint.com/tutorial/view/1236 tampoco ayudó. una línea dice: {.id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662},
escriba

Respuestas:

26

Sé que estoy a punto de revivir un hilo antiguo, pero he encontrado una solución de trabajo fácil que soluciona el problema.

De: https://wiki.archlinux.org/index.php/PulseAudio

Para deshabilitar la carga del módulo module-suspend-on-idle, comente la siguiente línea en el archivo de configuración en uso (~ / .config / pulse / default.pa o /etc/pulse/default.pa):

### Automatically suspend sinks/sources that become idle for too long
# load-module module-suspend-on-idle

Finalmente reinicie PulseAudio para aplicar los cambios.

Dr_Evil
fuente
Esta fue la respuesta para mí también, pero tiene un inconveniente. Tengo algunos programas de audio que usan ALSA para pasar directamente un formato particular a un receptor de cine en casa para decodificar en lugar de usar el remuestreo a veces poco fiable de PA. Esto funciona fácilmente debido a esta misma función de suspensión.
Moilleadóir
3

Parece que la administración de energía impide que la tarjeta de sonido emita el primer fragmento de audio. Desde http://wiki.gentoo.org/wiki/Power_management/Soundcard , los bits importantes son los siguientes:

Ajuste de tiempo de ejecución

Puede ajustar el controlador en el sistema de archivos sysfs en / sys / module / snd_hda_intel / parameters

La perilla power_save_controller controla, si el modo de ahorro de energía está habilitado. Está preestablecido por la opción del núcleo ... ahorro de energía ...

La perilla power_save establece el tiempo de espera en segundos. Está preestablecido por la opción del núcleo Tiempo de espera predeterminado ...

pm-utils

pm-utils contiene un script para habilitar el modo de ahorro de energía cuando está en batería y deshabilitar cuando está en CA. Anula los valores predeterminados del núcleo.

Si usa pm-utils, pero no quiere este tipo de regulación, desactive el script: root # touch /etc/pm/power.d/intel-audio-powersave

Del texto anterior, las cosas para probar son:

  1. en la terminal, ejecute lo siguiente e intente reproducir audio nuevamente:

    echo N | sudo tee /sys/module/snd_hda_intel/parameters/power_save_controller
    

    Si el audio está bien, entonces debe hacerlo permanente agregando un nuevo archivo en /etc/modprobe.d/ con el siguiente contenido:

    options snd_hda_intel power-saving=N
    
  2. ejecutar sudo touch /etc/pm/power.d/intel-audio-powersavey reiniciar

    si la solución funcionó, el audio debería reproducirse normalmente, si no, elimine el archivo nuevamente:

    sudo rm /etc/pm/power.d/intel-audio-powersave
    

Si ninguno de estos funciona, entonces se me acabaron las ideas :-).

Daniel Llewellyn
fuente
Impresionante respuesta, muchas gracias! Lamentablemente no hay cambios todavía.
escriba
¿Qué tipo de "archivo nuevo" se supone que debo hacer en etc / modprobe.d /?
Bhikkhu Subhuti
1

Este es un problema general con SPDIF / salida digital y el receptor procesando la señal, etc. Si no hay señal, el receptor entra en modo inactivo. Se necesitan unos pocos cientos de milisegundos para comenzar a reproducir la señal. La ÚNICA forma de solucionarlo es hacer que su salida SPDIF envíe constantemente ALGUNAS señales, manteniendo así el procesamiento del receptor activo en todo momento. Por el momento, acabo de resolver este problema en Windows usando una pequeña utilidad que un tipo escribió en .NET que genera una señal nula en todo momento. Lo llama SPDIF Keep-Alive. Esto mantiene la señal fluyendo y mi receptor escucha constantemente. Todavía no he visto una manera de hacer esto para Linux, pero me imagino que el soporte para crear tal cosa está EN TODAS PARTES. ¡Con suerte, esto le ha dado a alguien una idea sobre qué buscar o dónde buscar a continuación! -K9SPY

Audio digital keep-alive keep alive SPDIF Keep-Alive keep alive TOSLINK keep-alive keep alive el tiempo de espera se va a dormir apaga el retraso de sonido SPDIF

K9SPY
fuente
1
  1. Encuentra los archivos de configuración de PulseAudio que contienen load-module module-suspend-on-idlelíneas:

    neatsoft@desktop:~$ grep module-suspend-on-idle /etc/pulse/*
    /etc/pulse/default.pa:load-module module-suspend-on-idle
    /etc/pulse/system.pa:load-module module-suspend-on-idle
    
  2. Comenta esas líneas.

  3. Reinicie PulseAudio para aplicar los cambios:

    pulseaudio -k

Acabo de probar en Ubuntu 17.04 y funciona bien.

Neatsoft
fuente
Esto funcionó para mí en 19.04, excepto por la parte de reinicio. Tuve que reiniciar para reiniciar pulseaudio porque pulseaudio -kme dio algunos errores.
muclux
0

La respuesta aceptada sobre no cargarmodule-suspend-on-idle no soluciona el problema para mí. Para "arreglar" esto, tuve que dejar un comando de silencio continuo ejecutándose en segundo plano, vea la ACTUALIZACIÓN 2 de la siguiente pregunta:

Y he reproducido este problema tanto en los altavoces internos de la computadora portátil como en las PC a través de HDMI y auriculares, sin necesidad de SPDIF, en los últimos ArchLinux y Ubuntu.

pepper_chico
fuente