Filters applied separately to right and left channel of stereo microphone yielding inaccurate results
I hope to distinguish between a voice input and musical input using a frequency cutoff. 


The use case scenario is not exactly clear here. Are you trying to get the vacuum cleaner to be called to a location by responding to a command, or are you trying to get the vacuum cleaner to follow a person that is talking in general. (A specific person perhaps?).

The second use case scenario ("follow me as I am talking to you") is probably a "voice" recognition application and localisation could be added in two stages. In stage 1, a classifier that is trained to the voice of a specific person is fed frames from the sound card. Once the classifier detects that a frame contains a "voicing", then stage 2 is activated. In stage 2, you run a frequency analysis and try to locate the fundamental tone of the person's voice. Once you locate that, you then base your direction finding on the phase difference of that particular harmonic (or band). Obviously here, because the voice is processed in frames, the vacuum cleaner's reaction time depends on the length of the frame and their overlap. Very briefly, if you are processing 1 second long frames (with zero overlaps), then the robot makes 1 direction decision every 1 second.

The first use case scenario ("come towards me when I call you") is probably a pattern recognition problem. If the vacuum cleaner is to respond to a voice command, like "Robot, clean up", then, at the very least, you could use a matched filter approach. You can then rectify and integrate the output of the matched filter and pass it through a threshold. The combined output of this will be a pulse whose duration will be, approximately, equivalent to the duration of the voice command. Running this process on two microphones with some separation between them will give you two pulses (one on each channel) with a slight time difference from which you can then estimate direction.

A variation of this technique would be to call the robot via a whistle pattern (sounding a bit like R2D2 but obviously, at human speeds). The whistle pattern is attractive because:


You can filter your input to the expected range of the whistle (and it's very hard to whistle at 20kHz)
A whistle is very near to a sinusoid, therefore you can use very simple means of detection
Being a whistle and very close to a sinusoid, allows you to use the established techniques of phase difference to detect direction. In fact, for a given whistle pattern, you could choose to focus on the high frequency parts of it to get more accuracy out of the direction estimation.


So, given an audio stream which can even be processed on a sample-by-sample basis, establish a filter bank of filters that are atuned to a given frequency. Rectify and integrate their output (so that you essentially measure power at that band) and run that through a threshold. Once the user hits the right notes, you get a sequence of pulses and the times at which the outputs crossed the threhsold. Analysing the timings within one channel you can infer if the user just whistled the "secret pattern" and then analysing the timings across channels (or simply using a phase detector) you can infer direction.

Hope this helps.