Ein Echtzeit-Rauschunterdrückungs-Plugin für Sprache basierend auf Xiphs RNNoise. Weitere Informationen zur Basisbibliothek.
Das Plugin soll ein breites Spektrum an Geräuschquellen unterdrücken (aus Originaldokumenten): Computerventilatoren, Büro, Menschenmenge, Flugzeug, Auto, Zug, Bau.
Laut meinen Tests werden leichte Hintergrundgeräusche immer unterdrückt, laute Geräusche wie das Klicken einer mechanischen Tastatur werden unterdrückt, wenn keine Stimme vorhanden ist, die Lautstärke wird jedoch nur reduziert, wenn eine Stimme vorhanden ist.
Bitte beachten Sie, dass dieses Plugin die Sprachqualität bei schlechtem Mikrofon nicht verbessern kann. Es könnte die Situation sogar verschlimmern, indem es die Stimme fälschlicherweise als Geräusch klassifiziert, was die ohnehin nicht so gute Sprachqualität verringern würde.
Das Plugin funktioniert mit einem oder mehreren Kanälen, 16 Bit, 48000 Hz Audioeingang.
❗ ❗ ❗ Verwenden Sie KEINE anderen Abtastraten, sondern NUR 48.000 Hz. Stellen Sie sicher, dass Ihre Audioquelle 48.000 Hz hat, und erzwingen Sie 48.000 Hz, wenn dies nicht der Fall ist.
Es gibt eine minimalistische Benutzeroberfläche mit allen Parametern und Diagnosestatistiken:
Neueste Veröffentlichungen
VAD Threshold (%)
– wenn die Wahrscheinlichkeit, dass es sich beim Ton um eine Stimme handelt, unter diesem Schwellenwert liegt, wird er stummgeschaltet. In den meisten Fällen wäre ein Schwellenwert zwischen 85 % und 95 % in Ordnung. Ohne das VAD sind einige laute Geräusche möglicherweise immer noch etwas hörbar, wenn keine Stimme vorhanden ist.VAD Grace Period (ms)
– wie lange nach der letzten Spracherkennung die Ausgabe nicht stummgeschaltet wird. Dies ist hilfreich, wenn Wort-/Satzenden abgeschnitten werden.Retroactive VAD Grace Period (ms)
– ähnlich der VAD Grace Period (ms)
jedoch für den Anfang von Wörtern/Sätzen.Um die Mikrofoneinstellungen zu überprüfen oder zu ändern, gehen Sie zu „Aufnahmegeräte“ -> „Aufnahme“ -> „Eigenschaften“ des Zielmikrofons -> „Erweitert“.
Um das Plugin in Equalizer APO zu aktivieren, wählen Sie „Plugins“ -> „VST Plugin“ und geben Sie die Plugin-DLL an.
Siehe ausführliche Anleitung von @bssankaran.
Seit Version 0.3.45
verwendet PipeWire die Split-File-Konfiguration, wodurch es extrem einfach ist, Plugins einzurichten und die Konfiguration zu optimieren.
Für ältere PipeWire-Versionen müssten Sie /usr/share/pipewire/pipewire.conf
nach ~/.config/pipewire/pipewire.conf
kopieren und dann die folgende Konfiguration an bereits vorhandene context.modules
anhängen.
Für PipeWire >= 0.3.45
sollten Sie:
~/.config/pipewire/pipewire.conf.d/
~/.config/pipewire/pipewire.conf.d/99-input-denoising.conf
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = /path/to/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 50.0
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]
/path/to/librnnoise_ladspa.so
in den tatsächlichen Bibliothekspfadnoise_suppressor_mono
-> noise_suppressor_stereo
. Auch wenn Ihr Mikrofon anzeigt, dass es Stereo ist, benötigen Sie wahrscheinlich keinen Stereoausgang. Es würde auch das Doppelte an Ressourcen verbrauchen.VAD Threshold (%)
, ...systemctl restart --user pipewire.service
Noise Canceling source
als Eingabegerät auswählen könnenWeitere Informationen finden Sie in der PipeWire-Dokumentation zu Filter-Chains
Fehlerbehebung:
Alternative Lösungen für die PipeWire/PulseAudio-Konfiguration, die auch RNNoise verwenden:
TLDR: Verwenden Sie PipeWire... oder befolgen Sie die nachstehenden Anweisungen.
Die Idee ist:
sink_master
-Parameter) ausgibt und über eine Eingabesenke ( sink_name
-Parameter, Senke wird erstellt) verfügt.source
) zur Eingangssenke des Plugins ( sink
) mit 1 Kanal.Um beispielsweise ein neues Monogerät mit rauschreduziertem Audio von Ihrem Mikrofon zu erstellen, suchen Sie zunächst nach dem Namen Ihres Mikrofons, z. B. mit:
pactl list sources short
Erstellen Sie dann das neue Gerät mit:
pacmd load-module module-null-sink sink_name=mic_denoised_out rate=48000
pacmd load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50,20,0,0,0
pacmd load-module module-loopback source= < your_mic_name > sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true
Dies muss jedes Mal ausgeführt werden, wenn PulseAudio gestartet wird. Sie können dies automatisieren, indem Sie eine Datei in ~/.config/pulse/default.pa
mit dem Inhalt erstellen:
.include /etc/pulse/default.pa
load-module module-null-sink sink_name=mic_denoised_out rate=48000
load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50,200,0,0,0
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true
set-default-source mic_denoised_out.monitor
Die Reihenfolge der Einstellungen in control=50,200,0,0,0
ist: VAD Threshold (%)
, VAD Grace Period (ms)
, Retroactive VAD Grace Period (ms)
, Placeholder1
, Placeholder2
.
Wenn Sie absolut sicher sind, dass Sie einen Stereoeingang wünschen, verwenden Sie stattdessen diese Optionen:
label=noise_suppressor_stereo
channels=2
Wenn Sie Probleme mit Audio-Knistern oder hoher/periodisch zunehmender Latenz haben, kann das Hinzufügen latency_msec=1
zum Loopback hilfreich sein:
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true latency_msec=1
pacmd load-module module-remap-source source_name=denoised master=mic_denoised_out.monitor channels=1
Möglicherweise müssen Sie noch den korrekten Eingang für die Anwendung festlegen. Dies kann im Audiomixer-Bedienfeld (falls vorhanden) auf der Registerkarte „Aufnahme“ erfolgen, wo Sie „Monitor of Null Output“ als Quelle festlegen sollten.
Weiterführende Literatur:
TODO, Beiträge sind willkommen!
Das Plugin wurde getestet mit:
Ich bin nicht mit der ursprünglichen RNNoise-Arbeit verbunden und habe KEIN Verständnis für die wiederkehrenden neuronalen Netze, auf denen sie basiert.
Externe Abhängigkeiten werden über git-subrepo bereitgestellt. Daher besteht keine Notwendigkeit, Submodule zu verwenden, und das Patchen von Subrepos ist einfach (im Moment haben wir mehrere Patches für JUCE).
Verbesserungen sind willkommen! Wenn Sie jedoch etwas Größeres beitragen möchten, eröffnen Sie zunächst ein Problem.
Kompilieren für x64:
cmake -Bbuild-x64 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x64
Kompilieren für x32:
cmake -D CMAKE_CXX_FLAGS=-m32 -D CMAKE_C_FLAGS=-m32 -Bbuild-x32 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x32
Cross-Kompilierung für Windows x64 (MinGW-Builds schlagen derzeit aufgrund bestimmter Inkompatibilitäten in JUCE fehl):
cmake -Bbuild-mingw64 -H. -GNinja -DCMAKE_TOOLCHAIN_FILE=toolchains/toolchain-mingw64.cmake -DCMAKE_BUILD_TYPE=Release
ninja -C build-mingw64
Standardmäßig werden alle für eine Plattform unterstützten Plugins erstellt. Mit den folgenden CMake-Flags können Sie Plugins gezielt deaktivieren:
BUILD_LADSPA_PLUGIN
BUILD_VST_PLUGIN
BUILD_VST3_PLUGIN
BUILD_LV2_PLUGIN
BUILD_AU_PLUGIN
(nur macOS)BUILD_AUV3_PLUGIN
(nur macOS)Zum Beispiel:
cmake -DBUILD_VST_PLUGIN=OFF -DBUILD_LV2_PLUGIN=OFF
Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert – Einzelheiten finden Sie in der LIZENZ-Datei.
Verwendete Bibliotheken: