Est-il possible de supprimer le bruit en temps réel avec PulseAudio, de sorte que la sortie audio qui en sort soit plus douce?
Est-il possible de supprimer le bruit en temps réel avec PulseAudio, de sorte que la sortie audio qui en sort soit plus douce?
Réponses:
module-echo-cancel
J'ai commencé à lire beaucoup de choses sur PulseAudio et sur les options "cachées" qu'il possédait afin de pouvoir en trouver une similaire à cette question. Celui que j’ai trouvé est le module de suppression de bruit, qui réduit considérablement le bruit statique sur le microphone, et même BEAUCOUP de bruit de fond. Vous avez ainsi l’avantage d’enregistrer uniquement votre propre voix avec une excellente qualité (Pour l’enregistrement audio par exemple). Pour ce faire, suivez ces étapes:
sudo nano /etc/pulse/default.pa
Ajoutez la ligne suivante n'importe où dans le fichier, mais je le recommande presque à la fin, où vous trouverez un commentaire sur les éléments d'annulation d'écho (~ ligne 140):
load-module module-echo-cancel
Rechargez PulseAudio ( pulseaudio -k
) ou redémarrez simplement l’ordinateur. Vous devriez pouvoir sélectionner la nouvelle option d'annulation du bruit dans la section Périphérique d'entrée:
Vous trouverez plus d'informations à ce sujet sur la page Module d'écho
Si vous souhaitez définir par défaut le dispositif d'annulation d'écho, il suffit de transformer la ligne ci-dessus en:
load-module module-echo-cancel source_name=logitechsource
puis au bas du fichier, ajoutez
set-default-source logitechsource
Dans ce cas, j'ai nommé la source logitechsource
, mais vous pouvez la nommer comme vous le souhaitez et simplement redémarrer pulseaudio.
Enfin, si vous ne souhaitez pas un nom très long dans les paramètres de son (lorsque vous souhaitez sélectionner un périphérique d'entrée / de 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 une fois, redémarrer pulseaudio. Le résultat final ressemble à ceci:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
selon gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
C'est une vieille question, mais j'avais le même problème et après une recherche sur Google (où je trouvais principalement des personnes qui s'accordaient à dire que ce n'était pas possible) et après avoir lu des pages de manuel, j'ai développé une solution basée sur l'idée de user2330377.
Vous devez d’abord créer un profil de bruit pour SoX. Utilisez n’importe quel programme d’enregistrement audio pour enregistrer quelques secondes de bruit, puis cd
dans le répertoire dans lequel vous l’avez sauvegardé sox noise.wav -n noiseprof noise.prof
.
Ensuite, vous devez créer un périphérique de bouclage ALSA:
sudo modprobe snd_aloop
Cela est nécessaire car pulseaudio, contrairement à Jack, ne peut pas connecter directement un logiciel audio ensemble; nous allons donc utiliser le périphérique de bouclage comme proxy.
Vous devez maintenant démarrer paman
et rechercher les noms de votre microphone (ou de tout autre périphérique d’enregistrement) et du périphérique de bouclage que nous venons de créer. Une fois que ceux-ci sont trouvés, vous pouvez exécuter la commande suivante pour commencer à enregistrer le son de votre microphone, en le transmettant via SoX, puis en le lisant 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érique corrects pour les paramètres -d - le périphérique d'entrée pour la première invocation de paquet et la sortie de périphérique en boucle pour le second.)
Voilà, c'est presque fini! Dans la dernière étape, commencez à enregistrer le son avec l'application de votre choix, puis démarrez-le pavucontrol
, passez à l'onglet "Enregistrement" et réglez le périphérique audio utilisé pour l'enregistrement (affiché en tant que bouton gris à droite) sur "Moniteur de bouclage audio". Dispositif". Vous devriez maintenant avoir un enregistrement clair et sans bruit!
Une enquête a montré qu’il n’existait aucun moyen connu de filtrage par réduction de bruit en temps réel avec un sous-système Linux. Certains sites Web pointent vers du matériel que vous pouvez acheter, ce qui devrait faire l’affaire bien mieux que de faire un filtre logiciel.
Alternativement, s'il s'agit d'un enregistrement, vous pouvez transmettre le son via Audacity et y utiliser le filtre de bruit.
module-echo-cancel
qui a plusieurs implémentations, comme webrtc | speex.
Voici à votre manière, implémentez webrtc-aec dans le
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Oui Utilise la bibliothèque de traitement audio webrtc.org pour améliorer considérablement les appels VoIP dans les applications qui le prennent en charge en effectuant la suppression de l'écho acoustique, le contrôle de gain analogique, la suppression du bruit et d'autres traitements.
Voici un article daté de 2013 sur le sujet (suppression du bruit avec pulseaudio et non pas spécifiquement webrtc-aec) http://lac.linuxaudio.org/2013/papers/37.pdf
"Nous avons présenté les premiers résultats d'une solution de réduction du bruit / écho multicanaux construite sur PulseAudio et motivé les décisions de conception. Les travaux ont abouti à de nombreuses améliorations du cadre de suppression et d'écho d'écho PulseAudio, qui ont été Nous avons également contribué à l'optimisation du code pour le mixage de flux audio, à des méthodes de rééchantillonnage plus efficaces et à la mise en œuvre d'un AEC efficace dans le pipeline de traitement multicanal. "
Il n'y a aucune information sur la page de documentation du module sur l'annulation de bruit. Il y a seulement un algorithme AEC (Acoustic Echo Cancellation) dans module-echo-cancel, qui a plusieurs implémentations, comme webrtc | speex.
Par conséquent, vous devez acheter autant que possible des écouteurs | microphones avec fonction d'annulation du bruit intégrée.
En testant l’enregistrement vocal à Ubuntu, j’ai trouvé des qualités particulières:
Skype, Telegram utilise une entrée brute du périphérique par défaut (dans mon cas, les prises jack avant-arrière / arrière). Si vous devez annuler un bruit dans cette application, vous devez acheter des microphones avec seulement la fonction d'annulation du bruit intégrée.
Si vous devez utiliser des appels vocaux dans un navigateur, vous devez garder à l’esprit que les navigateurs disposent de leurs propres implémentations d’algorithmes de traitement vocal, par exemple WebRTC.
De plus, les applications Web (sites tels que talky, hangouts, Look.in, etc.) peuvent avoir leurs propres implémentations d'algorithmes de traitement de la voix, même si elles peuvent être basées sur l' analyse de hangouts de webrtc.