ΣSigmaStudio Ask AI Русский Log in

Voice and background noise

SigmaDSP & SigmaStudio TheRacer May 10, 2013 00:00 12 replies Original on forum ↗
Subscribe
TheRacer Question
May 10, 2013 00:00

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

ADIApproved Reply
May 10, 2013 00:00

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.

KJBob Reply
May 12, 2013 00:00

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

b98b21199e9d6e051e0b7e30bf7cb10d.jpg
b98b21199e9d6e051e0b7e30bf7cb10d.jpg
b98b21199e9d6e051e0b7e30bf7cb10d.jpg-450x391.jpg
b98b21199e9d6e051e0b7e30bf7cb10d.jpg-450x391.jpg
fd3c0d50e11c961d3ea2136d12810c56.jpg
fd3c0d50e11c961d3ea2136d12810c56.jpg
fd3c0d50e11c961d3ea2136d12810c56.jpg-450x241.jpg
fd3c0d50e11c961d3ea2136d12810c56.jpg-450x241.jpg
TheRacer Reply
May 13, 2013 00:00

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?

KJBob Reply
May 13, 2013 00:00

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

KJBob Reply
May 13, 2013 00:00

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

adf2d9978a1b06f6a4a14e380df10c1b.jpg
adf2d9978a1b06f6a4a14e380df10c1b.jpg
adf2d9978a1b06f6a4a14e380df10c1b.jpg-450x323.jpg
adf2d9978a1b06f6a4a14e380df10c1b.jpg-450x323.jpg
8a3907c2cb36becd75a962b2c0816047.jpg
8a3907c2cb36becd75a962b2c0816047.jpg
8a3907c2cb36becd75a962b2c0816047.jpg-527x312.jpg
8a3907c2cb36becd75a962b2c0816047.jpg-527x312.jpg
gr4eme Reply
May 16, 2013 00:00

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?

TheRacer Reply
May 16, 2013 00:00

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 ..

gr4eme Reply
May 20, 2013 00:00

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

KJBob Reply
May 20, 2013 00:00

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

4046103a271aba1bc850a0c8d897b0e4.jpg
4046103a271aba1bc850a0c8d897b0e4.jpg
4046103a271aba1bc850a0c8d897b0e4.jpg-450x230.jpg
4046103a271aba1bc850a0c8d897b0e4.jpg-450x230.jpg
ADIApproved Reply
May 21, 2013 00:00

Cool demo, Bob! I was surprised to hear you reading a SigmaDSP datasheet in your audio test!

KJBob Reply
May 23, 2013 00:00

Thanks, Brett. Just figured I had to keep everything on topic....

Bob

EZAdministrator Reply
Aug 2, 2018 00:00

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