The Checkbox Was Already the Answer: Building a Real Two-Way Interpreter

TransLee could already do two separate things well: catch sound from a phone’s own speaker and translate it, or listen to a person talking and speak a translation back. What it couldn’t do was the thing I actually needed for a real meeting: sit in an English-language call as the only Korean speaker, show me Korean for everything everyone else says, and speak English out loud when it’s my turn, without me touching a language dropdown mid-conversation. ...

July 18, 2026 · 8 min · VibePapa

10 Seconds to Zero: Rebuilding My Translator on Gemini's Streaming API

The old version of TransLee worked. People used it. It just made you wait. The Old Pipeline: Record, Wait, Stitch The original app was built in Flutter, with a Node.js server in the middle talking to OpenAI’s Whisper for speech-to-text and GPT for translation. The flow looked like this: [Record 5-15 seconds] -> [Whisper: speech to text] -> [GPT: translate text, using the tail of the previous chunk for context] -> [Text-to-speech] -> [Play the translated audio] ⬑ repeat, waiting the full cycle each time ⬏ Five to fifteen seconds isn’t a random number. It was a setting I chose on purpose, because shorter chunks meant the translation kept losing the thread mid-sentence, and longer chunks meant a longer wait before you heard anything at all. The fix for the “losing the thread” problem was to keep the last bit of the previous chunk’s text and glue it onto the front of the next one before sending it off to be translated, so GPT had enough context to know what was going on. It worked. It also meant every single sentence arrived several seconds after it was actually spoken. ...

July 14, 2026 · 5 min · VibePapa