nnnoiseless

Library Featured

Audio denoising, derived from Xiph's RNNoise library

Checked · Sources

Downloads
172,829
Dependents
27
Stars
370
Forks
19
Contributors
13
Commits
224
Latest release
0.5.2 ·

About

From the project README ·

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/* /
Read the full README

Custom models

nnnoiseless is based on a neural network. There's one built in, but you can also swap out the built-in network for your own. (This might be useful, for example, if you have a particular kind of noise that you want to filter out and nnnoiseless's built-in network doesn't do a good enough job.)

Loading a nnnoiseless network

Let's suppose that you've already trained (or downloaded from somewhere) your neural network weights, and that they are in the file weights.rnn. You can use these weights for the nnnoiseless binary by passing in the --model option:

nnnoiseless --model=weights.rnn input.wav output.wav

On the other hand, if you're using nnnoiseless as a library, you can load your neural network weights using RnnModel::from_bytes or RnnModel::from_static_bytes.

Converting an RNNoise network

Some people have already made their own neural network weights for RNNoise (for example, here). These weights can be used in nnnoiseless also, but you'll need to first convert them from the (text-based) RNNoise format to the (binary) nnnoiseless format. There is a script in the train directory that can do this for you: just run

python train/convert_rnnoise.py input_file.txt output_file.rnn

Training your own weights

This is a little involved, but at least it's documented now. See train/README.md for more information.

Runs on
GPU support unknown
What shows it
  • no dependency or feature matches a backend row
Native code
Optional
  • Binds native code: hdf5-sys (feature train)
Python bindings
No Python binding crate found
License
BSD-3-Clause

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

nnnoiseless beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
nnnoiseless This page Featured

Audio denoising, derived from Xiph's RNNoise library

172,829 downloads over 30 days 27 370 0.5.2 GPU support unknown Binds native code: hdf5-sys (feature train) BSD-3-Clause
sonora Listed

Automatic Gain Control 2 (AGC2) with RNN VAD for WebRTC Audio Processing

551,810 downloads over 30 days 3 99 0.3.0 GPU support unknown No native code found BSD-3-Clause

A simple library to help you transcribe audio

95,741 downloads over 30 days 6 279 0.3.12 GPU support unknown Binds native code: ort-sys (feature onnx), whisper-rs-sys (feature whisper-cpp) MIT
mel_spec Listed

Mel spectrograms aligned to the results from the whisper.cpp, pytorch and librosa reference implementations and suited to streaming audio.

26,437 downloads over 30 days 6 91 0.5.0 CUDA, WebGPU Binds native code: ort-sys (feature ort-tensor). Build uses a native toolchain: cc MIT
rustfst Listed

Library for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs).

24,531 downloads over 30 days 10 192 1.3.1 GPU support unknown No native code found Apache-2.0 OR MIT
msedge-tts Listed

This library is a wrapper of MSEdge Read aloud function API. You can use it to synthesize text to speech with many voices MS provided.

5,349 downloads over 30 days 3 27 0.4.1 GPU support unknown No native code found Apache-2.0 OR MIT
voxr New

Audio and speech on boostr: compressed-audio decode, resampling, DSP and grapheme to phoneme, with speech synthesis (Kokoro, VITS), voice cloning (VoxCPM2), transcription with word timings (Whisper), voice activity (Silero) and audio-text scoring (CLAP), on CPU or CUDA.

642 downloads over 30 days 2 2 0.9.1 CUDA No native code found Apache-2.0
Why FeaturedIt passes every Featured gate.

What it meets

  • It has 21 active dependents and 19 new dependents in 365 days. Featured needs 11 active dependents or 9 new dependents in 365 days.
  • Active dependents are at 100% of their peak. Featured needs at least 50%.
  • Docs are present. The release commit or a manifest ties the crate to the repository.
  • No vulnerability advisory stays unpatched past the grace window. At least one version is neither a prerelease nor 0.0.x.
  • The last activity is on 28 Sep 2026, 42 days ago. The rules expect an update within 1200 days. Dormancy rule

Exact rules: Featured library. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: version 0.5.2 base 300, doubled for 172829 downloads per month, doubled for 21 active users: E = 1200 days
  • dormancy: last activity 2026-09-28, 42 days ago, E = 1200: active
  • featured: featured: active_users 21, new_adopters 19, former_glory 1

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption21 active dependents, 19 new dependents in 365 days1 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependents21crates.io database dumpYes
New dependents (365 days)19crates.io database dumpYes
Peak active dependents21crates.io database dumpYes
Active dependents as a share of the peak1crates.io database dumpYes
Binary downloads per releaseNot measuredYes
MaintenanceLatest human commit: 42 days ago3 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-09-28GitHub repositoryYes
Latest release2025-12-18crates.io database dumpYes
First release2020-07-09crates.io database dumpYes
Latest version0.5.2crates.io database dumpYes
Days the oldest outside issue waits for a reply0GitHub repositoryYes
Maintainer replies over 365 days6GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageYes
Published docstruecrates.io database dumpYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityUnpatched vulnerabilities: none
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windownoneRustSec advisory databaseYes
RustSec unmaintained advisorynoneRustSec advisory databaseYes
Deprecation noticenonecrates.io database dumpYes
Deprecated requirementnonecrates.io database dumpYes
Distribution12 releases, 172,829 downloads over 30 days5 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases12crates.io database dumpYes
Downloads over 30 days172829crates.io database dumpYes
Binary downloads over the last 3 releasesNot measuredYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedfalsecrates.io database dumpYes
Crate deleted from crates.iofalsecrates.io database dumpYes
Repository370 stars, 19 forks, 13 contributors, 224 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars370GitHub repositoryYes — one part of the repository route
GitHub forks19GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account13GitHub contributorsYes — one part of the repository route
Commits on the default branch224GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseBSD-3-Clausecrates.io database dumpNo
Runs on, from listed crates and their direct dependenciesGPU support unknowncrates.io database dumpNo
What shows each backendno dependency or feature matches a backend rowcrates.io database dumpNo
Native code, from listed crates and their dependenciesBinds native code: hdf5-sys (feature train)crates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directly27crates.io database dumpNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.