The problem was mine
My English is B2 and improving, but in a live interview that is not the same as being fluent. I would know the answer and lose it somewhere between thinking it in Spanish and saying it in English. That hesitation reads as uncertainty even when it is not.
So I built the thing I needed: a bridge that sits between me and a video call and translates in both directions, live.
How it works
Two audio channels run at the same time. The incoming one captures what the other people are saying and plays it back translated into my headphones. The outgoing one takes my microphone, translates it, and pushes the translated voice into the call.
The pipeline is speech-to-text with Deepgram, translation with Groq, and text-to-speech with Cartesia. Python holds it together and does the audio routing on macOS.
The first version did not work
My first attempt used Gemini as the translator. It was unstable in exactly the way that kills a real-time tool: connection errors, failures sending the text through. In a translator, a dropped second is not a glitch — it is a sentence you never hear.
I did not patch it. I threw the whole thing out and rebuilt it on the current stack. That rebuild is what took it from a demo that sometimes worked to a beta I actually use.
Where it stands
Functional beta on macOS, running at around one second of latency end to end. I am working on getting that under a second, which is the point where a translated conversation stops feeling like a radio interview.