Question on Interference Canceler use

13 posts / 0 new
Last post
rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm
Question on Interference Canceler use

Hello,

I am trying to use the Voice UI modules to try and eliminate noise from voice captured by 2 omnidirectional MEMS mics positioned with a distance of 21 mm between them.

I watched the training videos on your website and was pretty impressed with the result demonstrated at the end of Episode 38, so I tried to reproduce the setup to run locally on my PC. Unfortunately, I seem to be getting much worse results even in the absence of any background noise. If I bypass the IC everything seems fine, so I don't think the issue is with any other module.

I am attaching to this post both the design I built on Audio Weaver and one of my audio samples, which contains audio pretty much free of noise in the beginning and then some noise samples. The file was recorded with 16-bit resolution at 16 kHz, and I am running everything on the PC, not in an embedded processor.

Package iconaw_project.zip

What could I be doing wrong? Could it be some setting on my design, or something on the way we captured the samples?

Thank you very much for your help.

 

Kind regards,

Rafael

PaulB
Offline
Last seen: 20 hours 11 min ago
Joined: 10/04/2016 - 11:43pm

Hi Rafael,

The adaptive interference canceler (AIC) algorithm is used for noise which is "spatially stationary".  That is, the noise is in a fixed spatial location relative to the microphones.  This would apply to, for example, a smart speaker which needs to cancel out a TV.  It doesn't work if the microphones or interfering sources are moving relative to each other.  The AIC takes 3 or 4 seconds to adapt to the local environment.

I listened to the recording in your ZIP file.  This is wind noise and the AIC won't help.  I also noticed that the wind noise is so loud that it is clipping the WAV file.  This will mess up just about any algorithm.

rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm

Hello Paul,

Thank you for your feedback, it does make sense regarding the wind noise condition.

However, do you have an idea why the voice quality could have been degraded even in the absence of noise, like during the beginning of the recording? We would like to test this module under different conditions, in which the noise would be stationary, but first we need to figure out this other issue.

Best regards,

Rafael

PaulB
Offline
Last seen: 20 hours 11 min ago
Joined: 10/04/2016 - 11:43pm

The AIC algorithm should be used in systems that rely on a trigger word.  When the trigger word is detected, you have to freeze the AIC by setting the third input ("freezeFlag") to 1.  If you don't freeze then the AIC will start ignoring the speech.

rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm

OK Paul, I understand.

I tried manipulating the freezeFlag, even setting it to true from the beginning, but I could not notice any difference. The weird thing is that the voice seems to be attenuated all the time.

Also, when I watched the demo on the Episode 38 video that behaviour was not apparent. Is there anything else that you think could be wrong with my design? Maybe some settings that I misconfigured?

Thank you,

Rafael

PaulB
Offline
Last seen: 20 hours 11 min ago
Joined: 10/04/2016 - 11:43pm

Check the mic spacing listed in your Beamformer inspector.  

21 mm is quite narrow and won't work great.  The video had 70 mm spacing.  Any chance to increase mic spacing?

rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm

You are right Paul, the distance between mics is quite smaller.

I will see what I can do about that and test the IC module again. Anyway, on our final design it will be very hard to have a larger distance. How sensitive is the Interference Canceller to this parameter?

Thank you,

Rafael

PaulB
Offline
Last seen: 20 hours 11 min ago
Joined: 10/04/2016 - 11:43pm

Open up your beamformer inspector and see the performance for low frequencies.  You'll see that with closely spaced microphones the beamformer just doesn't do well.  If you increase spacing then it improves.  The training covers this and there is a direct correlation between mic spacing and low frequency performance.

In your application, is the user in a fixed location relative to the microphone array?

rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm

Yes Paul, in our application the user position is fixed relative to the mic array.

PaulB
Offline
Last seen: 20 hours 11 min ago
Joined: 10/04/2016 - 11:43pm

I checked our your product on the web site.  Is this application for the microphones inside of the helmet?  At best, you'll be able to use a 2 microphone end-fire beamformer + single channel noise reduction.  

rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm

OK Paul, so if we did try to use it inside a helmet, the Interference Canceller would not work because of the wind noise, the distance between mics or some other factor?

PaulB
Offline
Last seen: 20 hours 11 min ago
Joined: 10/04/2016 - 11:43pm

The main reason is that the AIC cancels point sources.  They have to be at a fixed location relative to the mic array.  If you are wearing a helmet, then every time you turn your head the location of the interfering noise changes.  Wind noise is also fundamentally different.

Just curious, do you still get wind noise inside the helmet? Does this happen only when the visor is open or all the time?

rafael_2938
Offline
Last seen: 1 week 1 day ago
Joined: 08/16/2018 - 1:11pm

Hi Paul,

Thank you for the clarification.

Yes we do still pick up wind noise from inside the helmet, more on an open-face than on a full-face helmet. I would love to discuss this in more detail, but maybe not on an open forum.

Best regards,

Rafael