web-dev-qa-db-fra.com

Élimination du bruit en temps réel avec PulseAudio?

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?

64
Vadim Peretokin

Module Pulseaudio 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, ce qui vous permet d’enregistrer uniquement votre propre voix avec une excellente qualité (pour l’enregistrement audio par exemple). Pour ce faire, suivez ces étapes:

  1. Sudo nano /etc/Pulse/default.pa

  2. 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
    
  3. 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:

    screenshot

Vous pouvez trouver plus d’informations à ce sujet sur le page Echo Cancel Module

Définir l'entrée comme valeur par défaut

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 logitechsourcename__, mais vous pouvez la nommer comme vous voulez et simplement redémarrer pulseaudio.

Renommer l'appareil

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:

screenshot

73
Luis Alvarado

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 certaines 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 cddans le répertoire dans lequel vous l’avez sauvegardé et saisissez 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 pamanet 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 lancez pavucontrolname__, passez à l'onglet "Recording" et réglez le périphérique audio utilisé pour l'enregistrement (affiché en tant que bouton gris à droite) à "Monitor of Loopback". Appareil audio". Vous devriez maintenant avoir un enregistrement clair et sans bruit!

16
cemper93

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 et 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.

Voici à votre manière, implémentez webrtc-aec dans le

http://wiki.gentoo.org/wiki/PulseAudio

webrtc-aec Oui Utilise la bibliothèque audioProcessing de 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 sur 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 ayant 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é a é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. "

1
user2330377

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). Si vous devez annuler un bruit dans cette application, vous devez acheter des micros pour casques | uniquement avec 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, paraître.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 hangout-analysis

0
vskubriev