Right now I’m not really concerned with understanding the sound, but more with localizing it so I can point the bot’s head at the speaker.
I was thinking of two cheap microphones with something behind them that would absorb sound. Then I could just focus on anything I could hear with both mikes and point the head until the sound is the loudest in both ears. If the sound is directly behind the bot, it should be possible to determine this by a very small microphone in the rear of the head.
I do believe I read on one of CP’s fantastic build writeups he discusses how to do a very similar thing - he monitors sound to trigger a reaction from one of his robots when a threshold is crossed. I can’t remember whether it was on this site or his page.
He also has some great examples of using a ping sensor to detect a left and right distance, compare the two values and turn his robot to the greater value (the bigger open space, in this instance).
Maybe you could use his examples to read sound on the mics, compare them and then turn towards the bigger value. Loop until both sounds are equal.
I would definitely use a third mic at the back to determine whether the sound is in front or behind; your robot could return the same left and right values both facing direclty towards or direclty away from the sound source.
One of my colleaguse did work on something similar and I helped him.
For cheap microphones it’s almost impossible. We put foam around the mic’s and a tube in front to narrow the direction where the mic gets the sound from but it was not enough. Most of the time the sound from one side also was heard by the other side with the same intensity.
Maybe directed mic’s in a higher price range may do the trick.