Shipping the Swedish cut into an empty room

Blog post #57


The Swedish version of the Fable 5 video is done. It’s also slightly pointless, in the specific way that only timing can make something pointless: Fable 5 got pulled offline before the Swedish cut went up. The model the whole video is about is no longer a thing you can go and try. I finished localizing a tour of a place that closed while I was translating the sign on the door.


What changed since last log

  • The release-video pipeline got its first full translation pass. Same video, Swedish end to end: re-recorded both island sites in Swedish, re-rendered the text slides, re-cut the voice, and rendered two fresh HeyGen segments of me actually speaking Swedish instead of dubbing over English lips.
  • Then the subject of the video disappeared. Fable 5 came down. The English cut still points at a live model; the Swedish one, finished a few days later, points at a 404.

What shipped

  • A complete Swedish cut, about five minutes, structured exactly like the English one and localized all the way through — down to the “Vi presenterar Fable 5” announcing card and a Swedish quick-facts slide.
  • Proof the pipeline actually copies between languages. Forced alignment on the Swedish voice track drove every cut the same way it did in English. The island screen recordings had to be re-timed, because Swedish reaches each beat later than English — longer sentences, later payoffs — so the night-mode toggle and the four-times-speed click needed new timing to land on the words.

What’s working

  • Localization as a repeatable step, not a rebuild. Re-aligned voice, re-timed recordings, segment-wise avatar renders. An afternoon, not a day. That was the whole point of building the infrastructure, and it held.
  • Avatar V again for the Swedish cold open and outro, with the audio cut straight out of the Swedish voice track so the lips match the real take, not a guess.

What’s unclear or broken

  • The entire reason to translate something is reach, and reach assumes the thing you’re pointing people at still exists. This time it didn’t. I have a polished Swedish video aimed at a model that no longer answers.
  • The voice came out flat. At the stability setting that fixed last month’s breathing problem, the Swedish take sounded dead — correct, but lifeless. I dropped it to the most expressive setting to get the life back, knowing that invites the breathing back too. Still an unresolved trade-off, and it may turn out to be a per-language one.
  • Two separate “the credential quietly died” problems in one afternoon. ElevenLabs silently dropped to the free tier mid-session, so I couldn’t generate voice at all for a while, and HeyGen’s OAuth token had expired, which locked the avatar renders until I re-authorized. Last log it was a hidden 1Password dialog. The theme continues: the pipeline is only as alive as its quietest token.

Decisions made

  • Ship it anyway. A dead-link video is still a portfolio piece and still demonstrates the pipeline, and the irony is honestly on-brand. The English video was partly about Fable 5’s safety filter flagging a make-believe island as a biology risk. A week later the model itself is offline. I couldn’t have scripted a better ending, and I didn’t try.
  • Publish it listed, straight away, like everything else. No unlisted soft-launch.

Tooling & process

  • Swedish slides built the same way as the English ones: HTML to PNG through headless Chrome, the typewriter brief recorded as a Playwright animation. The only new code was a Swedish-timed copy of the island recording script, with longer holds so the footage waits for the slower language.
  • ElevenLabs for voice and alignment, HeyGen via MCP for the avatar, ffmpeg for the build. Same stack as the English cut, pointed at a Swedish track. The machine worked perfectly. The world just moved faster than the render queue.

— Stefan