Suppression du bruit en temps réel avec PulseAudio?

48

Est-il possible de supprimer le bruit en temps réel avec PulseAudio, de sorte que le son sortant est plus fluide?

    
posée Vadi 27.12.2010 - 03:46
la source

5 réponses

47

Module Pulseaudio module-echo-cancel

J'ai commencé à lire beaucoup sur PulseAudio et sur les options "cachées" qu'il contenait pour pouvoir en trouver une similaire à cette question. Celui que j’ai trouvé était le module d’annulation du bruit, qui réduit considérablement le bruit statique sur le microphone et même BEAUCOUP du 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, procédez comme suit:

  1. sudo nano /etc/pulse/default.pa

  2. Ajoutez la ligne suivante n'importe où sur le fichier, mais je vous 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. Recharger PulseAudio ( pulseaudio -k ) ou redémarrez simplement l'ordinateur. Vous devriez pouvoir sélectionner la nouvelle option de suppression du bruit dans la section Périphérique d’entrée:

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

Définir l’entrée par défaut

Si vous souhaitez définir par défaut le périphérique d'annulation d'écho, placez simplement la ligne ci-dessus dans :

load-module module-echo-cancel source_name=logitechsource

puis au bas du fichier ajouter

set-default-source logitechsource

Dans ce cas, j'ai nommé le source logitechsource , mais vous pouvez le nommer comme vous voulez et simplement redémarrer pulseaudio.

Renommer le périphérique

Enfin, si vous ne souhaitez pas utiliser un nom super long dans les paramètres audio (lorsque vous souhaitez 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, redémarrer pulseaudio. Le résultat final ressemble à ceci:

    
réponse donnée Luis Alvarado 29.04.2016 - 17:41
la source
13

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 personnes qui acceptaient que ce ne soit pas possible) et des pages de manuel, j'ai maintenant 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 simplement n'importe quel programme d'enregistrement audio pour enregistrer quelques secondes de bruit, puis cd dans le répertoire dans lequel 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 un logiciel audio; nous allons donc utiliser le périphérique de bouclage comme proxy.

Maintenant, vous devez lancer paman et trouver les noms de votre microphone (ou autre périphérique d'enregistrement) et du périphérique de bouclage que nous venons de créer. Une fois ceux-ci trouvés, vous pouvez exécuter la commande suivante pour démarrer l'enregistrement du son depuis votre microphone, en le faisant passer par 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 remplacer les noms de périphérique corrects pour les paramètres -d - le périphérique d’entrée pour le premier appel pacat et la sortie du périphérique de bouclage pour le second.)

Voilà, c'est presque fini! Dans un dernier temps, commencez à enregistrer le son avec l'application de votre choix, puis démarrez pavucontrol , passez à l'onglet "Enregistrement" et définissez le périphérique audio utilisé (affiché comme bouton gris à droite) sur "Moniteur de périphérique audio en boucle ". Vous devriez maintenant avoir un enregistrement clair et sans bruit!

    
réponse donnée cemper93 12.04.2015 - 02:50
la source
3

L’étude montre qu’il n’existe aucun moyen connu de filtrer la réduction du bruit en temps réel avec n’importe quel sous-système Linux. Certains sites Web pointent vers du matériel que vous pouvez acheter, ce qui devrait faire beaucoup mieux que de faire un filtre logiciel.

Si vous optez pour un enregistrement, vous pouvez également transmettre le son via Audacity et utiliser le filtre de bruit.

    
réponse donnée Martin Owens -doctormo- 08.01.2011 - 02:24
la source
1

Ici, à la manière de la tonalité, implémentez webrtc-aec dans le

lien

webrtc-aec Yes Utilise la bibliothèque weBrtc.org AudioProcessing pour améliorer considérablement les appels VoIP dans les applications qui la prennent en charge en effectuant la suppression de l'écho acoustique, le contrôle du gain analogique, la suppression du bruit et d'autres traitements.

Voici un article daté de 2013 sur le sujet (suppression du bruit avec pulseaudio, pas webrtc-aec en particulier) lien

"Nous avons présenté les premiers résultats d’une solution multicanal de réduction du bruit et de l’écho top of PulseAudio et motivé les décisions de conception. Les travaux ont abouti à un certain nombre d’améliorations du cadre d’annulation et de traitement du signal de l’écho PulseAudio, qui ont été contribués au cours du cycle de développement de la version 3.0 / 4.0 et devraient faciliter les futures solutions audio Linux embarquées. D'autres travaux incluent l'optimisation du code pour le mixage de flux audio, des méthodes de rééchantillonnage plus efficaces et l'implémentation d'un composant AEC efficace dans le pipeline de traitement multicanal.

    
réponse donnée user2330377 22.06.2013 - 17:52
la source
0

Il n’ya aucune information sur la page de documentation du module concernant l’annulation du bruit. Il n'y a que l'algorithme AEC (Acoustic Echo Cancellation) dans module-echo-cancel, qui a plusieurs implémentations, comme webrtc | speex.

Par conséquent, vous devriez acheter autant que possible des microphones avec fonction d’annulation de bruit intégrée.

Comme j'ai testé l'enregistrement vocal dans Ubuntu, j'ai trouvé des qualités particulières:

  • Skype, Telegram utilise l’entrée brute du périphérique par défaut (dans mon cas, les prises jack avant / arrière du micro). Si vous devez annuler un bruit dans ces applications, vous devez acheter des casques / microphones uniquement avec la fonction de suppression de bruit intégrée

  • Si vous devez utiliser les appels vocaux dans le navigateur, vous devez garder à l’esprit que ses propres algorithmes de traitement de la voix sont utilisés dans les navigateurs, par ex. WebRTC.

  • Les applications Web (comme talky, hangouts, apparaissent.in, etc.) peuvent également avoir leurs propres implémentations d'algorithmes de traitement de la voix, même si elles peuvent être basées sur webrtc hangout-analysis

réponse donnée vskubriev 14.02.2018 - 09:35
la source

Lire d'autres questions sur les étiquettes