nnnoiseless 0.3.0

Audio denoising, derived from Xiph's RNNoise library
Documentation

nnnoiseless

Rust docs

nnnoiseless is a rust crate for suppressing audio noise. It is a rust port of the RNNoise C library, and is based on a recurrent neural network.

While nnnoiseless is meant to be used as a library, a simple command-line tool is provided as an example. It operates on WAV files or RAW 16-bit little-endian PCM files. It can be used as:

cargo run --release --example nnnoiseless INPUT.wav OUTPUT.wav

Safety

Except for the C API described below, nnnoiseless is mostly written in safe rust. It currently uses unsafe in two places, to cast arrays of f32s to arrays of Complex<f32>s with half the length; this delivers a small but measurable performance improvement. If a future version of RustFFT has built-in support for real-only FFTs, this unsafe code will be removed.

C-API

It is possible to install nnnoiseless as C-API library, with a RNNoise-compatible header.

$ cargo install cargo-c
$ mkdir staging-nnnoiseless
$ cargo cinstall --destdir staging-nnnoiseless
$ sudo cp -a staging-nnnoiseless/* /