4 votes

Latence de rétroaction PulseAudio

Je utilise les boucles de pulseaudio pour lier les sons de mon système et mon microphone. Le problème est que mes sons du système ont un retard d'une seconde ou même parfois plus. J'ai coché simultané dans paprefs mais cela n'a pas résolu le problème. J'utilise ce script pour le faire.

STREAM_MODULE=$(pactl load-module module-null-sink sink_name=StreamAudio sink_properties=device.description="StreamAudio")

pactl load-module module-loopback source=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor sink=StreamAudio latency_msec=1 >> /dev/null  
pactl load-module module-loopback source=alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono sink=StreamAudio latency_msec=1 >> /dev/null

pactl load-module module-device-manager >> /dev/null  

read -p "Chargé! Appuyez sur Entrer pour décharger!"

pactl unload-module $STREAM_MODULE
pactl unload-module module-device-manager
pactl unload-module module-null-sink
pactl unload-module module-loopback

J'ai parcouru des pages de Google, mais rien ne semble résoudre le problème. Est-ce que quelque chose d'évident m'échappe?

alsa_output.pci-0000_00_1b.0.analog-stereo.monitor sont tous mes sons du système.

alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono est mon microphone

Voici un exemple où le retard devient de 3,4 secondes: http://screencloud.net/v/tNAQ tandis que l'autre boucle a beaucoup moins http://screencloud.net/v/suIF

De ce que je peux voir, pour une raison quelconque, le tampon se remplit. Y a-t-il un moyen de le vider ou quelque chose?

5voto

Vilsol Points 185

J'ai trouvé une solution temporaire, mais cela me confond toujours. J'ai créé un module combiné, et après cela je lie chaque source audio que je veux au module combiné, qui ensuite est routé vers mes sons système et vers le sink de Streaming.

STREAM_MODULE=$(pactl load-module module-null-sink sink_name=StreamAudio sink_properties=device.description="StreamAudio")
COMBINE_MODULE=$(pactl load-module module-combine-sink sink_name=Combined sink_properties=device.description="Combined" slaves=StreamAudio,alsa_output.pci-0000_00_1b.0.analog-stereo)

pactl load-module module-loopback rate=44000 adjust_time=0 source=alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono sink=StreamAudio latency_msec=1 >> /dev/null

pactl load-module module-device-manager >> /dev/null  

read -p "Chargé ! Appuyez sur Entrée pour décharger !"

pactl unload-module $COMBINE_MODULE
pactl unload-module $STREAM_MODULE
pactl unload-module module-device-manager
pactl unload-module module-loopback

Il y a probablement un moyen de filtrer les résultats de pacmd list-clients et ensuite nettoyer uniquement les sources valides, changer leur sortie vers le sink combiné, mais cela prendrait trop de temps et serait trop complexe à faire.

Cependant, un nouveau problème se pose maintenant, et je l'ai même testé en exécutant la commande à travers le terminal. Pour une raison quelconque, je ne peux pas changer le sink de sortie de Java. Voici ce que j'ai essayé et ce que cela a retourné :

vilsol@skynet:~$ pacmd move-sink-input 6421 124
Bienvenue dans PulseAudio! Utilisez "help" pour des informations d'utilisation.
>>> Déplacement échoué.

J'ai essayé avec d'autres également et ils ont tous fonctionné. 6421 est l'index de Java, et 124 est l'index du sink.

0voto

Kiran Points 1

Un peu tard mais pour ceux qui ont encore besoin d'aide :
Installez l'extension Shell GNOME 'PulseAudio Loopback Device' (il suffit de rechercher le mot entre guillemets dans le logiciel Ubuntu).

Capture d'écran de l'extension Loopback Device PA

Elle a à peine de latence perceptible et a été une solution parfaite pour moi après pas mal de recherches ! J'espère que cela sera utile à quelqu'un !

-1voto

Master_T Points 2316

Il y a quelque temps, j'ai pu boucler ma guitare sur les enceintes sans délai notable, donc pulseaudio prend en charge cela, mais je me souviens avoir eu des problèmes avec des délais inférieurs à 10 ms. Mes suggestions sont

  1. de revoir les paramètres de la commande
  2. d'utiliser un délai plus long
  3. de tester chaque bouclage séparément et
  4. de demander directement des instructions aux développeurs de pulseaudio.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X