AI Video Dubber - Translate & Re-Voice Any Video avatar

AI Video Dubber - Translate & Re-Voice Any Video

Pricing

Pay per event

Go to Apify Store
AI Video Dubber - Translate & Re-Voice Any Video

AI Video Dubber - Translate & Re-Voice Any Video

Turn one video into a global catalog. $0.12 per dubbed minute, flat rate, no subscription. It transcribes the speech, translates it into any of 23 languages, generates a natural AI voice-over timed to the original and muxes it back into a finished video.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

4 days ago

Last modified

Share

AI Video Dubber & Translator

Takes a video in one language and gives you back the same video speaking another. It transcribes the original speech, translates the text, generates a fresh AI voiceover timed to the original pacing, and muxes that audio back onto the video. Built for creators, localization teams, and anyone who needs a quick second-language cut without booking voice talent.

There is no voice cloning here. The output uses a standard synthetic voice, so you don't need anyone's consent to ship it.

$0.12 per dubbed minute, plus $0.0000125 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for minutes actually dubbed.

How it works

Four stages, in order:

  1. Transcribe — the source audio is pulled out and sent to Whisper, which returns time-coded segments. Set sourceLanguage to auto and it detects the spoken language for you.
  2. Translate — each segment is translated by a chat model (gpt-4o-mini by default, overridable via translationModel), segment by segment so the timings survive.
  3. Speak — OpenAI TTS renders the translated text in the voice you picked.
  4. Assemble — the generated clips are fitted back to the original segment timings, then muxed onto the source video with ffmpeg. If burnSubtitles is on, the translated lines are rendered into the frame as styled ASS subtitles rather than added as a soft track.

Input

FieldRequiredNotes
videoUrlyesPublic direct URL to the source video (.mp4, .mov, .webm). You host it; nothing is scraped.
openaiApiKeyyesYour own OpenAI key. Used for transcription, translation and TTS. Marked secret in the schema.
targetLanguageno23 options: Spanish, French, German, Italian, Portuguese, Hindi, Arabic, Russian, Japanese, Korean, Chinese, Dutch, Polish, Turkish, Indonesian, Vietnamese, Thai, Swedish, Ukrainian, Romanian, Greek, Hebrew, Filipino. Defaults to es.
sourceLanguagenoISO code, or auto to detect. Default auto.
voicenoalloy, echo, fable, onyx (deep male, default), nova (female), shimmer (female).
burnSubtitlesnoOverlay the translated subtitles onto the video. On by default.
ttsModelnotts-1 (fast, default) or tts-1-hd (higher quality).
translationModelnoChat model used for translation. Default gpt-4o-mini.
baseUrlnoAny OpenAI-compatible base URL, if you route through a proxy or a compatible provider.

Output

One dataset row per run, plus the media in the run's key-value store.

FieldWhat it is
okWhether the dub completed.
videoUrlThe source you passed in.
sourceLanguageThe language actually detected (or the one you forced).
targetLanguage, voiceWhat was produced, echoed back.
segmentsHow many timed speech segments were transcribed, translated and re-voiced.
durationSecondsSource duration, rounded to the second. This is what billing is derived from.
output.mp4KeyKey-value-store key of the finished video, e.g. dubbed-es-1754689200000.mp4.
output.srtKeyKey of the translated .srt, written on every run whether or not subtitles were burned in.
output.mp4UrlDirect URL to the finished MP4 when the store exposes one.
processingSecondsWall-clock time the run took.

Example

{
"videoUrl": "https://example.com/clip.mp4",
"targetLanguage": "es",
"sourceLanguage": "auto",
"voice": "onyx",
"burnSubtitles": true,
"ttsModel": "tts-1",
"openaiApiKey": "sk-..."
}

Pricing

EventWhenPrice
Actor startOnce per run, per GB of run memory$0.0000125
Dubbed minutePer minute of dubbed video$0.12

Minutes are rounded up to the next whole minute, with a one-minute minimum — a 90-second clip is charged as two minutes, $0.24. The dub-minute event fires only after the finished MP4 has been written, so a run that fails partway through costs you the start fee and nothing else.

Run it without a videoUrl or without a key and it returns a single row labelled _sample: true showing the output shape. Sample runs are not charged for dubbed minutes.

Your OpenAI usage is billed separately by OpenAI, on your own key. That covers Whisper, the translation model and TTS.

Notes and limits

  • The voiceover is fitted to the original segment timings. If the target language is much wordier than the source — English into German is the usual offender — pacing on long segments can feel rushed.
  • Burned subtitles are rendered into the pixels and cannot be toggled off in a player. Turn burnSubtitles off and use the .srt from the key-value store if you want a soft track.
  • One video per run. Queue several runs to batch a catalog.
  • The source must be a direct, publicly reachable file URL. Page URLs, playlists and login-gated links will not download.