I'm tinkering with different adaptive beam-forming algorithms for a research project in which I want to use a Uniform Rectangular microphones Array (URA) to isolate speech in a room.

I am determining the Direction of Arrival (DoA) using a camera in the center of an array, and reverse camera projection from a user input - ie the user clicks on the sound source on the camera's preview, and I reverse project the pixel to an azimuth/elevation angle.

Then I use this DoA as the steering angle for my beam-former, and listen to the result in my headphones. Conventional beam-forming, as expected, didn't give a satisfying SIR so I delved into adaptive algorithms (more specifically Linearly Constrained Minimal Variance - LCMV). With simulated audio from a virtual model of my microphone array, on Matlab, I compared Frost's algorithm and the Generalized Sidelobe Canceller.

I obtained better results with the latter, which to me doesn't make sense as these are basically 2 different implementations of the same algorithm - from what I could understand of the white paper.

Moreover, when doing real life testing, the result weren't even close to be as good as the simulation.

I can only think of 2 reasons for that :

  • Reverberation and noise, to which LCMV is sensitive
  • Bad DoA precision which causes signal leaking in the side-lobe canceller

I will soon build a test-bench to evaluate the precision of my DoA estimation, which will at least possibility eliminate one variable, but I think this is not the principal cause of bad performance...

So my questions are : what do you think causes this big discrepancy between simulation and real life? and would there be a way to improve it?

For now, I am thinking of using NMF at the output of the beam-formed audio to further separate the sources.

  • $\begingroup$ have you implemented GSC in time domain ? $\endgroup$ – Arpit Jain May 17 '18 at 7:39
  • $\begingroup$ Yes, I mean I haven't implemented it myself (although I am trying to do so at the moment), but rather used the matlab function linked in my question $\endgroup$ – Florent May 18 '18 at 7:54
  • $\begingroup$ you must ensure that blocking matrix and multiple input canceler adapt at right moments, see if blocking matrix block is able to remove desired source. $\endgroup$ – Arpit Jain May 18 '18 at 8:23
  • $\begingroup$ Well the thing is, the GSC is kind of a black box, as I'm using Matlab's function. I'm currently working on implementing my own version to monitor the signal throughout the algorithm but I'm not finished yet. However, I would say that if the DOA is correctly estimated, which means the presteering block is fine, then there shouldn't be any reason for the blocking matrix not to block the signal... $\endgroup$ – Florent May 23 '18 at 2:55
  • $\begingroup$ So you are assuming that blocking matrix should block all the signals and not just the target source ? usually blocking matrix adapts only during target source presence and should block only target source and not the interferences/noises . $\endgroup$ – Arpit Jain May 23 '18 at 5:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.