I need to detect the Direction of Arrival of a speech signal using an 8 microphone array as part of a project I've been working on. Currently, I have a working solution in the 2 microphone case:

$$G(\omega ) = X(\omega ) \cdot X_{delayed}^{*}(\omega)$$ $$g(\tau ) = {F}^{-1} [G(\omega)] $$ $$\tau _{max} = argmax\; g(\tau) $$ $$\theta = \frac{180}{\pi}\cdot sin^{-1}(\frac{c\, \tau_{max}}{d})$$

To expand this solution to n microphones, I thought about looping across every pair of microphones $nCr = \binom{8}{2}$ and summing the cross correlations computed for each pair before inverse transforming and locating the peak, however I'm getting incorrect results for my angle.

My question is :

Looping across each pair of microphones in the 8 microphone array, calculating the cross correlation of the two signals in the fourier domain, inverse transforming and then summing with the previous loop iterations: Is this the correct method? Am I missing an intermediate step?

  • $\begingroup$ Please repeat your verbal explanation about calculating the cross correlation ... and then summing with the previous loop iterations, only this time please use formulas and equations, similar to what you did for the two mic case. I didn't quite catch what you mean. And what 'an intermediate step' are you talking about? $\endgroup$
    – V.V.T
    Nov 3, 2023 at 12:12


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.