werman/noise-suppression-for-voice

Noise suppression plugin based on Xiph's RNNoise

werman/noise‑suppression‑for‑voice

What it is – A real‑time audio plugin that reduces background noise from a microphone using Xiph’s RNNoise neural‑network model. It ships as VST2, VST3, LV2, LADSPA, AU and AUv3 plugins, so it can be used in most DAWs and system‑wide audio pipelines.

Key features

  • Noise suppression based on RNNoise (recurrent neural network trained on a wide range of noises).
  • Works with 16‑bit, 48 kHz mono or stereo streams.
  • Minimal GUI showing parameters and diagnostic stats.
  • Adjustable Voice‑Activity‑Detection (VAD) settings:
    • VAD Threshold (%) – how confident the model must be that speech is present before passing audio through.
    • VAD Grace Period (ms) – keeps output audible for a short time after speech ends to avoid cutting words.
    • Retroactive VAD Grace Period (ms) – adds latency to keep the start of speech when detection lags.
  • Can be built for Windows, Linux and macOS (AU/AUv3 on macOS is planned).
  • Provides separate builds for each plugin format; you can disable unwanted formats via CMake flags.

How to use

  1. Windows – Install the VST2/3 DLL and load it in a host such as Equalizer APO, Carla or any DAW. Set your microphone’s sample rate to 48 kHz.
  2. Linux (PipeWire) – Load the supplied librnnoise_ladspa.so via a PipeWire filter‑chain configuration (see README for a ready‑to‑copy config file). Adjust the VAD controls in the control block.
  3. Linux (PulseAudio) – Create a null sink, load the LADSPA plugin with module-ladspa-sink, and loop back your mic to the sink. Add the lines to ~/.config/pulse/default.pa for automatic startup.
  4. macOS – AU/AUv3 support is present in the source; contributions are welcome to finish the build scripts.

Building

# Release build for 64‑bit
cmake -Bbuild-x64 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x64

You can compile 32‑bit, or cross‑compile for Windows with the provided MinGW toolchain. Use CMake flags like -DBUILD_VST_PLUGIN=OFF to skip formats you don’t need.

Dependencies – The project vendors its external code via git‑subrepo:

  • JUCE (GPLv3) – framework for the GUI and plugin wrappers.
  • FST – audio processing utilities.
  • catch2 – unit‑test library.

License – GPL‑3.0 (same as RNNoise and JUCE). Anyone can use, modify, and redistribute the plugin under the same license.

Who it’s for – Anyone needing low‑latency, on‑device noise reduction for voice chats, streaming, or recording without paying for a commercial DSP solution. It’s especially handy for remote‑work setups where you can integrate it into system‑wide audio (Equalizer APO, PipeWire, PulseAudio).

Related

  • Project
  • Project
  • Project
  • Project