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.
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
11:35am
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.
11:43am
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
11:52am
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.
12:04pm
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
1:18pm
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?
1:26pm
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
1:35pm
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?
1:53pm
Yes Paul, in our application the user position is fixed relative to the mic array.
2:04pm
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.
2:48pm
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?
4:57pm
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?
5:17pm
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