#audio #noise #reduction #neural #port #network #denoising #xiph

bin+lib nnnoiseless

Audio denoising, derived from Xiph’s RNNoise library

7 releases

0.3.2 Jan 7, 2021
0.3.1 Aug 15, 2020
0.2.1 Jul 21, 2020
0.1.1 Jul 12, 2020

#81 in Audio

Download history 96/week @ 2020-10-02 90/week @ 2020-10-09 196/week @ 2020-10-16 121/week @ 2020-10-23 192/week @ 2020-10-30 182/week @ 2020-11-06 471/week @ 2020-11-13 376/week @ 2020-11-20 266/week @ 2020-11-27 498/week @ 2020-12-04 220/week @ 2020-12-11 315/week @ 2020-12-18 184/week @ 2020-12-25 273/week @ 2021-01-01 174/week @ 2021-01-08 247/week @ 2021-01-15

1,109 downloads per month
Used in scribl

BSD-3-Clause

470KB
1.5K SLoC

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 PCM files. Run

cargo install nnnoiseless

to install it (you might need to install rust first). Once nnnoiseless is installed, you can run it like

nnnoiseless input.wav output.wav

or, for more advanced usage, try

nnnoiseless --help

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 a library usable from C, with an RNNoise-compatible header.

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

Dependencies

~1.5MB
~28K SLoC