Automatic noise reduction

I am working on a project that requires noise reduction. On an audio bible that was recorded in the 50’s.

Aside from the hard clipping, I am able to excellent results and depending on the recording, near studio like quality.

This is done by remove 3-5 db taking new samples on wach pass.

I typically go through the a chapter at a time, selecting and copying pauses between speech into a new track.

I concactenate all the pauses into one long noise signature.

I then copy that, and on the copy compress it with a bery low noise floor and high compression. Sometimes more than once on a given time.

I take a sample of that and then remove noise from the audio recording with extremely low .0001 sensitivity, 0 frequency smoothing, and as I said 3-5 db at a time.

I ctrl R this on my noise signature sample, copy it again, and repeat.

I do this until I get no artifacts. Sometimes increasing frequency smoothing on the last couple of passes.

And to finish, I compress the main audio with -1 db threshold and -20db noise floor.

And if needed I apply a lax noise gate for good measure.

I get excellent results. Better than what I can produce with CC Audition.

These steps could be easily scripted and applied to the whole audio bible.

It would require some math to detect pauses between speech and some logistics to concactenate them all. But aside from that, the rest is easy.

I am not a programmer, so if this could be done I would be happy to give you the exact steps. That way a simple “background noise” plugin could be made to replicate all this hard work at the push of a button.

This would be very useful, because in 2017 some one attempted to restore the recordings, but all they did was some minor/sloppy noise removal and boosted the bass/eq. And it took him a yr, and it sounds like shit.

I did this for a few chapters, and it sounds very good, better than all the other versions in existence.

Lmk if someone is willing to take on a challenge like this.

  1. Duplicate the track
  2. Select the duplicate track
  3. “Sound Finder” to label the sounds Sound Finder - Audacity Manual
  4. Select the duplicate track and the label track
  5. Delete the labeled audio Edit Menu: Labeled Audio - Audacity Manual

Wow I didnt realize that was there. Apparently I can select the entire track, and label the noise, Delete all the labeled audio. And Audacity auto matically joins what is left. That would leave us with a good long noise signature.

Thanks. This is really great.

Actually you are doing the opposite. Sound Finder will label the audio that is louder than the noise (set the “silence” threshold just a little higher than the noise floor). When you delete the labeled audio, what is left is just the noise.

sorry I am relegated to my phone, so im typing in great brevity. But that is what i meant.

This is excellent. And I just downloaded Audacity 2.3 and I see the Macro options. This may be exactly what I need.

I thought so, but just checking :wink:

This is very exciting. I created a Macro that gets me a good, long, compressed, noise reduction profile. All in a track below the main track. All at the push of a button.

But I do not see a macro for capturing a new noise profile. I read the notice on but do not understand.

“If the Macro is applied to the current project, the current selection is used to create the Noise Profile. Therefore, other effect commands in the Macro will also only apply to that selection. If an export command is added, the entire file will be exported.”

Is there a way to force use a new noise profile before each pass of noise reduction?

I’ve not checked, but I would be surprised if Noise Reduction could be used in a practical way in a Macro (because of it being a 2 pass effect).

Yeah I do not think there is a macro command that would allow you to grab a new noise profile\signature.

The macro setup is still very powerful. Already I have cut down my work by two thirds at least so this is not a total loss.

But to make the macro menu immensely powerful, would be to make the following changes:

  1. Add a search bar to find the command you need.
  2. Add the ability to take a noise profile.
  3. Add the ability to copy\paste and or repeat macro steps. This is a big one. Because you could recursively run a noise reduction macro X times. Right now, if I wanted to do that, I would have to insert and order each step that many times in 1 macro. Unless there is something I am missing. At least being able to ctrl select the steps, copy, and then paste them again as later steps would save much time.

As for 2.30, I now realize why I stuck with the older version. (2.2 which does not have macros). And that is because you are able to manually enter in almost any value for the sensititivity level in the noise reduction, and other menus. This is super important. It is very hard to do noise reduction without getting those tinkly bell sounds without taking an amplified\compressed noise sample and removing it a little db at a time with extremely low sensitivity (like .0001 or .0001) these values work best. At least for this project.

I guess I have to use a portable version of 2.30 to do my macros, then copy and past that back into 2.2 to do the noise reduction. Oh well.

