Thread: [Audacity-devel] Patch: new "Noise Coring" filter
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Jérôme M. B. <jeb...@fr...> - 2011-09-17 20:43:32
Attachments:
signature.asc
|
Hi, I have written a patch which adds a "Noise Coring" filter. This filter is able to remove white noise from a signal through the application of a coring function. The main differences with the existing "Noise Removal" filter are: - There is no need to select a noise sample for analysis before applying the filter. In theory, this means that the existing "Noise Removal" should be able to give better results when a good noise sample can be found, but that the "Noise Coring" filter should give better results when the noise changes or when you cannot find a time with pure noise and no signal; - It works :) The main reason I wrote this patch is because I could not get the "Noise Removal" filter to work: either it did not remove anything, or else it removed the signal along with the noise. A quick google search also turned up this thread: http://forum.audacityteam.org/viewtopic.php?f=28&t=39529 discussing some issues with it. "Noise Removal" has the potential to be great, but it is also a lot more complicated under the hood than "Noise Coring" and therefore a lot harder to get right. The parameters should be pretty self-explanatory, but here is a quick explanation: - Noise threshold: The estimated amount of noise in the signal; - Noise reduction: Reduction to apply on the noise. Any frequency whose power is equal to the threshold will be attenuated by this amount. Frequencies with lower power will be attenuated more and frequencies with higher power will be attenuated less. Frequencies with much higher power will not be attenuated at all; - Filter length: Same as the "Equalization" filter (the "Noise Coring" code is based on the "Equalization" code with a computed adaptive envelope). Note that the first two parameters are combined internally to generate a single "strength" value which is used by the filter. Therefore, different combinations of strength and reduction may give the same result. The reason I went for the two parameters is that it is easier IMO to choose a threshold and reduction than an obscure "strength" which is hard to derive from the original signal. The source for the patch can be found here: https://bitbucket.org/jmb/audacity-patches/src Jerome -- mailto:jeb...@fr... http://jeberger.free.fr Jabber: jeb...@ja... |
From: Steve t. F. <ste...@gm...> - 2011-09-18 10:05:02
|
Hi There's also a page started on the Audacity wiki about Noise Removal: http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal Steve 2011/9/17 "Jérôme M. Berger" <jeb...@fr...>: > Hi, > > I have written a patch which adds a "Noise Coring" filter. This > filter is able to remove white noise from a signal through the > application of a coring function. The main differences with the > existing "Noise Removal" filter are: > > - There is no need to select a noise sample for analysis before > applying the filter. In theory, this means that the existing "Noise > Removal" should be able to give better results when a good noise > sample can be found, but that the "Noise Coring" filter should give > better results when the noise changes or when you cannot find a time > with pure noise and no signal; > > - It works :) The main reason I wrote this patch is because I could > not get the "Noise Removal" filter to work: either it did not remove > anything, or else it removed the signal along with the noise. A > quick google search also turned up this thread: > http://forum.audacityteam.org/viewtopic.php?f=28&t=39529 discussing > some issues with it. "Noise Removal" has the potential to be great, > but it is also a lot more complicated under the hood than "Noise > Coring" and therefore a lot harder to get right. > > The parameters should be pretty self-explanatory, but here is a > quick explanation: > - Noise threshold: The estimated amount of noise in the signal; > - Noise reduction: Reduction to apply on the noise. Any frequency > whose power is equal to the threshold will be attenuated by this > amount. Frequencies with lower power will be attenuated more and > frequencies with higher power will be attenuated less. Frequencies > with much higher power will not be attenuated at all; > - Filter length: Same as the "Equalization" filter (the "Noise > Coring" code is based on the "Equalization" code with a computed > adaptive envelope). > > Note that the first two parameters are combined internally to > generate a single "strength" value which is used by the filter. > Therefore, different combinations of strength and reduction may give > the same result. The reason I went for the two parameters is that it > is easier IMO to choose a threshold and reduction than an obscure > "strength" which is hard to derive from the original signal. > > The source for the patch can be found here: > https://bitbucket.org/jmb/audacity-patches/src > > Jerome > -- > mailto:jeb...@fr... > http://jeberger.free.fr > Jabber: jeb...@ja... > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > http://p.sf.net/sfu/rim-devcon-copy2 > _______________________________________________ > audacity-devel mailing list > aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel > > |
From: Jérôme M. B. <jeb...@fr...> - 2011-09-18 13:53:58
Attachments:
signature.asc
|
Thanks, I had not seen that page. My aim was not to get the best noise removal filter ever, simply to get a filter that is "good enough" now (it only took one day to write it because I needed it for a recording I have just made). That being said, more tests have shown that assuming white noise is a pretty big limitation, so I have added an additional "Shape" parameter to specify the noise shape in dB/decade. Typical shapes will be 0 for white noise, 10 for pink and 20 for brown, but other values will work. Note that when using a non-zero shape, the threshold will vary with the frequency. In that case, the threshold parameter corresponds to a frequency of 440Hz. Jerome Steve the Fiddle wrote: > Hi > > There's also a page started on the Audacity wiki about Noise Removal: > http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal > > Steve > > 2011/9/17 "Jérôme M. Berger" <jeb...@fr...>: >> Hi, >> >> I have written a patch which adds a "Noise Coring" filter. This >> filter is able to remove white noise from a signal through the >> application of a coring function. The main differences with the >> existing "Noise Removal" filter are: >> >> - There is no need to select a noise sample for analysis before >> applying the filter. In theory, this means that the existing "Noise >> Removal" should be able to give better results when a good noise >> sample can be found, but that the "Noise Coring" filter should give >> better results when the noise changes or when you cannot find a time >> with pure noise and no signal; >> >> - It works :) The main reason I wrote this patch is because I could >> not get the "Noise Removal" filter to work: either it did not remove >> anything, or else it removed the signal along with the noise. A >> quick google search also turned up this thread: >> http://forum.audacityteam.org/viewtopic.php?f=28&t=39529 discussing >> some issues with it. "Noise Removal" has the potential to be great, >> but it is also a lot more complicated under the hood than "Noise >> Coring" and therefore a lot harder to get right. >> >> The parameters should be pretty self-explanatory, but here is a >> quick explanation: >> - Noise threshold: The estimated amount of noise in the signal; >> - Noise reduction: Reduction to apply on the noise. Any frequency >> whose power is equal to the threshold will be attenuated by this >> amount. Frequencies with lower power will be attenuated more and >> frequencies with higher power will be attenuated less. Frequencies >> with much higher power will not be attenuated at all; >> - Filter length: Same as the "Equalization" filter (the "Noise >> Coring" code is based on the "Equalization" code with a computed >> adaptive envelope). >> >> Note that the first two parameters are combined internally to >> generate a single "strength" value which is used by the filter. >> Therefore, different combinations of strength and reduction may give >> the same result. The reason I went for the two parameters is that it >> is easier IMO to choose a threshold and reduction than an obscure >> "strength" which is hard to derive from the original signal. >> >> The source for the patch can be found here: >> https://bitbucket.org/jmb/audacity-patches/src >> -- mailto:jeb...@fr... http://jeberger.free.fr Jabber: jeb...@ja... |
From: Vaughan J. <va...@au...> - 2011-09-19 21:18:42
|
Jerome, I hate to be the bearer of bad news, but Audacity is in a feature freeze until we are able to fix the remaining priority 2 bugs and release the 2.0 version. I haven't looked closely at the code, but have you considered doing it as a plugin (http://audacity.sourceforge.net/download/plugins) instead of built in? Thanks for your contribution! - Vaughan On 9/18/2011 6:53 AM, "Jérôme M. Berger" wrote: > Thanks, I had not seen that page. My aim was not to get the best > noise removal filter ever, simply to get a filter that is "good > enough" now (it only took one day to write it because I needed it > for a recording I have just made). > > That being said, more tests have shown that assuming white noise is > a pretty big limitation, so I have added an additional "Shape" > parameter to specify the noise shape in dB/decade. Typical shapes > will be 0 for white noise, 10 for pink and 20 for brown, but other > values will work. Note that when using a non-zero shape, the > threshold will vary with the frequency. In that case, the threshold > parameter corresponds to a frequency of 440Hz. > > Jerome > > Steve the Fiddle wrote: >> Hi >> >> There's also a page started on the Audacity wiki about Noise Removal: >> http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal >> >> Steve >> >> 2011/9/17 "Jérôme M. Berger" <jeb...@fr...>: >>> Hi, >>> >>> I have written a patch which adds a "Noise Coring" filter. This >>> filter is able to remove white noise from a signal through the >>> application of a coring function. The main differences with the >>> existing "Noise Removal" filter are: >>> >>> - There is no need to select a noise sample for analysis before >>> applying the filter. In theory, this means that the existing "Noise >>> Removal" should be able to give better results when a good noise >>> sample can be found, but that the "Noise Coring" filter should give >>> better results when the noise changes or when you cannot find a time >>> with pure noise and no signal; >>> >>> - It works :) The main reason I wrote this patch is because I could >>> not get the "Noise Removal" filter to work: either it did not remove >>> anything, or else it removed the signal along with the noise. A >>> quick google search also turned up this thread: >>> http://forum.audacityteam.org/viewtopic.php?f=28&t=39529 discussing >>> some issues with it. "Noise Removal" has the potential to be great, >>> but it is also a lot more complicated under the hood than "Noise >>> Coring" and therefore a lot harder to get right. >>> >>> The parameters should be pretty self-explanatory, but here is a >>> quick explanation: >>> - Noise threshold: The estimated amount of noise in the signal; >>> - Noise reduction: Reduction to apply on the noise. Any frequency >>> whose power is equal to the threshold will be attenuated by this >>> amount. Frequencies with lower power will be attenuated more and >>> frequencies with higher power will be attenuated less. Frequencies >>> with much higher power will not be attenuated at all; >>> - Filter length: Same as the "Equalization" filter (the "Noise >>> Coring" code is based on the "Equalization" code with a computed >>> adaptive envelope). >>> >>> Note that the first two parameters are combined internally to >>> generate a single "strength" value which is used by the filter. >>> Therefore, different combinations of strength and reduction may give >>> the same result. The reason I went for the two parameters is that it >>> is easier IMO to choose a threshold and reduction than an obscure >>> "strength" which is hard to derive from the original signal. >>> >>> The source for the patch can be found here: >>> https://bitbucket.org/jmb/audacity-patches/src >>> > > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > http://p.sf.net/sfu/rim-devcon-copy2 > > > > _______________________________________________ > audacity-devel mailing list > aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel |
From: Jérôme M. B. <jeb...@fr...> - 2011-09-21 18:09:16
Attachments:
signature.asc
|
Vaughan Johnson wrote: > Jerome, I hate to be the bearer of bad news, but Audacity is in a > feature freeze until we are able to fix the remaining priority 2 bugs > and release the 2.0 version. > > I haven't looked closely at the code, but have you considered doing it > as a plugin (http://audacity.sourceforge.net/download/plugins) instead > of built in? > Hi, Like Steve said in another mail, there is no hurry (especially since there are still some issues that need fixing). It's perfectly ok if the patch only makes it into version 2.1. Jerome -- mailto:jeb...@fr... http://jeberger.free.fr Jabber: jeb...@ja... |
From: Vaughan J. <va...@au...> - 2011-09-21 22:50:03
|
Great. Thanks. - V On 9/21/2011 11:09 AM, "Jérôme M. Berger" wrote: > Vaughan Johnson wrote: >> Jerome, I hate to be the bearer of bad news, but Audacity is in a >> feature freeze until we are able to fix the remaining priority 2 bugs >> and release the 2.0 version. >> >> I haven't looked closely at the code, but have you considered doing it >> as a plugin (http://audacity.sourceforge.net/download/plugins) instead >> of built in? >> > Hi, > > Like Steve said in another mail, there is no hurry (especially > since there are still some issues that need fixing). It's perfectly > ok if the patch only makes it into version 2.1. > > Jerome > > |
From: Jérôme M. B. <jeb...@fr...> - 2011-11-06 11:57:25
Attachments:
signature.asc
|
Steve the Fiddle wrote: > Just another note about the "pre-echo" that I mentioned: it seems to > be some sort of "ringing" of the frequencies that are present in the > audio signal and it extends before and after the actual sound. If you > generate a short sine tone, then mix it with a noise track and apply > the effect, you will see that the frequency of the tone extends (at a > lower level) both before and after the original tone. > > Steve > > 2011/10/9 Steve the Fiddle <ste...@gm...>: >> Congratulations. No sign of the previous glitches. Also I notice that >> it processes correctly right up to the end of the selection and the >> problem with large filter lengths appears to be resolved. >> >> When dealing with high noise levels, although the bubbly artefacts >> that occur with Audacity's "Noise Removal" effect do not occur, there >> is a distinct pre-echo (about 150 ms ahead of the true sound). Is this >> an inevitable feature of the Noise Coring technique, or could this be >> improved? >> >> Steve >> Hi, I have uploaded a new version of the patch [1] with the following changes: - The glitch near the end of the signal is now fixed; - The "Preview" button works; - I have added explanatory tooltips to the settings dialog (for some reason, the tooltip for the "Minimum window size" option does not appear, someone who knows more than me about wxWidgets would have to look at it to find out why); - Settings are saved and restored properly (I origingaly copy/pasted this code from different sources, which means that they used to be saved under "CsPresets" and loaded from Effects/EffectNoiseCoring"); - I have added a new "Minimum window size" option (see below). Regarding the "pre-echo" or "ringing" you mention, it is an unavoidable side effect of the noise coring method: the method analyzes a block of data and creates a filter appropriate for this block, if the block is long enough to contain both some silence (i.e. pure noise) and some signal, then the noise will not be fully filtered in the silent part (it will not be filtered in the signal part either, but the signal will mask it there anyway). The new "Minimum window size" option can improve the results somewhat at the cost of some processing speed. Note however that depending on the filter length, the effect may need to increase the window size above the specified minimum (for example with the default filter length of 2000, the window size cannot be smaller than 8192). Jerome [1] https://bitbucket.org/jmb/audacity-patches/src/tip/noise-coring.patch -- mailto:jeb...@fr... http://jeberger.free.fr Jabber: jeb...@ja... |
From: Steve t. F. <ste...@gm...> - 2011-09-20 18:20:04
|
I've tested this patch and the effect is really interesting. It is able to deal effectively with certain types of noise problem that the current Noise Removal effect has real trouble with. Unfortunately there's a problem that the current version will sometimes create small glitches in the audio (I've spoken to Jerome off-list about this issue). Although Audacity is currently in feature freeze, there's only two remaining P2, which although I'm aware that they are stubbornly refusing to be fixed, must eventually succumb, leaving the way open for 2.0. It may be worth considering (post 2.0) including this algorithm in Audacity's Noise Removal effect. I'll add a brief summary about this patch to the wiki "Noise Removal Proposal" page, so that there's a record of it that may be referred to later. http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal Steve On Mon, Sep 19, 2011 at 10:21 PM, Vaughan Johnson <va...@au...> wrote: > Jerome, I hate to be the bearer of bad news, but Audacity is in a > feature freeze until we are able to fix the remaining priority 2 bugs > and release the 2.0 version. > > I haven't looked closely at the code, but have you considered doing it > as a plugin (http://audacity.sourceforge.net/download/plugins) instead > of built in? > > Thanks for your contribution! > > - Vaughan > > > > > On 9/18/2011 6:53 AM, "Jérôme M. Berger" wrote: >> Thanks, I had not seen that page. My aim was not to get the best >> noise removal filter ever, simply to get a filter that is "good >> enough" now (it only took one day to write it because I needed it >> for a recording I have just made). >> >> That being said, more tests have shown that assuming white noise is >> a pretty big limitation, so I have added an additional "Shape" >> parameter to specify the noise shape in dB/decade. Typical shapes >> will be 0 for white noise, 10 for pink and 20 for brown, but other >> values will work. Note that when using a non-zero shape, the >> threshold will vary with the frequency. In that case, the threshold >> parameter corresponds to a frequency of 440Hz. >> >> Jerome >> >> Steve the Fiddle wrote: >>> Hi >>> >>> There's also a page started on the Audacity wiki about Noise Removal: >>> http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal >>> >>> Steve >>> >>> 2011/9/17 "Jérôme M. Berger" <jeb...@fr...>: >>>> Hi, >>>> >>>> I have written a patch which adds a "Noise Coring" filter. This >>>> filter is able to remove white noise from a signal through the >>>> application of a coring function. The main differences with the >>>> existing "Noise Removal" filter are: >>>> >>>> - There is no need to select a noise sample for analysis before >>>> applying the filter. In theory, this means that the existing "Noise >>>> Removal" should be able to give better results when a good noise >>>> sample can be found, but that the "Noise Coring" filter should give >>>> better results when the noise changes or when you cannot find a time >>>> with pure noise and no signal; >>>> >>>> - It works :) The main reason I wrote this patch is because I could >>>> not get the "Noise Removal" filter to work: either it did not remove >>>> anything, or else it removed the signal along with the noise. A >>>> quick google search also turned up this thread: >>>> http://forum.audacityteam.org/viewtopic.php?f=28&t=39529 discussing >>>> some issues with it. "Noise Removal" has the potential to be great, >>>> but it is also a lot more complicated under the hood than "Noise >>>> Coring" and therefore a lot harder to get right. >>>> >>>> The parameters should be pretty self-explanatory, but here is a >>>> quick explanation: >>>> - Noise threshold: The estimated amount of noise in the signal; >>>> - Noise reduction: Reduction to apply on the noise. Any frequency >>>> whose power is equal to the threshold will be attenuated by this >>>> amount. Frequencies with lower power will be attenuated more and >>>> frequencies with higher power will be attenuated less. Frequencies >>>> with much higher power will not be attenuated at all; >>>> - Filter length: Same as the "Equalization" filter (the "Noise >>>> Coring" code is based on the "Equalization" code with a computed >>>> adaptive envelope). >>>> >>>> Note that the first two parameters are combined internally to >>>> generate a single "strength" value which is used by the filter. >>>> Therefore, different combinations of strength and reduction may give >>>> the same result. The reason I went for the two parameters is that it >>>> is easier IMO to choose a threshold and reduction than an obscure >>>> "strength" which is hard to derive from the original signal. >>>> >>>> The source for the patch can be found here: >>>> https://bitbucket.org/jmb/audacity-patches/src >>>> >> >> >> >> ------------------------------------------------------------------------------ |
From: Vaughan J. <va...@au...> - 2011-09-20 20:40:54
|
Thanks, Steve! On 9/20/2011 11:19 AM, Steve the Fiddle wrote: > I've tested this patch and the effect is really interesting. > It is able to deal effectively with certain types of noise problem > that the current Noise Removal effect has real trouble with. > > Unfortunately there's a problem that the current version will > sometimes create small glitches in the audio (I've spoken to Jerome > off-list about this issue). > > Although Audacity is currently in feature freeze, there's only two > remaining P2, which although I'm aware that they are stubbornly > refusing to be fixed, must eventually succumb, leaving the way open > for 2.0. > > It may be worth considering (post 2.0) including this algorithm in > Audacity's Noise Removal effect. > > I'll add a brief summary about this patch to the wiki "Noise Removal > Proposal" page, so that there's a record of it that may be referred to > later. > http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal > > Steve > > On Mon, Sep 19, 2011 at 10:21 PM, Vaughan Johnson > <va...@au...> wrote: >> Jerome, I hate to be the bearer of bad news, but Audacity is in a >> feature freeze until we are able to fix the remaining priority 2 bugs >> and release the 2.0 version. >> >> I haven't looked closely at the code, but have you considered doing it >> as a plugin (http://audacity.sourceforge.net/download/plugins) instead >> of built in? >> >> Thanks for your contribution! >> >> - Vaughan >> >> >> >> >> On 9/18/2011 6:53 AM, "Jérôme M. Berger" wrote: >>> Thanks, I had not seen that page. My aim was not to get the best >>> noise removal filter ever, simply to get a filter that is "good >>> enough" now (it only took one day to write it because I needed it >>> for a recording I have just made). >>> >>> That being said, more tests have shown that assuming white noise is >>> a pretty big limitation, so I have added an additional "Shape" >>> parameter to specify the noise shape in dB/decade. Typical shapes >>> will be 0 for white noise, 10 for pink and 20 for brown, but other >>> values will work. Note that when using a non-zero shape, the >>> threshold will vary with the frequency. In that case, the threshold >>> parameter corresponds to a frequency of 440Hz. >>> >>> Jerome >>> >>> Steve the Fiddle wrote: >>>> Hi >>>> >>>> There's also a page started on the Audacity wiki about Noise Removal: >>>> http://wiki.audacityteam.org/wiki/Proposal_Noise_Removal >>>> >>>> Steve >>>> >>>> 2011/9/17 "Jérôme M. Berger" <jeb...@fr...>: >>>>> Hi, >>>>> >>>>> I have written a patch which adds a "Noise Coring" filter. This >>>>> filter is able to remove white noise from a signal through the >>>>> application of a coring function. The main differences with the >>>>> existing "Noise Removal" filter are: >>>>> >>>>> - There is no need to select a noise sample for analysis before >>>>> applying the filter. In theory, this means that the existing "Noise >>>>> Removal" should be able to give better results when a good noise >>>>> sample can be found, but that the "Noise Coring" filter should give >>>>> better results when the noise changes or when you cannot find a time >>>>> with pure noise and no signal; >>>>> >>>>> - It works :) The main reason I wrote this patch is because I could >>>>> not get the "Noise Removal" filter to work: either it did not remove >>>>> anything, or else it removed the signal along with the noise. A >>>>> quick google search also turned up this thread: >>>>> http://forum.audacityteam.org/viewtopic.php?f=28&t=39529 discussing >>>>> some issues with it. "Noise Removal" has the potential to be great, >>>>> but it is also a lot more complicated under the hood than "Noise >>>>> Coring" and therefore a lot harder to get right. >>>>> >>>>> The parameters should be pretty self-explanatory, but here is a >>>>> quick explanation: >>>>> - Noise threshold: The estimated amount of noise in the signal; >>>>> - Noise reduction: Reduction to apply on the noise. Any frequency >>>>> whose power is equal to the threshold will be attenuated by this >>>>> amount. Frequencies with lower power will be attenuated more and >>>>> frequencies with higher power will be attenuated less. Frequencies >>>>> with much higher power will not be attenuated at all; >>>>> - Filter length: Same as the "Equalization" filter (the "Noise >>>>> Coring" code is based on the "Equalization" code with a computed >>>>> adaptive envelope). >>>>> >>>>> Note that the first two parameters are combined internally to >>>>> generate a single "strength" value which is used by the filter. >>>>> Therefore, different combinations of strength and reduction may give >>>>> the same result. The reason I went for the two parameters is that it >>>>> is easier IMO to choose a threshold and reduction than an obscure >>>>> "strength" which is hard to derive from the original signal. >>>>> >>>>> The source for the patch can be found here: >>>>> https://bitbucket.org/jmb/audacity-patches/src >>>>> >>> >>> >>> >>> ------------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > audacity-devel mailing list > aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel > |