Est-il possible d'éliminer le bruit en temps réel avec PulseAudio, afin que le son qui sort soit plus lisse ?
Réponses
Trop de publicités?Module Pulseaudio module-echo-cancel
J'ai commencé à lire beaucoup de choses sur PulseAudio et les options "cachées" qu'il propose afin de trouver une option similaire à cette question. Celle que j'ai trouvée est le module de suppression du bruit, qui réduit considérablement tout bruit statique sur le microphone et même BEAUCOUP de bruit de fond, vous donnant ainsi l'avantage d'enregistrer uniquement votre propre voix avec une excellente qualité (pour un enregistrement audio par exemple). Pour ce faire, suivez les étapes suivantes :
-
sudo nano /etc/pulse/default.pa
-
Ajoutez la ligne suivante n'importe où dans le fichier, mais je recommande presque à la fin où vous trouverez un commentaire sur l'annulation de l'écho (~ligne 140) :
load-module module-echo-cancel
-
Rechargez PulseAudio (
pulseaudio -k
) ou redémarrez simplement l'ordinateur. Vous devriez être en mesure de sélectionner la nouvelle option d'annulation du bruit dans la section Périphérique d'entrée :
Vous pouvez trouver plus d'informations à ce sujet sur le site Page du module d'annulation de l'écho
Définir l'entrée par défaut
Si vous souhaitez par défaut le dispositif d'annulation d'écho transforme simplement la ligne ci-dessus en :
load-module module-echo-cancel source_name=logitechsource
et ensuite, au bas du fichier, ajoutez
set-default-source logitechsource
Dans ce cas, j'ai nommé la source logitechsource
mais vous pouvez le nommer comme vous le souhaitez et simplement redémarrer pulseaudio.
Renommer le dispositif
Enfin, si vous ne voulez pas avoir un nom super long dans les Paramètres du son (lorsque vous voulez sélectionner un périphérique d'entrée/sortie). Ma suggestion est de renommer le périphérique d'entrée comme ceci :
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
Et encore, en redémarrant pulseaudio. Le résultat final ressemble à ceci :
UPDATE - Documentation complète Trouvé ici Merci à clémente
C'est une vieille question, mais j'ai eu le même problème et après quelques recherches sur Google (où j'ai surtout trouvé des gens qui étaient d'accord pour dire que ce n'était pas possible) et la lecture de quelques pages de manuel, j'ai maintenant développé une solution basée sur l'idée de l'utilisateur 2330377.
Vous devez d'abord créer un profil de bruit pour SoX. Il suffit d'utiliser n'importe quel programme d'enregistrement audio pour enregistrer quelques secondes de bruit, puis cd
dans le répertoire où vous l'avez enregistré et faites sox noise.wav -n noiseprof noise.prof
.
Ensuite, vous devez créer un périphérique de bouclage ALSA :
sudo modprobe snd_aloop
Ceci est nécessaire car pulseaudio, contrairement à Jack, ne peut pas connecter directement les logiciels audio entre eux ; nous utiliserons donc le périphérique loopback comme proxy.
Maintenant, vous devez commencer paman
et trouvez les noms de votre microphone (ou autre dispositif d'enregistrement) et du dispositif de bouclage que nous venons de créer. Une fois ces noms trouvés, vous pouvez exécuter la commande suivante pour commencer à enregistrer le son de votre microphone, le faire passer par SoX et le lire sur le périphérique de bouclage :
pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo --latency=1msec|sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - noisered noise.prof 0.2|pacat -p -d alsa_output.2.analog-stereo --latency=1msec
(Où vous devez substituer les noms de périphériques corrects pour les paramètres -d -- le périphérique d'entrée pour la première invocation de pacat et la sortie du périphérique de bouclage pour la seconde).
Voilà, c'est presque terminé ! Pour terminer, commencez à enregistrer du son avec l'application de votre choix, puis lancez pavucontrol
Dans l'onglet "Enregistrement", passez à l'onglet "Enregistrement" et réglez le périphérique audio utilisé pour l'enregistrement (affiché comme le bouton gris à droite) sur "Moniteur du périphérique audio de bouclage". Vous devriez maintenant avoir un enregistrement clair et sans bruit !
La page de documentation du module ne contient aucune information sur la suppression du bruit. Il y a seulement l'algorithme AEC (Acoustic Echo Cancellation) dans le module-echo-cancel, qui a plusieurs implémentations, comme webrtc | speex.
C'est pourquoi vous devriez, dans la mesure du possible, acheter des écouteurs et des microphones avec une fonction intégrée de suppression du bruit.
En testant l'enregistrement vocal dans ubuntu, j'ai trouvé quelques qualités particulières :
-
Skype et Telegram utilisent l'entrée brute du périphérique par défaut (dans mon cas, les prises micro avant et arrière). Si vous avez besoin d'annuler un bruit dans ces applications, vous devez acheter des écouteurs/microphones avec une fonction intégrée d'annulation du bruit.
-
Si vous avez besoin d'utiliser des appels vocaux dans un navigateur, vous devez garder à l'esprit que les navigateurs ont leurs propres implémentations d'algorithmes de traitement de la voix, par exemple WebRTC.
-
De même, les applications web (sites comme talky, hangouts, appear.in, etc.) peuvent avoir leurs propres implémentations d'algorithmes de traitement de la voix, même si elles peuvent être basées sur webrtc. analyse de la fréquentation
Solution simple sur ubuntu LTS ou les distros basées sur debian il s'agit d'un script en ligne qui active la fonction d'annulation du bruit qui est déjà dans pulse audio (l'audio par défaut sur debian).
wget -qO - https://gist.githubusercontent.com/grigio/cb93c3e8710a6f045a3dd9456ec01799/raw/94f07c7d75bcf5dd9b08a9c3034844223ec6fbe1/fix-microphone-background-noise.sh | sudo bash && pulseaudio -k
vous pouvez également exécuter ces commandes en mode séquentiel (c'est la même chose)
sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak
sudo cat <<EOT >> /etc/pulse/default.pa
load-module module-echo-cancel source_name=noechosource sink_name=noechosink
set-default-source noechosource
set-default-sink noechosink
EOT
Il existe un plugin de suppression du bruit pour le module-ladspa-sink :
Ici vous pouvez trouver un tutoriel pour l'installation sur Fedora, et 2 exemples d'enregistrements pour avoir une idée des effets du plugin :
- https://weblog.lkiesow.de/20200705-ladspa-realtime-noise-suppression-plugin/
- https://fedoramagazine.org/real-time-noise-suppression-for-video-conferencing/
Sur Ubuntu :
-
Télécharger le linux_rnnoise_bin_x64.tar.gz
-
À partir de l'archive, copiez le
bin/ladspa/librnnoise_ladspa.so
Par exemple, pour/usr/local/lib/librnnoise_ladspa.so
ou n'importe où ailleurs. -
Trouvez le nom de votre entrée en utilisant
pactl list sources short
. Par exemple, mon microphone s'appellealsa_input.usb-046d_0994_4A365E20-02.mono-fallback
-
Exécutez les commandes suivantes pour activer l'annulation du bruit (avant d'exécuter ces commandes, remplacez l'icône de l'ordinateur par celle de l'ordinateur.
/usr/local/lib/librnnoise_ladspa.so
yalsa_input.usb-046d_0994_4A365E20-02.mono-fallback
à vos valeurs déterminées dans les étapes 2. et 3.) :pacmd load-module module-null-sink sink_name=mic_denoised_out pacmd load-module module-ladspa-sink sink_name=mic_raw_in \ sink_master=mic_denoised_out label=noise_suppressor_mono \ plugin=/usr/local/lib/librnnoise_ladspa.so \ control=50 pacmd load-module module-loopback \ source=alsa_input.usb-046d_0994_4A365E20-02.mono-fallback \ sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true pacmd load-module module-remap-source source_name=denoised \ master=mic_denoised_out.monitor channels=1
-
Dans votre application d'enregistrement vocal, vous allez configurer l'entrée audio à partir de
Null output
oRemapped monitor of null output
et tester (j'ai utilisé Skype Echo) -
Pour rendre les changements permanents, ajoutez les commandes de l'étape 4 dans le fichier
/etc/pulse/default.pa
en omettant lepacmd
au début de chaque ligne.
- Réponses précédentes
- Plus de réponses