I agree that this could be improved, but there is a lot of other new stuff related to Macros in the 2.3.1 version of Audacity (due to be released around February).
I find it is easier to locate commands by resizing the Macro command screen to a much larger size (dependent on display size).

There are no plans to extend Macros beyond being a simple list of commands. The reason for this is that there are other, better ways to provide more complex command structures.

To provide “loops” or “conditional” steps in a macro would require some kind of simple programming language. Rather than inventing a new programming language just for macros, the next version of Audacity (and to some extent, the current version) can harness the power of “Nyquist”, which is a programming language that has been included in Audacity for many years.

The plan is to keep ordinary “Macros” as a simple list, so as to avoid making it more complicated than necessary for the majority of users. For those users that require more complexity, “Nyquist-Macros” are the way to go.

You can see a quick preview of what’s coming in 2.3.1 in the “alpha manual”:

(For even more power and flexibility, there is an experimental feature called “mod-script-pipe” that allows Audacity to be controlled by Python, but this is not quite ready for prime time

The Noise Reduction effect has been the same for quite a while now. The really old version was called “Noise Removal”. I don’t think there have been any changes to it since the name was changed to “Noise Reduction”. The latter version should work better than “Noise Removal” in all cases, as it is basically the same effect with a lot of bug fixes.

Thanks that is good to know. But I think 2.3 (and beyond) is a no go for me. Not being able to place .0001 or lower values as a sensitivity value is a show stopper.

the lowerst on the new version is .01

And with that you get tinkle bell sounds.

Coupling recursive macros with low .0001 sensitivity = high quality noise reduction, without the hours spent clicking on things.

The “smoothing” setting is to reduce tinkle bell sounds.

Which version of Audacity did you say you were using?

Sure, but you also loose a bit of vibrato\timber\resonance. I did a lot of tests with sound quality and always checked the residue before each pass. And invariably, whenever you add ANY amount of smoothing, it takes away from the main sound. I prefer to do many small passes, with .0001 sensitivity, 3-5db reduction and no smoothing. Then I am usually left with almost pristine audio. Seriously much better than I could ever manage to get using Audition or any other software.

My workstation here is at 2.1.3 and my other one is 2.2.x? I think its just 1 version shy of 2.3.x.

Both of them are capable of taking sub .01 values which seems to work best as I’ve said. But the latest version 2.3 can only take .01 and no less.

I am going to try my hand at .NET Going to connect to the named pipes and attempt to automate this by script on my older version.

Thanks for the quick assistance.

This is definitely true, and in my opinion it is an error in the Noise Reduction implementation. This problem was introduced when “Noise Removal” became “Noise Reduction”, though I don’t recall which version of Audacity that was.

Alright Steve,

I’ve done a ton of research the past 12 or so hours on this problem. And even looked into perhaps tying into Audacity with script, but its sadly, just not practical. Because even if I were to get started, there doesn’t seem to be any refernce to noise reduction in the script reference page.

So Im left with the option of a very high level mouse clicking macro type option. Will look into that, but will probably just go back to doing things by hand.

Audacity would benefit greatly from adding the ability to take new noise samples for reduction in the MACRO settings. AND allowing for .0001 and lower values for sensitivity. If that were made available, I could clean up hundreds of hours of recording with little effort.

You might want to take a look at Steve Davies’ DeNoise software:

It costs a little but IIRC you do get a 14-day free trial.

I used Brian’s excellent ClickRepair a LOT when I was transcribing my LPs - and it was a great app.

I experimented with his DeNoise (under free trial) when I had a couple of old blues albums that were obviously transcriptions of old 78s. DeNoise was certainly not as simple to use as ClickRepair - I found I had to tune the settings for each separate track - but with patience I did get some good results.


Do you have the macro available for detecting space in speech?
Im looking at trying to improve my workflow with noise reduction also, and thought that would be very handy to automatically setup spacing.

Also your method/steps for how you clean up audio would be interesting to see.

There’s a pair of effects:
Silence Finder: Silence Finder - Audacity Manual
Sound Finder: Sound Finder - Audacity Manual

Is there anyway to automate importing a wav file on a new track, using that as my noise profile, then running that over my audio, and removing the track…

Im look at the macros, but cant seem to find a way to do the “Get Noise Profile”

I do this by using an external scripting solution (I generally use AutoIT3 or AutoHotKey). My solution is based on always having Audacity a fixed size (so that the script knows where all the buttons and tracks are).