I am trying to locate the sound source using MUSIC algorithm in a circular microphone array. The array that I am using is "ReSpeaker Mic Array - Far-field w/7 PDM Microphones", and the distances between microphones are very small, less than 10cm. Is MUSIC algorithm suitable for such a geometry?

If not, which other methods should I try with this array?

If yes, how should the steering vector A be constructed based on the locations of the microphones?

Thanks in advance :)

  • 2
    $\begingroup$ What is your signal bandwidth? This determines if we can do a narrow-band approximation and use the steering vectors. In the case of wide-band, we might need to use a different approach. $\endgroup$
    – learner
    Jun 7, 2023 at 19:53
  • $\begingroup$ @learner makes a good point that the bandwidth of the signal matters. Given that this is an audio application, it's probably safe to assume the frequencies of interest are the human audible range of about 20 Hz to 20 kHz, unless the sound source is something very specific with much narrower bandwidth. If it's the full audible band, the high fractional bandwidth makes beamforming and DOA using phase rather than time delays difficult. $\endgroup$
    – Gillespie
    Jun 9, 2023 at 2:12

3 Answers 3


Problem Summary

You have a couple of difficulties with this problem:

  • The microphone array isn't a uniform linear array (ULA), which is the most straightforward to model steering vectors for.
  • Unless you have a scenario where the types of sounds you'll encounter have a small fractional bandwidth, you can't use standard phased array beamforming or direction finding (DOA) without first bandpass filtering to a narrower bandwidth (I assume the band in question is 20 Hz to 20 kHz, the human audible range). This is because phase delay beamforming rests on the assumption that the signal of interest can be approximated as having one frequency/wavelength.


This question deals with the exact same issue. To solve this problem, the Pyroomacoustics library uses the following steps, as I detail in my answer there:

  1. Filter the sounds into narrow frequency bins that have acceptably small fractional bandwidth.
  2. Perform MUSIC separately on each frequency bin, using phase steering vectors based on the array geometry, which can be arbitrary.

I explain in my answer how to calculate steering vectors for an arbitrary array:

Let $X_{array}$ be a 3-by-M matrix of 3-D coordinate locations for the M microphones, and $\hat D_{dir}$ be a 3-by-N matrix of N unit vectors that point in the directions of interest (e.g., perhaps equally spaced in azimuth relative to the array from -90 to +90 degrees). Then, the N steering vectors are given by: $$ V = e^{j\frac{2\pi}{\lambda}\cdot X_{array}^T \hat D_{dir}} $$

where $V$ is M-by-N and $\lambda$ is the wavelength.

See the rest of that answer for more details. Note that in your case, the wavelength $\lambda$ will be different for each frequency bin.

  • 2
    $\begingroup$ Nice answer! +1 $\endgroup$
    – Peter K.
    Jun 9, 2023 at 11:44

The paper 2D DOA estimation with sparse uniform circular arrays in the presence of mutual coupling suggests that the steering vectors are given by:

Equations from linked paper

For your array, it looks like there are 4 sensors at

$$\gamma_n = \frac{n \pi}{2}$$


There is this famous base paper for circular array DoA estimation: Eigenstructure techniques for 2-D angle estimation with uniform circular arrays.

This might help you.

  • $\begingroup$ Would you care to provide at least some brief explanation of what is discussed in the paper you cite? This would allow users to find a brief solution to their problem and if they want to delve into the details they can reach for the paper. Explaining the solution also provides a self-sufficient reference for the future in case the link goes dead or for any other reason (self-sufficiency is a good enough reason on its own in my opinion). $\endgroup$
    – ZaellixA
    Jul 6, 2023 at 21:07

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.