AI Portfolio Lab Tools Games Blog Feedback
All Posts

My Voice Interface Doesn't Know My Voice

GPS navigation played through my car speakers and Jarvis answered it. The pipeline did exactly what it was built to do. That's the problem.

2 min read
aiautomation

The GPS said turn right in 500 feet. Jarvis answered it.

Not a metaphor. I was driving, the navigation was playing through the car speakers, and whatever it said landed on the microphone and got transcribed and sent to the voice interface. I don’t know what Jarvis said back. I was busy making the turn.

It’s a funny story until you think about it for a minute, and then it’s just a design problem. The voice pipeline doesn’t know who’s talking. It knows that words were spoken near a microphone. “Turn right in 500 feet” is as valid an input as anything I’d actually say.

So I raised it with Jarvis and we worked through what a fix would look like. The obvious version is speaker verification, where you enroll a voiceprint from a minute or two of speech and run every incoming audio segment against a speaker-embedding model. Check the cosine similarity score. If it’s too low, drop the input.

The problem with the obvious version is the threshold. Set it too tight and the system starts ignoring me when my voice changes. Driving noise, wind through a window. And silent rejection is worse than no check at all, because if the thing stops listening to me I need to know. We made visible feedback a hard requirement before we talked about anything else. A line in the transcript that says “ignored, didn’t match your voice.” A kill switch. The design, not the build.

The pipeline runs Pipecat with MLX Whisper on the Mac and Silero VAD for voice activity detection. streaming_whisper.py holds the raw PCM per VAD segment in memory. That’s the hook point. The gate goes there, before transcript becomes intent. We decided on fail permissive, rejecting only when the signal is clearly not me. A borderline reading goes through.

There’s a cheaper version to try first. GPS nav plays through car speakers at room volume; my voice at the mic is near-field. A loudness gate filtering anything below a proximity threshold catches most of the problem without a speaker-recognition model at all. Whether the phone’s echo cancellation already handles it when the nav and the mic are on the same device is worth finding out before anything harder.

I queued the real fix and left the cheaper experiment as an optional first step.

The pipeline did exactly what it was built to do. Heard something, responded. The problem wasn’t that the AI was dumb. It was that the system had no model of me as distinct from any other audio source. Until you give it your voice, it answers everyone equally.

Including your GPS.