A translation video in 85 minutes
Blog post #47
I just looked at the clock. The Swedish version of Gemini in 3 minutes went from “open the English script” to “firstcut.mp4 sitting in the renders folder” in one hour and twenty-five minutes.
That’s not a full video. That’s a translation of a video I’d already built earlier today. But that number — 85 minutes — is the one I want to remember. Because if a translation costs 85 minutes, then every English video I ship is now two videos. And every minute I spend on a new tool is doubled in reach without doubling the work.
What 85 minutes actually means
The pipeline that took weeks to figure out is now a copy-paste operation between languages:
- Translate the EN script to SV (read for intent, rewrite — don’t translate word-for-word)
- Generate the Swedish VO through ElevenLabs v3
- Run forced alignment to get segment timings
- Push the SV audio through HeyGen, same avatar, same room, new mouth
- Copy
build-en.shtobuild-sv.sh, swap a handful of text strings and the VO path - Re-render the frame overlays with Swedish text
- ffmpeg the whole thing together
- Translate the YouTube metadata
The ChatGPT-generated middles? Reused. The frame HTML templates? Reused. The cream-sampling padding logic, the PiP rule, the overlay timing rule that always trips me up — all reused. The only things that actually change between languages are the text and the voice. Everything else is structurally identical.
This is the version of “factory” I’ve been chasing for months. Same input shape, swappable language, predictable output.
The honest caveat
I got feedback today that the Swedish voice still sounds too robotic to listen to for more than about ten seconds. That’s the kind of feedback that stings a little because the rendering is technically working — loudnorm normalization, v3 model, stability tuned, no compressor flattening transients. By every dial I have access to, the voice should be fine.
But the listener doesn’t care about my dials. The listener clicks off after ten seconds.
So that’s the next problem. Not for tomorrow — tomorrow I’m starting the Agents series — but it’s in the backlog with its own memory file and a list of hypotheses to test: prosody in the translation itself, sentence-length variation, strategic audio tags, maybe a gentle EQ tilt without going near compression. Possibly the source voice training material is too formal and I need to record a more conversational batch and rebuild the voice profile from there.
The thing I’m not going to do is pretend the feedback isn’t real because the workflow is fast now. Fast and listenable have to both be true.
What’s next
The Agents series. Openclaw, Pi, Hermes, and whatever else makes the cluster. The folders are already prepped under plattformar/.../agenter/. Same pipeline, new topic. And now, because of today’s number, every one of those videos will ship in two languages without me having to think twice about whether the second one is worth the time.
85 minutes is worth the time.
— Stefan