# Direction of sound using microphone array

I want to estimate the direction of arrival of sound (angle in a 2d plane) using a microphone array. I'm hoping to follow a time-delay based method using a 4 mic array. The method requires me to find the time delay of the signal upon arriving at the different microphones. For example, in the 4 mic array, I'm required to find the time delay of the signal between mics 1 and 2, 1 and 3, and 1 and 4 and so on for all other pairs. It would be very convenient if I could have a 4 mic array that could simply be plugged into my laptop and I guess an NI Labview algorithm would take care of the rest. And some one somewhere suggested that the microphone array can be created by using 4 usb (mini) mic and connecting them to a USB hub. First of all, can this be done? Secondly, since its a USB mic, the signal will already be digitized right? Any suggestions regarding how to extract information about time from this? I do not have any prior experience with signal/sound processing.

• This may help There is 4 array mic by seeed which may be helpful github.com/respeaker/mic_array Mar 27, 2018 at 6:24
• @manoj This seems really interesting. Thanks for sharing. Apr 9, 2018 at 7:27

## Disclaimer

This is an interesting project, that I started some work on but did not complete. My adviser suggested that this project was tangential to my official project goals. I have spent a lot of time thinking about this problem and hopefully my insights will provide some value.

## Array Setup

Four microphones will provide more information than required. The direction in a two dimensional plane can be provided with 3 microphones.

If you only need direction over a 180 degree field of view, only two microphones are required. Humans provide an example- we have two ears and determine if the sound is in front or behind by using another sensor such as our forward facing eyes.

## Implementation Notes

Using separate USB microphones, as mentioned will have lots of synchronization problems. There are devices with multiple channels which will remove this problem. A periodic pulse from a central speaker could be used to deal with synchronization. This pulse must be periodic for each microphone will have a separate clock source and will drift with respect to the other microphones.

I would suggest running a two microphone algorithm on each two microphone pair in the three microphone array. Checking the results against each other will allow the direction to be discerned.

Development testing will also require the production of a sound source that can create sharp pings (or continuous waves of a known frequency) that will be easy to distinguish.

If you connect four discrete USB microphones a challenge will be to synchronize them. Even when you start them simultaneously (from a programming point of view) you cannot be sure that they all start the audio acquisition at exactly the same time so there will be an inherent unknown time delay between the microphones. This can be solved by having a reference signal coming from a known direction. Then, by comparing the expected delays with the actual delays, synchronization can be achieved. With your setup I would expect the synchronization delays to be slightly different every time the system is started so that calibration needs to be done every time.