jmvalin: (Default)
[personal profile] jmvalin

This demo presents the RNNoise project, showing how deep learning can be applied to noise suppression. The main idea is to combine classic signal processing with deep learning to create a real-time noise suppression algorithm that's small and fast. No expensive GPUs required — it runs easily on a Raspberry Pi. The result is much simpler (easier to tune) and sounds better than traditional noise suppression systems (been there!).

Read More

Possible alternative uses for this algorithm ?

Date: 2017-09-29 07:49 am (UTC)
From: (Anonymous)
Long time ago I used to make amateur remixes, and one tricky part was to isolate vocals from the remixed track. To do that I was using the noise removal tool: select a part of the track without vocals, run a spectral analysis on it and then substract the result to the whole track. Most of the time the result was terribly mangled, but sometimes I got something usable.

Your demo got me thinking: if I want to remove something very specific from one track instead of learning a generalized filter, can I train this model with a smaller dataset, like a few seconds from that track?


Date: 2017-09-29 03:34 pm (UTC)
From: (Anonymous)
This is great, thanks for your work! Do you think this might be of use with non-audio data?

What about reducing noise in music?

Date: 2017-10-02 03:56 pm (UTC)
From: (Anonymous)
Do you think this approach would be helpful in reducing noise on old 78 rpm records? Because's Great 78 project has a large number of albums you could experiment with.

Date: 2017-10-03 01:36 pm (UTC)
From: (Anonymous)
Hi Jean Marc,

Impressive Work! Really nice results too. I've been working on a similar project but to be exclusively used with Ardour so it's an lv2 plugin ( I used ME method (Rangachari and Loizou) to estimate noise with it but this method seems to work miles better. Do you mind if I make an lv2 plugin out of your library?
Also did you evaluate using discrete wavelet transform instead of fft+bark scale? I've read in the past few works that get near zero latency with that architecture.
Thank you very much for this. It already taught me few things wasn't aware of.


Date: 2017-10-09 08:21 am (UTC)
From: (Anonymous)
Hi Jean Marc,
According to the audio samples you provided, it seems that the RNNoise has more residual noise than the speex. Do you think it will perform better with more noise samples for training?

Date: 2017-10-30 03:54 am (UTC)
From: (Anonymous)
Can I know how much data do you trained to achieve your demo performance

Possible Use Cases

Date: 2017-12-03 09:02 pm (UTC)
From: (Anonymous)
Great Work you are doing Jean Marc!
I was wondering if this could be applicable to active noise cancellation as well, with a real time algorithm say from a raspberry pi or maybe a hardware implementation on a fpga. Of course, this would have to be trained on a different training set; I was thinking the Aurora II? Could it be paired with another algorithm such as beamforming to also attenuate noise not from a specific relative location?

Sorry for the plethora of questions.

Real-time Algorithm

Date: 2017-12-05 02:48 pm (UTC)
From: (Anonymous)
Looking denoised output on spectogram feels so good, great work!

But how can we modify to make it real-time spectogram since you purposely delayed it by a few seconds?

Thank you sir.

Using RNNoise as VAD source / Way to improve VAD

Date: 2017-12-08 08:28 am (UTC)
From: (Anonymous)
First of all, thanks for great work.

Recently, I needed VAD on my application and found that RNNoise has VAD output. So I tried use VAD output of RNNoise.
I commented out code not related with VAD, and made prototype of the app. It works quite nicely despite its small calculation size. But on some audio samples, VAD fails.

I'm trying to improve VAD by adding feature size and neural net size.
Can you give me some hint to improve VAD quality?

Amateur Radio

Date: 2017-12-16 08:08 am (UTC)
From: (Anonymous)

In Amateur Radio noise suppression is always a big topic. I've added your project into a SDR receiver - if you're not into SDR see . Anyway it's working well when the audio is above the noise, when the noise and audio are both at the same level I can lose the audio.

This isn't a complaint - just an observation, your code isn't really designed for this situation. Now if only I could get you interested the Amateur Radio your skills would have a big impact on noise reduction.

Thanks for this project, I'll be following it closely.

Cutting out environmental noise

Date: 2018-01-11 08:47 am (UTC)
From: [personal profile] h3yfinn
Hey there, I'm trying to find a way of detecting any voice in a public(new zealand rural) area. This is so I can scrub private conversations from publicly record files and then analyse the remaining files for birdsong.
We have quite poor quality recordings so I thought your algorithm may be quite useful to remove background noise so we can more easily detect voice (which otherwise we cannot at all detect using a webrtcVAD algorithm). I'm just setting it up now. Thought I'd put this here in case you had any idea whether your algorithm would work like I hope.

Thanks a lot,

The Audio Player is awfully nice!

Date: 2018-02-16 04:34 pm (UTC)
From: (Anonymous)
The player, with the play line, and the babble/db/noise reduction on/off buttons, is nicely done.
slightly off topic but how did you do that?

Training Data

Date: 2018-03-12 02:14 pm (UTC)
From: (Anonymous)
Hi Jean Marc, I am a college student.You great job really impresses me.I want to recurrent your job to learn more.But when I check your open code, your raw data named 'denoise_data9.h5' was lacked .Can you share this data with me? My email address is Thank you very much.

Spectral non-stationarity metric

Date: 2018-06-20 11:22 am (UTC)
From: (Anonymous)
Hi, will you disclose the secret spectral non-stationarity metric mentioned on the xiph page?
From: (Anonymous)
Hi, my name is Herru, I’ve seen your web demo about RNN for Noise Removal, it’s awesome! After testing the live recording demo, I see that the noise removal is using Javascript. I would like to ask you about the permission to use the Javascript version of it on my project (which is non commercial project), since your link to the original code was made using C and under BSD license.

Input and output data dimensions

Date: 2018-11-08 01:20 pm (UTC)
From: (Anonymous)
Dear Jean-Marc,

Many thanks for publishing your exciting work and sharing your code.
I've two points which are not 100% clear to me after reading your documentations and code:

(1) Network training input and output data samples are finite sequences of 42- and 23-element vectors, respectively. But in the operation mode, the trained network is fed sequentially with a single input vector and outputs a single vector?

(2) Is the training data extracted from overlapping spectrogram segments?

Kind regards

Negative SNR cases

Date: 2019-01-24 05:44 am (UTC)
From: (Anonymous)
This application is working very well. But If I give -6dB/-3dB SNR case inputs, some part of speech is corrupted

Processing stereo input seems to work great

Date: 2019-02-28 05:08 pm (UTC)
From: (Anonymous)
Im working with automating the processing of stereo 48000 recording files to clean up noise.

Appears stereo is working fine. However processing just one channel did a slightly better job.

Do you know of any consultants that may be able to assist in our project. want to try to test this inserted realtime on the server and in client of webrtc app as a proof of concept.

Also trying to understand stereo AEC methods.


Date: 2019-03-01 05:53 am (UTC)
From: (Anonymous)
Hi Jean Marc,

Thanks for this great project. I'd like to train this suppression myself and have downloaded the github version, but I don't see any scripts or way of creating the noisy mixtures as you've described in your paper (with the random filtering, etc.). Are you willing to share the training scripts with us?



jmvalin: (Default)

April 2019

 1234 56

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 26th, 2019 04:19 am
Powered by Dreamwidth Studios