I’m wondering if someone might be able to help me. I’m trying to use the SRP algorithm in Pyroomacoustics to determine the direction of arrival of an incoming sound in real time (or as close to real time as possible) on a Matrix Voice connected to a Raspberry Pi.
I’ve taken a recording of all 8 channels from the Matrix Voice and set up a simulated room in Pyroomacoustics using only channel 0 as a point source (at about the same angle/distance away from the mic array as where I actually made the sound). As you can see, Pyroomacoustics seems to do pretty well finding the DOA for that point source (simulation):
However, if I feed the original source with all 8 channels through the SRP algorithm (or any other DOA algorithm), Pyroomacoustics cannot seem to find the location of the source (real audio from all 8 channels):
I created the mic array in code using the locations provided for the Matrix Voice, which can be found here.
I can get the ODAS software to run and perform DOA on the same setup, so I know that DOA is possible. However, digging through their code is really difficult, which is why I’m hoping to use Pyroomacoustics as a starting place instead. I believe ODAS uses a modified version of SRP-PHAT, based on their paper.
I’ve created a test Jupyter Notebook here where you can see my simulation vs. reality tests. The only lead I have right now is that the spectrograms look different between the simulated and real acoustic data, which makes me wonder if there’s some kind of filtering or pre-processing that needs to occur in real-time prior to sending FFT outputs to the DOA algorithm.
Any ideas on where I might need to make additions/corrections would be most appreciated!
(Disclosure: I also posted this on the Pyroomacoustics GitHub repo to see if anyone over there might know the answer)