I am using an array of 4 microphones in a square formation. My goal is to estimate the direction (azimuth only) of incoming speech sound.
The array looks like this:
I have recordings from the array to test my code with.
To estimate the delays between two microphone signals, I use cross-correlation method. This step is working for me and I've tested it somewhat thoroughly.
I am currently using delay values between $x1$ and $x2$, $x2$ and $x3$, and $x3$ and $x4$.
From the delays in samples, I calculate the azimuth angles of incoming sound between two microphones each using the arcus sine and the distance between the microphones. I get angles between $\pm\frac{\pi}{2}$. I am somewhat certain this step is working correctly too.
The next thing I do is mirroring the angles of either the first ($x1,x2$) or the third ($x3,x4$) combination based on whether the second angle (from $x2,x3$) is positive or negative.
From this, I should have the directions of the incoming sound, relative to the direction of $x2,x3$ being the front (right side of array in the picture).
To get the result of my DoA estimation, i add 90 degrees or $\pi/2$ to the second and 180 degrees or $\pi$ to the third angle. Now, all angles should point somewhat into the same direction, in my opinion, but it is not working.
Where is my mistake? I would really appreciate if someone could point out my error(s).