Rust bindings for the webrtc-audio-processing library
Rust
329
183 commits
updated Jul 16, 2026
A wrapper around PulseAudio's repackaging of WebRTC's AudioProcessing module.
webrtc-audio-processing can remove echo from an audio input stream in the situation where a speaker is feeding back into a microphone, as well as noise-removal, auto-gain-control, voice-activity-detection, and more!
See examples/simple.rs for an example of how to use this crate.
Major version of this Rust wrapper tracks the major version of the PulseAudio WebRTC AudioProcessing upstream; minor and patch versions are independent.
As a result, Rust webrtc-audio-processing doesn't fully conform to semantic versioning: for example version 2.3 can introduce an API-breaking change over 2.2. Patch versions are backwards compatible.
It is therefore suggested that you use tilde requirements when pulling this crate:
webrtc-audio-processing = "~2.0"
bundled - Build webrtc-audio-processing from the included C++ code;
also enables symbol mangling in the built WebRTC library so that multiple major versions of
webrtc-audio-processing can be linked togetherserde - Derive serialize and deserialize traits for Serde useexperimental-aec3-config - allow access to detailed EchoCanceller3 config from the C++ code;
experimental, not subject to semver guarantees; activates the bundled flag (needs private WebRTC
headers)experimental-unlink-ns - unlinks noise suppression between channels, preventing a loud/quiet
channel from affecting the noise suppression applied to other channels; activates the bundled flag;
requires patch to be installedportaudio - To build recording and karaoke examples. Does not affect the library build.By default the build will attempt to dynamically link with the library installed via your OS's package manager.
You can specify an include path yourself by setting the environment variable WEBRTC_AUDIO_PROCESSING_INCLUDE.
sudo apt install libwebrtc-audio-processing-dev # Ubuntu/Debian
sudo pacman -S webrtc-audio-processing # Arch
The webrtc source code is included as a git submodule. Be sure to clone this repo with the --recursive flag, or pull the submodule with git submodule update --init.
Building from source and static linking can be enabled with the bundled feature flag. You need the following tools to build from source:
clang or gccpkg-config (macOS: brew install pkg-config)meson (masOS: brew install meson)ninja-build (macOS: brew install ninja)cargo release --verbose <new-version>, double-check and follow instructionsRust
90.6%
C++
9.4%
Rust bindings for the webrtc-audio-processing library
Rust
329
183 commits
updated Jul 16, 2026
A wrapper around PulseAudio's repackaging of WebRTC's AudioProcessing module.
webrtc-audio-processing can remove echo from an audio input stream in the situation where a speaker is feeding back into a microphone, as well as noise-removal, auto-gain-control, voice-activity-detection, and more!
See examples/simple.rs for an example of how to use this crate.
Major version of this Rust wrapper tracks the major version of the PulseAudio WebRTC AudioProcessing upstream; minor and patch versions are independent.
As a result, Rust webrtc-audio-processing doesn't fully conform to semantic versioning: for example version 2.3 can introduce an API-breaking change over 2.2. Patch versions are backwards compatible.
It is therefore suggested that you use tilde requirements when pulling this crate:
webrtc-audio-processing = "~2.0"
bundled - Build webrtc-audio-processing from the included C++ code;
also enables symbol mangling in the built WebRTC library so that multiple major versions of
webrtc-audio-processing can be linked togetherserde - Derive serialize and deserialize traits for Serde useexperimental-aec3-config - allow access to detailed EchoCanceller3 config from the C++ code;
experimental, not subject to semver guarantees; activates the bundled flag (needs private WebRTC
headers)experimental-unlink-ns - unlinks noise suppression between channels, preventing a loud/quiet
channel from affecting the noise suppression applied to other channels; activates the bundled flag;
requires patch to be installedportaudio - To build recording and karaoke examples. Does not affect the library build.By default the build will attempt to dynamically link with the library installed via your OS's package manager.
You can specify an include path yourself by setting the environment variable WEBRTC_AUDIO_PROCESSING_INCLUDE.
sudo apt install libwebrtc-audio-processing-dev # Ubuntu/Debian
sudo pacman -S webrtc-audio-processing # Arch
The webrtc source code is included as a git submodule. Be sure to clone this repo with the --recursive flag, or pull the submodule with git submodule update --init.
Building from source and static linking can be enabled with the bundled feature flag. You need the following tools to build from source:
clang or gccpkg-config (macOS: brew install pkg-config)meson (masOS: brew install meson)ninja-build (macOS: brew install ninja)cargo release --verbose <new-version>, double-check and follow instructionsRust
90.6%
C++
9.4%