Ist es mit PulseAudio möglich, Rauschunterdrückung in Echtzeit durchzuführen, damit die Audioausgabe gleichmäßiger wird?
Ist es mit PulseAudio möglich, Rauschunterdrückung in Echtzeit durchzuführen, damit die Audioausgabe gleichmäßiger wird?
Antworten:
module-echo-cancel
Ich fing an, viel über PulseAudio und "versteckte" Optionen zu lesen, damit ich eine finden konnte, die dieser Frage ähnlich war. Das eine, das ich gefunden habe, ist das Modul zur Geräuschunterdrückung, das alle statischen Geräusche am Mikrofon und sogar VIELE Hintergrundgeräusche drastisch reduziert und im Grunde den Vorteil bietet, dass Sie nur Ihre eigene Stimme mit hervorragender Qualität aufnehmen können (für Audioaufnahmen) zum Beispiel). Führen Sie dazu die folgenden Schritte aus:
sudo nano /etc/pulse/default.pa
Fügen Sie die folgende Zeile irgendwo in die Datei ein, aber ich empfehle fast am Ende, wo Sie einen Kommentar zu Echo Cancellation finden (~ Zeile 140):
load-module module-echo-cancel
Laden Sie PulseAudio neu ( pulseaudio -k
) oder starten Sie den Computer einfach neu. Sie sollten in der Lage sein, die neue Option zur Rauschunterdrückung im Abschnitt "Eingabegerät" auszuwählen:
Weitere Informationen dazu finden Sie auf der Echo Cancel Module-Seite
Wenn Sie das Echounterdrückungsgerät als Standard festlegen möchten, schalten Sie einfach die obige Zeile in:
load-module module-echo-cancel source_name=logitechsource
und dann am Ende der Datei hinzufügen
set-default-source logitechsource
In diesem Fall habe ich die Quelle benannt logitechsource
, aber Sie können sie beliebig benennen und entweder pulseaudio neu starten.
Zuletzt, wenn Sie in den Toneinstellungen keinen superlangen Namen wünschen (wenn Sie ein Ein- / Ausgabegerät auswählen möchten). Mein Vorschlag ist das Eingabegerät wie folgt umzubenennen:
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
Und wieder Pulseaudio neu starten. Das Endergebnis sieht so aus:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
gemäß gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
Dies ist eine alte Frage, aber ich hatte das gleiche Problem und nach einigem Googeln (wo ich meistens Leute fand, die zustimmten, dass es nicht möglich war) und Lesen einiger Manpages habe ich jetzt eine Lösung entwickelt, die auf der Idee von user2330377 basiert.
Zuerst müssen Sie ein Geräuschprofil für SoX erstellen. Verwenden Sie einfach ein Audio-Aufnahmeprogramm, um ein paar Sekunden Rauschen aufzunehmen, und cd
speichern Sie es dann in dem Verzeichnis , in dem Sie es gespeichert haben sox noise.wav -n noiseprof noise.prof
.
Dann müssen Sie ein ALSA-Loopback-Gerät erstellen:
sudo modprobe snd_aloop
Dies ist erforderlich, da pulseaudio im Gegensatz zu Jack keine Audiosoftware direkt miteinander verbinden kann. Wir werden daher das Loopback-Gerät als Proxy verwenden.
Jetzt müssen Sie paman
die Namen Ihres Mikrofons (oder eines anderen Aufnahmegeräts) und des soeben erstellten Loopback-Geräts suchen. Sobald diese gefunden sind, können Sie den folgenden Befehl ausführen, um die Tonaufnahme von Ihrem Mikrofon zu starten, es durch SoX zu leiten und dann auf dem Loopback-Gerät wiederzugeben:
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
(Wenn Sie die Parameter -d durch die richtigen Gerätenamen ersetzen müssen - das Eingabegerät für den ersten Pacat-Aufruf und die Loopback-Geräteausgabe für das zweite.)
Los geht's, fast geschafft! Starten Sie als letzten Schritt die Tonaufnahme mit der Anwendung Ihrer Wahl, pavucontrol
wechseln Sie zum Register "Aufnahme" und stellen Sie das für die Aufnahme verwendete Audiogerät (rechts als graue Schaltfläche angezeigt) auf "Monitor of Loopback Audio" Gerät". Sie sollten jetzt eine klare und rauschfreie Aufnahme haben!
Untersuchungen haben ergeben, dass es bei keinem Linux-Subsystem eine bekannte Methode zur Rauschunterdrückung in Echtzeit gibt. Einige Websites verweisen auf Hardware, die Sie kaufen können. Diese sollte den Trick viel besser machen als ein Softwarefilter.
Wenn es sich um eine Aufnahme handelt, können Sie den Ton auch über Audacity übertragen und dort den Rauschfilter verwenden.
module-echo-cancel
, der mehrere Implementierungen hat, wie z. B. webrtc | speex.
Hier ist auf jeden Fall Ton, implementieren Sie webrtc-aec in der
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Ja Verwendet die AudioProcessing-Bibliothek von webrtc.org, um VoIP-Anrufe in Anwendungen erheblich zu verbessern, die dies durch akustische Echounterdrückung, analoge Verstärkungsregelung, Rauschunterdrückung und andere Verarbeitung unterstützen.
Hier ist ein Artikel von 2013 zu diesem Thema (Rauschunterdrückung mit pulseaudio, nicht webrtc-aec-spezifisch) http://lac.linuxaudio.org/2013/papers/37.pdf
"Wir haben die ersten Ergebnisse einer Mehrkanal-Rausch- / Echounterdrückungslösung vorgestellt, die auf PulseAudio aufbaut, und die Entwurfsentscheidungen motiviert. Die Arbeit hat zu einer Reihe von Verbesserungen im PulseAudio-Echounterdrückungs- und Signalverarbeitungs-Framework geführt hat während des Entwicklungszyklus von Version 3.0 / 4.0 dazu beigetragen, zukünftige Embedded Linux-Audiolösungen zu vereinfachen. Weitere Arbeiten umfassen die Optimierung des Codes für das Mischen von Audio-Streams, effizientere Resampling-Methoden und die Implementierung einer effizienten AEC in der Mehrkanal-Verarbeitungs-Pipeline. "
Auf der Moduldokumentationsseite gibt es keine Informationen zur Geräuschunterdrückung. Es gibt nur einen AEC-Algorithmus (Acoustic Echo Cancellation) innerhalb von module-echo-cancel, der mehrere Implementierungen aufweist, z. B. webrtc | speex.
Deshalb sollten Sie möglichst Kopfhörer mit integrierter Geräuschunterdrückung kaufen.
Beim Testen der Sprachaufzeichnung in Ubuntu habe ich einige Besonderheiten festgestellt:
Skype, Telegram verwendet Rohdaten vom Standardgerät (in meinem Fall Front-in-Mic- | Backward-Mic-Buchsen). Wenn Sie in diesen Apps ein Geräusch unterdrücken müssen, sollten Sie Kopfhörer und Mikrofone nur mit integrierter Geräuschunterdrückungsfunktion kaufen
Wenn Sie Sprachanrufe im Browser verwenden müssen, sollten Sie berücksichtigen, dass der Browser über eigene Sprachverarbeitungsalgorithmen verfügt, z. B. WebRTC.
Auch Webanwendungen (Websites wie talky, hangouts, appear.in usw.) können eigene Sprachverarbeitungsalgorithmen implementieren, obwohl sie auf der webrtc- Hangout-Analyse basieren können