I'm working on an acoustic source separation problem where I want to separate the voices of a choir based on intensity vector statistics. I'm currently implementing a paper by Günel called “Acoustic Source Separation of Convolutive Mixtures Based on Intensity Vector Statistics” In this paper, the acoustic source separation is achieved in a couple of steps:

  1. the signals from the microphone-array are converted to a time-frequency representation (using the modified discrete cosine transform, MDCT)
  2. The intensity vector direction is calculated and rounded to the nearest degree. All of the obtained directions are then plotted in a histogram to find the mixture probability density. On this histogram, a von Mises distribution is fitted for every source position. (my question is related to this step)
  3. As I understand it, this distribution is then used to define a directivity function for each sound source and a time-frequency bin and beamforming is applied to separate each source.
  4. Finally, the inverse MDCT is calculated for each separate signal, obtaining the separate signals in the time-domain.

So this brings me to my question. After calculating the vector intensity directions for a single source in a simulated anechoic room (pyroom acoustics) and real-life measurements with a GRASS 50VI-1 Intensity probe, all obtained directions are plotted on a histogram and here, something I can’t explain happens. For a source that should be positioned at 45 degrees relative to the microphone array, the histogram shows two peaks. One peak at 45 degrees, but also one peak at 225 degrees (so, 180 degrees shifted).

vector directions

This is simulated in a 3D space, but for now we are only using 4 microphones to find the source directions, so only finding the azimuth directions. These directions are found using the following formula (in python, we use the arctan2 operator):

enter image description here

where Pw, Py and Px are found by using our microhpone measurements as in the picture below:

enter image description here

I have read countless papers about DAO/separation using sound intensity, but not a single one I found shows any sign of this behaviour or talks about certain assumptions that should be made. It seems they only have a peak in the direction that the sound is actually coming from. Finally, here is the code I used:

enter image description here

  • 1
    $\begingroup$ What are there conjugate complex operators in the formula and the code? Isn't the MDCT all real ? $\endgroup$
    – Hilmar
    Commented Mar 1, 2021 at 12:39
  • 1
    $\begingroup$ @Hilmar Yep the MDCT is all real, so my partner and I don't understand why it is written like this in the paper. Adding the .real in the code does not make a difference (I should've removed it) $\endgroup$
    – Dries
    Commented Mar 1, 2021 at 14:12

1 Answer 1


So this technique approximates the velocity of the particles using the pressure gradient at a time instance. This approach is only correct for microphones that are spaced closely together. The max frequency it can measure correctly with the spacer we're using is around 4.8kHz (stated in datasheet), so all angles corresponding to higher frequencies gave a wrong answer. This caused the 180 degree shifted angles.

A great explanation/visualisation from Siemens can be found here

  • $\begingroup$ Siemens provides a nice visualisation. A (in my opinion) better source where you could find a lot of information regarding intensity and intensity measurements is Frank Fahy's book "Sound Intensity" (hehe, the title is quite descriptive in that sense :D). Another issue if you go even higher than the proposed frequency is spatial aliasing, a phenomenon which is prominent in any kind of sampling be it in time or space. But of course this strikes in well after the 1/6th wavelength rule that is stated in the link you provided. $\endgroup$
    – ZaellixA
    Commented Nov 20, 2021 at 15:09

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.