![]() |
![]() ![]() ![]() ![]() ![]()
|
next newest topic | next oldest topic |
Author | Topic: So THAT's how they do it! | |
David McClain Member |
![]() ![]() ![]()
I have been thinking all week about how to remove extreme amounts of noise from recordings and live shortwave radio reception. The difficulty was getting the spectral components of voice without unduly bending its spectrum. The autocorrelation filters failed in that regard because they multiply the incoming spectrum by itself. Hence, they overemphasize the bass and diminish the treble. It finally occurred to me this evening, that we want to suppress signal components at the level of noise and leave the spectral line components alone. One way to do that is to use a frequency selective expander. In this case 512 bands. Signal amplitudes below the threshold get increasingly attenuated the further they are from that threshold -- the opposite of gain compression. The sample has Kurt's Alien Threat buried in white noise (the toughest case to handle). When you try it, you will clearly hear Kurt speaking, but there is a lot of "granular" type gurgling. You can adjust the threshold and expansion ratio for maximum intelligibility. But then toggle the NR box and listen to what it sounds like without the noise reduction! Those gurgles are the peaks of the noise occaisionally poking up high enough to get amplified. The granular type sound occurs for the same reason that granular synthesis sounds the way it does... little grains of sound lasting for very short times. The duration of the grains here is 1/2 FFT interval, or about 5 ms with 1024 FFT cells. Now under more benign circumstances, like removing noise from tape and LP's the noise is already many dB below the signal, and this technique works wonderfully well. Simply adjust the threshold down into the signal level so that it get unaffected. Anything above threshold is given unity gain. The noise lying beneath the threshold gets its gain expanded downward so that it becomes weaker. If your noise background isn't white then simply make the threshold into a frequency dependent lookup table (waveshaper). I don't know for sure, but I'll bet this is how those noise removal programs work. Cheers! - DM IP: Logged | |
Frank Kruse Member |
![]() ![]() ![]() Hi David, man, youīre lightyear ahead of me in kyma programming and dsp-knowledge in general. iīm allways impressed about what you "squeeze" out of the capy i had to use the new DNS1000 denoiser made by cedar the other day. the fascinating difference to their stand-alone de-hissers and de-noisers is that you donīt get any digital sounding artifacts, no matter how radical your settings are. even removal of camera noise from dialogue is quite easy (a problem that was knows as unsolvable in the past). the machine has no latecy (around a few mikroseconds). frank. IP: Logged | |
David McClain Member |
![]() ![]() ![]()
Attached is the original plus an improvement for the situations with extreme noise like I am facing. While the original had the gurglies, this new one gets rid of most of those. It uses a little bit of incoherent autocorrelation on the incoming spectral magnitudes before going into the expander bank. Try it with Kurt's threat now -- sitting at 1:1 with the strong white noise background. There is a parameter !NInt that indicates the number of FFT subframes to smooth over using an exponential averager. The longer you make this the more it sounds like there is a slight echo. I keep it around 10 frames and the echo is not too bad. Remember that here I am concerned merely with understanding speech that is buried in the noise -- not hi fi reproduction. I don't know how this will behave on your noise removal projects. It might be a bit more robot voice like. I'm not sure what that term means, but I have seen others talk about that effect too. [Bear in mind, that if you have recordings then you get a chance to peek at the future and you should be able to do even better! Generally, if you have a sample of noise-only, then you should be able to improve this significantly by shaping the threshold to follow the noise spectral shape, and setting its values equal to the noise level at each frequency. I'm working blind about the future when I listen to the radio live. I don't even know what the noise spectral shape is... In that case this white noise assumption seems to handle most cases pretty well, and I adjust the threshold to above the signal level so all of it gets treated to some extent.] Cheers! - DM [This message has been edited by David McClain (edited 07 July 2001).] IP: Logged | |
David McClain Member |
![]() ![]() ![]() Hey! I just tried the noise removal (both of them) on that Schumann piano concerto recording that I was complaining about some time ago. [I built a stereo version just by copying the Sound twice, into a 2-channel output Sound.] It works better than the noise removal plugins that I had in my sound editing environment! Wow!! I don't know if this is how they do it, but this works incredibly well! Even without special threshold shaping! - DM [This message has been edited by David McClain (edited 07 July 2001).] IP: Logged | |
David McClain Member |
![]() ![]() ![]() Frank, I just checked on the Cedar DNS1000 denoiser... It looks like they are using dual SHARC DSP's. I am curious about how they can pull this off with only a handful of samples latency. That isn't even enough time to estimate frequencies. Does the Cedar take a little bit of time at startup to train itself? (Looking for hints that it might be an adaptive Widrow type LMS FIR system). Do you have to feed it some samples of noise alone? Were you saying above that the *Cedar* does a terrific job of noise removal? Or were you implying that my Kyma algorithm does a good job? Not sure how to read your statement... - DM [This message has been edited by David McClain (edited 07 July 2001).] IP: Logged | |
oivindi Member |
![]() ![]() ![]() Would it be possible to make a "lite" version of this intrigueing Sound? I tried running it on a Capybara-66, but ran out of static RAM...can anything be done? /oivind/ IP: Logged | |
David McClain Member |
![]() ![]() ![]() Hi Oivindi, It sounds like the FFT size is too large for your available memory. Try dropping the FFT size parameter in the rightmost sound which is a script. Cheers, - DM IP: Logged | |
Frank Kruse Member |
![]() ![]() ![]() david, the DNS1000 doesnīt need any training itīs is totally plug-and-play and has a complete analogue feel. i got rid of tremendeous amout of camera noise on speech. really cool device but quite pricey (about $6000) anfortunately i couldnīt try your new sound because my PC is all over my place in its parts, but i will as soon as i re-assembled it. cheers, frank. IP: Logged | |
mathis Member |
![]() ![]() ![]() i once had a customer for whom i made a restoration with sonic solutions nonoise. what you describe as "gurgling" he described as "bruendeln". so he said: "es bruendelt". this is not a german word at all (itīs a total artificial word), but itīs a really nice sounding word. (the "ue" is an umlaut on "u"). so like american english adapted so much nice german words like "kindergarten", "verboten" or "gesundheit", i really would appreciate to use this funky expression: "it bruendels". try it, it makes a lot of fun. (the umlaut "ue" is spoken somewhat brighter than the "u" in "furniture".) if you donīt have fun with it, just excuse my weird ideas of spreading some silly expressions all over the world ... just coming home from a 6 week trip to the states, [This message has been edited by mathis (edited 12 July 2001).] IP: Logged | |
David McClain Member |
![]() ![]() ![]() "bruendelt" (pl. bruendelen or bruendelten?) sounds good to me! It rhymes with brehmstrallung.... - DM IP: Logged | |
Frank Kruse Member |
![]() ![]() ![]() i call the artifacts DINR produces as "gurgeln". it means to gargle in english, i think. i think on dialogue it pretty much sounds like someone traying to speak while his mouth is full of water frank. IP: Logged | |
mathis Member |
![]() ![]() ![]() dear david, could you please post your sound again? i would love to try it out on my current project and lost it. thanks very much and happy bruendeling! IP: Logged | |
Dave Booth Member |
![]() ![]() ![]() Funny you should mention that... I've just started working on some old cassette tapes and was going to try out some of David's goodies myself. Admin, could you make them available again please? Dave IP: Logged | |
SSC Administrator |
![]() ![]() ![]()
IP: Logged | |
Bill Meadows Member |
![]() ![]() ![]() quote: Indeed. I believe this is how both DINR and Ionizer work. Ionizer also IP: Logged | |
Dave Booth Member |
![]() ![]() ![]() There are references to a couple of lookup wavetables in there which I don't seem to have on my system - log2_66db and alog2_66db. I see you were taking logs to make the calculations with the threshold and ratio controls easier, but could you give me a clue about the function of these wavetables? I've tried to replace the tables with log and exp calculations in a couple of Constants but the results are not very promising. Dave IP: Logged | |
SSC Administrator |
![]() ![]() ![]() Check David's upload called million band compressor for those tables. IP: Logged | |
mathis Member |
![]() ![]() ![]() good morning carla, it seems that david also deleted these files. (that was long before you extended file upload possibilities.) could you please also upload these wavetables? thank you!, IP: Logged | |
SSC Administrator |
![]() ![]() ![]()
IP: Logged | |
Dave Booth Member |
![]() ![]() ![]() Thanks very much for that. Dave IP: Logged | |
David McClain Member |
![]() ![]() ![]() quote:
Cheers, - DM IP: Logged | |
Bill Meadows Member |
![]() ![]() ![]() quote: When the correlation control is set to zero, all of the bands behave independently. (i.e.- "normally") As the control is increased, activity in one band will "spread out" to adjacent bands, causing them to open some, too. In a sense it is like having fewer bands, except that the IP: Logged |
All times are CT (US) | next newest topic | next oldest topic |
![]() ![]() |
This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.