Dub first, then caption the new language
Captions transcribe 165 spoken-language codes. They do not translate. Dub the locked master, then caption the dubbed track.
Captions transcribe what is spoken. They do not translate. Add captions supports 165 language codes so the engine listens for the right phonemes — es-MX, ja-JP, ar-SA, not “Spanish vibes.” If the file still speaks English, a Spanish caption pass is a wrong-language transcript, not a localisation. Dub the locked master first. Then caption the language you now hear.
This is an order-of-operations page, not a dubbing-engine bake-off and not a 165-code coverage chart. The engines and their hard limits already have a home. The mistake this page kills is captioning English, uploading to a Spanish slot, and calling it done.
Transcription is not translation
add_veed_captions runs speech-to-text on the video’s own audio track and burns styled, timed lines into the pixels. You set a language code so it listens correctly. You do not set a target language. There is no “translate these captions into French” on that tool. The AI caption generator is the same job with a tool URL.
What the 165 codes are for:
- The file is actually spoken in that language (or that regional variant).
- Accents and phonemes the engine should expect.
- Not a menu of markets you wish you had.
What they are not for:
- Turning an English VO into on-screen Spanish.
- A subtitle file in a language nobody spoke.
- A substitute for dub a video.
If you only needed readable English captions on an English cut, you are in the caption tool and this page does not apply. If you needed a second language, you need a second audio track first — a dub, a re-record, or a new TTS wav plus a mouth pass. Then you caption that track.
Overlay is a third object. An authored Spanish headline nobody said is text overlay, not a caption. Mixing overlay with a transcript of English is how a mute viewer reads Spanish and an unmuted viewer hears English. Pick one script per file, or ship two files.
Dub the locked master
dub_video translates, clones delivery, and — on the HeyGen engine — lip-syncs the mouth to the new language. Source media must already live on Versely storage. YouTube links are not an input. Cost scales with length and engine. None of that belongs on a take you are still regenerating. A recut of the master is a recut of every language.
Two engines, both later than picture lock:
- ElevenLabs (default): audio or video, optional trim via start/end, up to 30 minutes. Dubs sound. Does not retarget the mouth.
- HeyGen: video-only, lip-sync included, 8-minute cap, fewer languages, no trim range. The visemes are glued to this face performance. A new take has new visemes. The old dub does not transfer.
The AI dubbing tool is the same work. translate_audio_only on the same dub_video tool is the words without a cloned performance — still later, still async, still wasted on a miss.
Picture lock means this timeline is the parent. If you are still extending, trimming, or swapping VO, you do not have a parent. Ten languages of a miss is ten async jobs.
Keep background audio only if that background is the mix you are shipping. Dubbing a scratch bed “so we have a sense of the Spanish” is a sense that costs a full job.
Do not caption the English master “to save a step” while the dub is in flight. The English burn is the wrong language and the wrong timing. You will either ship it by accident or recaption anyway.
Caption the language you now hear
When the dubbed file returns:
- Listen. Confirm the spoken language is the one you asked for. A failed dub with English still in the mix will caption English if you set
en-US, or garbage if you setes-MXagainst English phonemes. - Set the caption language code to match the spoken track.
es-MXfor the Mexican Spanish dub you actually have, notes-ESbecause the brief said Spain if the engine delivered MX. - Pick a preset. 21 BASIC at 1×, 9 DYNAMIC at 2×. Preview. Caption timing in the new language will not match the old English cues. Romance languages often run longer. A cue that fit English will overflow. Watch it on mute at phone size.
- Proof names, numbers, and product strings in the new language. ASR still misses those.
- Check safe area. Chrome did not move because the language did.
Burned-in captions are pixels. The English caption track does not “survive” as a useful object. The pixels survive. They will be the wrong language. Plan a new caption pass on the dubbed file. What captions cost across a month of clips counts that pass. Budget it.
If you dubbed only a range (ElevenLabs start/end), caption that range’s output, not the undubbed parent. A transcript of mixed languages is how you get two scripts on one screen.
If the localisation is TTS in the new language plus a lipsync mouth pass, the order is the same: new wav, mouth, then captions on the talking take. Captions still transcribe the new speech. They do not read the English script you typed into TTS.
165 codes, one spoken language
Coverage is wide. Accuracy is not uniform. Heavy noise, overlap, and names still fail. A code existing is not a quality guarantee. Spot-check.
Regional variants matter for listening, not as a translation switch. en-US versus en-GB is how the engine hears the file. It will not rewrite the transcript into the other spelling as a localisation.
Forced narrative and SDH are caption kinds, not language codes. Do not set a language to “SDH.” Set the spoken language, then pick a readable preset if accessibility is the brief.
Article 50 still applies to the dubbed file if it is realistic synthetic media of people and you publish in the EU. A dubbed AI presenter is not exempt because the language changed. Label it. Article 50 disclosure is the copy. The caption track is not the AI label.
When the new language is in the mix, caption that mix. Sign up and dub first, then burn the transcript of the language you actually shipped.
FAQ
Can I set the caption tool to Spanish on an English video to translate it?
No. It will try to transcribe Spanish phonemes against English speech. You will get a bad transcript, not a translation. Dub (or re-record) first, then caption with the matching language code.
Do English burned-in captions survive a dub?
The pixels survive. They will be the wrong language and the wrong timing. Plan a new caption pass on the dubbed file.
I only needed Spanish subtitles and English audio. Is that this page?
That is a translation subtitle job, not add_veed_captions on the English track, and not a dub. This page is for when the spoken language changes. Overlay or a translated subtitle workflow is a different object. Do not use the 165-code transcriber as a translator.