Script, then render
Stage 1 returns the translated script as editable text with exact timings. Nothing is synthesized — and no synthesis cost is incurred — until you approve the lines and render.
Dub a video in two stages built around review-before-spend. Stage 1 (script) takes only a video
Learn more about DubbingThe dialogue is transcribed and translated into editable, time-coded lines first — nothing is voiced until you approve it.
Dialogue is transcribed and translated into this language; lines already in it keep the original voice.
0.15/s of video for the script · rendering later 0.5/s + text-to-speech at 4/spoken second. Totals appear once the duration is known.
Dub a video in two stages built around review-before-spend. Stage 1 (script) takes only a video URL: speech is transcribed with word-accurate timing, then translated into the target language by a strong LLM, giving you time-coded dub lines you can edit line by line. Stage 2 (render) voices each approved line through core-tts on your own key, time-fits it to its slot, and mixes it onto the video — the original soundtrack stays untouched except while a line plays, when it ducks under the new speech, so music and ambience survive. You get back both the dubbed MP4 and its audio track. Dialogue already in the target language is detected and left alone. Both stages run as async jobs (poll /v2/jobs/{id} or attach a webhook).
Stage 1 returns the translated script as editable text with exact timings. Nothing is synthesized — and no synthesis cost is incurred — until you approve the lines and render.
Dub lines anchor to the real speech window measured from word-level timestamps, not padded segment spans — the dub starts where the sentence is actually spoken.
Only while a dub line plays does the original duck (to 0.15 by default); everywhere else it passes through untouched. Music, ambience and untranslated dialogue stay.
Render returns the dubbed MP4 and the same mix as a standalone audio file.
Localizing product and marketing video
Ship the same video in multiple languages with an editable translation step in the middle.
Course and training catalogs
Batch-generate scripts, have translators review the text, render only approved cuts.
Same-language accessibility
Combine with the audio-description product — the script stage there produces dub and description lines in one pass.
input
Script: a video URL + target_language. Render: the same video URL plus the reviewed segments array, with optional per-line enabled flags and voice options.
output
Script: time-coded dub lines (start_ms, target_duration_ms, source_text, text, same_language). Render: video_url (dubbed MP4) + audio_url (the mix as m4a) + render stats.
video_urlrequiredstringPublic URL of the source video. Transcription runs upstream, so this is the only input needed.
target_languagerequiredstringLanguage the dialogue is translated into (ISO code). Voices exist for 13 languages — list them free with GET core-tts-voices (dutch, english, french, german, hindi, indonesian, italian, japanese, korean, mandarin, portuguese, spanish, turkish; arabic via the minimax provider).
languagestringSource language. Detected automatically when omitted.
expected_durationnumberVideo length in seconds. Only affects how many credits are held while the job runs — billing always uses the real duration.
Both stages billed per second of video; each synthesized line is billed as regular core-tts usage on your account.
| Service | Unit | Price |
|---|---|---|
| Dubbing Script | second | $0.0015/sec |
| Dubbing Render | second | $0.005/sec + core-tts |
Async jobs are billed only when they complete successfully.
A one-minute video: script ≈ 9 credits, render ≈ 30 credits + core-tts for the spoken lines (4 credits per spoken second).