Inspiration I wanted to learn Russian fast, and not just read it but sound local. Textbook apps taught me words no one actually says, in an accent no one uses. What I really wanted was to learn from the videos I already watch, understand every line, then practice saying those lines until they sounded native. I couldn't find an app that did that, so I built one, for seven languages (Russian, Korean, Japanese, Chinese, Spanish, French, German).

What it does Linguaah opens YouTube inside the app and turns whatever you're watching into a lesson.

Understand every line. As the video plays, the line being spoken shows in your target language, with natural English under it and every word tappable for its meaning in that sentence. Subtitles even when YouTube's are wrong or missing. YouTube's auto captions mishear real speech, and some videos have none. When that happens, Linguaah listens to the audio and writes accurate, timed subtitles itself. Save a line, keep the real scene. Tap to save and it becomes a flashcard with the actor's own voice and the exact frame it was said over, not a robot reading it back. Study with spaced repetition, fully on your device. Sound local. The part I built for myself: cut a scene, record each line in your own voice, slow the video down while you practice, then hear yourself played back over the real scene. How I built it React Native and Expo (SDK 57, New Architecture) with on device SQLite for the flashcards. A WebView runs YouTube, and an injected script reads the captions and intercepts the video's own media stream for the scene audio and frames, so nothing is ever downloaded. Gemini 3.1 Flash Lite handles in context translation, word meanings, and transcribing audio into subtitles, batched and cached to stay cheap (about two tenths of a cent per minute). RevenueCat powers Pro, which also matters because I'm in a country where Stripe isn't an option.

Challenges My sister tried it and the translations were off, because YouTube had misheard the speech. Fixing it meant having the app listen and write its own subtitles, and getting the lines to switch exactly when the words are spoken. Getting the actor's real voice onto a card without downloading the video took intercepting the stream the player already had. And I had to keep it nearly free to run, built solo, tested on friends and family who told me exactly what was broken.

What I learned How to intercept and reassemble a video's media stream, how to turn an LLM into a reliable transcriber on a budget, React Native's New Architecture, and how RevenueCat makes payments work where the usual options don't.

Built With

Share this project:

Updates

Submission history