Page 1 of 2

Noise Removal

PostPosted: Tue Jul 31, 2018 10:34 pm
by martinvicanek
Those of us who grew up before the digital revolution remember tape or cassette recorders. Home recording in the pre DAW era consisted in bouncing tracks while playing along adding stuff. The result was, by todays standards, of a totally inacceptable quality. Each bounce added noise and degraded the payload. I have some such historical recordings with a terrible SNR, and I was curious to try to rescue what was possible. My attempts were not very successful.

Thre tricky part of NR is not to add color to the residual noise. I have been experimenting a lot and finally got something I consider useful. The architecture is similar to a vocoder, where the same audio is supplied to both the carrier and the modulator. Each frame is analyzed and a filter is constructedwhic keeps the strong spectral components and discards the rest.

Have fun.

Re: Noise Removal

PostPosted: Tue Jul 31, 2018 11:06 pm
by tulamide
Hi Martin,

as so often, I'm probably just too stupid to handle the fsm correctly, so bear with me!

I loaded the fsm, loaded one of the many cassette-recordings I have from my early days (too embarrassing to be made public), that I never could rescue satisfyingly. But to my surprise, there's no change in the audio I hear. At one point I even relinked directly to the Amp (to compare the original versus the noise remover), and indeed there is no difference at all.

How am I supposed to use the schematic (for example, I was used to fingerprinting parts of the noise section, which isn't present here)? I'm pretty sure it's something I forget to do.

Re: Noise Removal

PostPosted: Tue Jul 31, 2018 11:33 pm
by martinvicanek
Ouch! My stupid mistake! Where is this palmface icon? :oops:
Thanks for reporting, Tula, corrected in the original post.

Re: Noise Removal

PostPosted: Wed Aug 01, 2018 12:56 am
by tulamide
Oh wow!

A one-knob real-time noise removal tool without fingerprinting or any of the hassle, other tools have. It's working reliable on different noise sources and strengths and is very effective. The typical issue of losing hi-freq content is due to the nature of noise, and even a wizard like you can't prevent that. I am instantly convinced of this tool. I could get rid of even very severe noise ratios already at -90 to -70 dB, and the resulting sound is at least as good as my attempts of working for half an hour in wavosaur/audacity. Which reminds me to setup wavosaur's VST support to load your remover!

Awesome tool! Thanks for sharing! :ugeek:

Re: Noise Removal

PostPosted: Fri Aug 03, 2018 9:14 am
by adamszabo
Wow very cool Martin, I just tried it and it works great!

Re: Noise Removal

PostPosted: Fri Aug 03, 2018 12:19 pm
by Spogg
I really want to try this because I’m sure it’s excellent.

But I don’t have a suitable recording, so if anyone can supply or link to one I’d be most grateful. It doesn’t seem a fair test to create one by just adding noise to something. All I find on Google is noise reduction software and tutorials.

Cheers

Spogg

Re: Noise Removal

PostPosted: Fri Aug 03, 2018 8:16 pm
by tulamide
Spogg wrote:I really want to try this because I’m sure it’s excellent.

But I don’t have a suitable recording, so if anyone can supply or link to one I’d be most grateful. It doesn’t seem a fair test to create one by just adding noise to something. All I find on Google is noise reduction software and tutorials.

Cheers

Spogg

Whatever you're looking for, you'll find it on the wonderful freesound.org. You just need an account (and maybe contribute sounds yourself, but that's not needed, just a reminder from myself) to download files. For this specific task I recommend this soundfile:
https://freesound.org/people/NoiseCollector/sounds/46423/

Happy noise removal! :lol:

EDIT: But you can't really enjoy the elegant efficiency of this tool, if you don't try to reach the same result with tools from audio editors.

Re: Noise Removal

PostPosted: Sat Aug 04, 2018 10:31 am
by martinvicanek
Thanks for the feedback, guys. Spoggs observation indicates that perhaps I should publish this in the music archeology forum? :twisted:
Anyway, while the tool makes a decent job regrading noise suppression, it does smear out transients. A shorter FFT improves on transients at the cost of noise removal quality. I am trying to improve the one without sacrificing the other.
For the inclined reader: The current approach uses a linear phase filter. My plan is to convert that into a minimum phase filter. That way it should retain the spectral characteristics but with a tighter impulse response.

Re: Noise Removal

PostPosted: Sat Aug 04, 2018 6:58 pm
by KG_is_back
Transient smearing is a common problem with FFT-based filters of all kinds. I have several possible solutions:
1. use wider vertical smoothing - average neighbouring bins to reduce the steepness of the filters.
2. use transient detector to detect peaks and either
a) blend in original audio right around the peaks or
b) lower the threshold or soften the knee or
c) automate smoothing as described in 1.
3. Instead of only calculating absolute value of the voice frequency bins (which effectively creates zero/linear-phase filter, which is ambiguously non-causal) also add some phase-shift to ensure the filter is minimum phase / more causal. That would remove pre-ringing on transients into post-ringing. I'm not sure how this could be done though.

Re: Noise Removal

PostPosted: Sun Aug 05, 2018 10:07 am
by martinvicanek
Thanks, KG, all valid comments.
1. is equivalent to shorter FFTs. It does help the transients, but it worsens the NR.
2. is interesting but it would have to be done for each bin separately. Not sure what the overall result would be.
3. was my original plan. I succeeded in converting to min phase following JOS https://ccrma.stanford.edu/~jos/filters ... html#19463, however it turned out not to be such a good idea because consecutive frames are no lnger seamless after filtering (as is the case with lin phase).

Anyway, what I did was design a carefully synchronized overlap-add scheme with linear phase filtering and that improved the transients by a factor of two. So I am quite happy with the result now (version 2 at the beginning of this thread).