explaingit

xiph/rnnoise

5,577CAudience · developerComplexity · 4/5Setup · hard

TLDR

A C library that removes background noise from audio in real time by combining traditional signal processing with a small neural network. Designed to be embedded inside other audio software.

Mindmap

mindmap
  root((RNNoise))
    What It Does
      Noise removal
      Real-time audio
      Speech cleanup
    Tech Stack
      C library
      Python training
      Neural network
    Use Cases
      Voice calls
      Audio recording
      C audio pipeline
    Setup
      Format conversion
      Custom training
      Embed in software
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Embed noise suppression into a voice or video calling app to remove keyboard clicks and ambient sound

USE CASE 2

Use the command-line demo to clean up a noisy audio recording before further processing

USE CASE 3

Train a custom noise suppression model on your own speech and noise data for a specialized audio environment

USE CASE 4

Integrate real-time noise cancellation into a C or C++ audio pipeline on embedded or server hardware

Tech stack

CPython

Getting it running

Difficulty · hard Time to first run · 1h+

Expects raw 16-bit mono PCM at 48kHz, requires audio format conversion before use, custom model training needs Python and large speech and noise audio datasets.

In plain English

RNNoise is a software library that removes background noise from audio in real time. If you have ever been on a call where keyboard clicks, room echo, or ambient sound leaked through, noise suppression is the process that cleans that up. RNNoise does this by combining traditional audio signal processing with a small neural network, which is a type of machine learning model trained on examples of speech and noise. The library is written in C and is meant to be embedded inside other audio software. A command-line demo tool is included so you can test it directly: you feed it a raw audio file with noise and it outputs a cleaned version. The format it expects is 16-bit mono audio sampled at 48 kHz, in raw PCM format rather than the more common WAV format, which is something to be aware of if you try to use it. For people who want to train their own noise suppression model rather than use the default one, the README walks through the full process. You need two sets of audio data: clean speech recordings and noise recordings. The training code mixes them together to simulate real-world conditions, extracts features, then runs the model training with Python. The result is a set of model weight files that you convert back into C source files and build into the library. The README notes that exact results vary depending on how much data you use and how long training runs. The project comes from Xiph.Org, an open-source multimedia organization. The primary source repository is hosted on their own GitLab server, the GitHub copy is provided for convenience. An interactive online demo of an earlier version is available on the author's website if you want to hear the effect without building anything.

Copy-paste prompts

Prompt 1
I have a raw 16-bit mono 48kHz PCM audio file with background noise. Show me the rnnoise command-line steps to produce a cleaned version.
Prompt 2
How do I convert a standard WAV file to the raw PCM format rnnoise expects using ffmpeg, and then convert the cleaned output back to WAV?
Prompt 3
Walk me through the rnnoise model training process: what audio data do I need, how do I mix speech and noise, and how do I convert trained weights back into C source files?
Prompt 4
Show me how to integrate the rnnoise C library into an audio processing loop in C, how do I initialize it and call it frame by frame?
Open on GitHub → Explain another repo

← xiph on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.