Voice and background noise
Hello,
I'm a new user and I think that SigmaDSPs are a very powerfull tool! I have choosen the ADAU1761 for making a good audio system into a race car. My application needs of amplifier the voice rejecting the very high background noise (130 dB measured!). I have used LPF with HPF or BPF 2nd/4nd/14nd order.. then I used the noise removal algorithm... but the noise is still too much high to output :-(
BTW, the microphone (with noise cancelling feature) works fine because into its output the speech signal is 15/20 dB major then background noise captured... How can I reject this noise into voice band?
Thanks
Audio Signal Processors
voice
noise
SigmaDSP Audio Processors
adau1761
Hello,
The noise removal algorithm in SigmaStudio only works when the background noise is quiet, compared to the signal of interest. So, I think it will not help in your application. Band limiting using LPF and HPF will help somewhat. I think it will also be useful to place the microphone as close to the person as possible, and make a noise gate and tune it so that the mic will disable when the person stops speaking ( http://ez.analog.com/message/7651#7651 ).
Unfortunately, engine noise is pretty broadband, so it's very difficult to deal with in the digital domain. I'm not sure if a DSP will be much more useful than filtering, noise gating, and perhaps some kind of compression.
Hello Racer,
You've got a neat application, and as Brett noted, a challenging one. Yep, engine noise is quite broadband, as shown below (I recorded my Ford Focus' engine at 4500 RPM):
Lopping off the stuff below and above the speech range (roughly 200 -- 4000 Hz) helps, yet there's a lot of noise within the speech range. Thus, again as Brett said, you'll accomplish only so much with filtering.
The good news here is that you do have a S/N of 15-20 dB going in, thanks to your wise use of a noise-cancelling mic. The ear is rather good at finding intelligible speech amid noise, as anyone who has listened to old-fashioned shortwave radio knows. To help with this task, many such radios featured an "automatic noise limiter" (ANL) to reduce static crashes and electrical buzz. These worked by limiting the audio's slew rate. A SigmaDSP circuit that performs this function is shown below:
The circuit begins with basic voice-band filtering, active in either position of the effect switch. Switching ON the latter adds the slew-rate limiter. This first differentiates the signal with a simple FIR filter -- the result is a measure of its rate of change (slew rate). A clipper sets the maximum allowable slew rate, then the lowpass filter acts as an integrator to reverse the differentiation. I tested this with my recording of engine noise mixed with my voice reading from the ADAU1701 data sheet (the resulting mix will never win a drama award!). The slew rate limiter's effect was rather subtle, but it did reduce an annoying whine in the engine noise while the speech remained intelligible. If nothing else, it shows how you can explore many possible ideas in SigmaDSP without ever warming up a soldering iron. Hope you find some good ideas as you research and experiment with your app.
Best regards,
Bob
Many Thanks Bob!
watching your noise graph, I can see a "low" level of noise, we are testing into a Peugeut 306 S2000, do you know?
Your slew rate limiter is similiar to a LPF, am I right?
Hi,
Thanks for your reply! Yes, the slew rate limiter does have a low-pass effect. Slew rate is proportional to both frequency and amplitude, so this circuit discriminates against high-amplitude, higher frequency sounds. Otherwise it's the same as a first-order lowpass, which rejects higher frequencies regardless of amplitude.
Since my previous post I've built and tried another approach which is more effective than the slew rate limiter. I hope to post that technique soon, when I have time available.
Best regards,
Bob
Hello once more,
If you're relatively new to DSP, check out this book -- The Scientist and Engineer's Guide to Digital Signal Processing, which its author and ADI made available as a download here:
http://www.analog.com/en/content/scientist_engineers_guide/fca.html
Most everything I know about DSP I learned from this book, from playing with SigmaDSP / SigmaStudio, from this forum, and of course from my cat.
Figure 22-10, bottom of page 369 shows typical voice and noise spectra while suggesting a way to help partially distinguish between them. While the noise is broadband, the speech concentrates at its fundamental pitch plus a series of harmonics. Below shows a typical voice spectrum:
You can see from this graph that, if we could spot narrow filters at the speech's peak frequencies, we reduce the broadband noise elsewhere. What makes this difficult, of course, is that the speech's peak frequencies move according to who's speaking and what they're saying, making some sort of adaptive design necessary. Most such techniques are beyond what SigmaDSP can do, but there is some room in which you can work.
Perhaps the easiest way to try out this scheme is to first split the voice band into segments perhaps 1/3 octave apart. Then,
Place a high-Q peaking filter at each frequency
Gate or expand each filter's output separately
Sum the resulting frequency bands back together
An example is shown below:
The envelope detector and multiplier at each frequency implement a simple 2:1 expansion -- so frequency bands at full level stay that way, but those perhaps 15dB down are dropped another 15dB. The hopeful result is that filters finding speech "open up", while the others stay closed.
While I tried this on a AD1940 eval board, it gave the engine noise a sort of science-fiction character, while the voice S/N improved by some noticeable amount.
I attached this project file for viewing, though you'll need to transcribe it to a -1761 project to run on your own hardware. There's many ways to implement the gating / expansion functions in SigmaStudio, allowing you to improve and experiment with this (or entirely different schemes) until you're happy with the results.
Best regards,
Bob
Hi Guys,
Not sure how relevant this could be but is there a way to invert the engine noise section so that it cancels almost like an out of phase situation?
Hi Bob,
interesting solution, adding peak filter .. the problem is capturing peak filter frequency now, everyone has different frequency and every word changes spectral image.
BTW, interesting idea and good link
No I'm trying with compressor, but the target is still far ..
Hi Bob,
Yeah thats exactly how i would approach this, a pair of mics and use the power of the DSP. Hopefully this helps Racer with his problem. Your wave form looks good and that MP3 is pretty impressive.
Graeme
Hi gr4eme,
Yes. phase cancellation can help when applied carefully. ADI has an adaptive beamforming algorithm available for the -1761 that works on this principle. It detects the phase differences between two mics about an inch apart to distinguish between a nearby in-phase voice and off-axis noise. The noise-cancelling mic that racer is using performs a similar function acoustically.
I tested a filter bank like that described above, but with (25) 1/6 octave bands. The photo below compares my speech + noise test waveform with the filter switched off, then on:
You can hear the difference in the attached .mp3 file.
Best regards,
Bob
Cool demo, Bob! I was surprised to hear you reading a SigmaDSP datasheet in your audio test!
Thanks, Brett. Just figured I had to keep everything on topic....
Bob
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.









