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

AI Video Dubber - Translate & Re-Voice a Video

Pricing

from $114.00 / 1,000 dubbed minutes

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

AI Video Dubber - Translate & Re-Voice a Video

Dub a video you host into one of 23 languages. It transcribes the speech, translates it and lays an AI voice over the picture, timed to the original lines, with a translated SRT. Runs on your own OpenAI key. $120.00 per 1,000 minutes of video ($0.12 a minute, rounded up).

Pricing

from $114.00 / 1,000 dubbed minutes

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

1

Monthly active users

4 days ago

Last modified

Share

Dub a video into another language with an AI voice timed to the original lines: give it a direct link to a video you host, pick one of 23 languages, and you get back a dubbed MP4 and a translated SRT.

Two things to be clear about. It runs on your own OpenAI key, so the transcription, the translation and the voice all land on your OpenAI bill on top of the charge here. And the original audio is gone: this is a replacement voice track, not a mix, and there is no voice cloning and no lip sync.

InputA direct link to a video file you host
OutputOne dubbed MP4, a translated SRT, and one row describing them
CeilingOne video and one language per run. Sources past roughly 13 minutes of audio are likely to fail
Account neededYour own OpenAI API key
Price$120.00 per 1,000 minutes of source video, so $0.12 a minute, rounded up, on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 40 minutes. OpenAI bills your key separately

🔍 What AI Video Dubber does

It downloads your file, pulls the audio out and sends it for transcription with timestamps, so every line of speech comes back with a start and an end.

Those lines are translated in one pass, which keeps them consistent with each other rather than translating each in isolation. Then each translated line is spoken separately and dropped back at the timestamp its original sat on, so the dub follows the picture instead of drifting.

Where a translated line runs longer than the gap it has to fit into, it is sped up to make room, up to three times. Past that it will not compress any further, and the next line starts while it is still speaking.

23 languages: Spanish, French, German, Italian, Portuguese, Hindi, Arabic, Russian, Japanese, Korean, Chinese, Dutch, Polish, Turkish, Indonesian, Vietnamese, Thai, Swedish, Ukrainian, Romanian, Greek, Hebrew and Filipino.

📋 What data you get from each dubbed video

What you getField
The dubbed MP4, saved in the run's key-value store, and a direct link to itoutput.mp4Key, output.mp4Url
The translated subtitles as an SRT file, in the same storeoutput.srtKey
The language that was spoken, as detected or as you set itsourceLanguage
The language and the voice of the dubtargetLanguage, voice
How many lines of speech were found and voicedsegments
The length of the source video in seconds, which the charge is worked out fromdurationSeconds
How long the run tookprocessingSeconds
The link you gave itvideoUrl

▶️ How to dub a video into another language

  1. Put your video somewhere with a direct download link. This does not fetch from video sites.
  2. Open AI Video Dubber and click Try for free.
  3. Paste your key into OpenAI API key (BYO) and your link into Video URL.
  4. Pick Target language and Voice, and decide on Burn translated subtitles.
  5. Click Start, then take the MP4 and the SRT from the run's Storage tab.

Start it without a key and you get the free sample row instead, which shows the shape.

💰 How much does it cost to dub a video?

$0.12 per minute of source video on the Free plan, $0.118 on Starter, $0.116 on Scale and $0.114 on Business. Minutes are rounded up, so a 20-second clip counts as one and a 3-minute-10-second one as four. On the free plan, the $5 Apify gives you each month covers about 40 minutes.

A run that fails delivers no video and is not charged for one, and the sample row is free. Set a maximum cost on the run that cannot pay for the whole video, and it stops before dubbing anything and tells you what the video would have cost.

OpenAI bills your own key separately for the transcription, the translation and every line of speech, and tts-1-hd costs you more there than tts-1.

📥 What you give it

{
"videoUrl": "https://yourdomain.com/clips/interview.mp4",
"targetLanguage": "es",
"voice": "onyx",
"burnSubtitles": true
}
FieldDefaultWhat it is
videoUrlnoneA public direct link to an .mp4, .mov or .webm. You host the file. The form prefills an example.com address, which is a placeholder, not a default: leave it there with a key set and the run fails on a missing file.
targetLanguageesThe language to dub into, as a code from the list above.
sourceLanguageautoThe spoken language of the original. Leave it on auto unless detection gets it wrong.
voiceonyxalloy, echo, fable, onyx, nova or shimmer. onyx is the deep male one, nova and shimmer are female.
burnSubtitlestrueOverlays the translated subtitles on the picture. That means re-encoding the video, so it is slower. Turn it off and the picture is copied untouched.
openaiApiKeynoneYour own OpenAI key, used for all three steps. Marked secret.
ttsModeltts-1tts-1 is quick, tts-1-hd sounds better and costs you more on your own bill.
translationModelgpt-4o-miniThe chat model that does the translating. Any model name that works on your host.
baseUrlnoneAdvanced. Any OpenAI-compatible host. Empty means https://api.openai.com/v1.

📤 What you get back

One row, and two files in the run's key-value store: dubbed-es-1786411663909.mp4 and subtitles-es-1786411663909.srt, with the language code in the name.

No run on record has delivered a dub with a customer's key, so rather than type out a plausible row, here is the real sample row a keyless run wrote on 2 October 2026. A delivered row has the same fields with real numbers, the three output values filled in, and no _sample, _notice or reason.

{
"ok": true,
"_sample": true,
"_notice": "SAMPLE OUTPUT - provide a public \"videoUrl\" and \"openaiApiKey\" for a real dubbed video.",
"reason": "missing_api_key",
"videoUrl": "https://example.com/video.mp4",
"sourceLanguage": "auto",
"targetLanguage": "es",
"voice": "onyx",
"segments": 2,
"durationSeconds": 12,
"output": {
"mp4Key": null,
"srtKey": null,
"mp4Url": null
},
"processingSeconds": 0
}
FieldHow to read it
segments, durationSecondsOn a delivered dub, the lines voiced and the source length. On the sample row they are fixed placeholders, not measurements.
durationSecondsThe source video's length, rounded. The charge is worked out from this, rounded up to whole minutes.
output.mp4UrlA direct link to the dubbed file. mp4Key and srtKey are the file names in the store.
sourceLanguageWhat the speech was detected as, or what you set.

🧾 Reading the output

Three kinds of row can appear, and two of them look alike in the table, which is the thing to watch.

RowHow to spot itBilled
A finished dubok: true and a file name in output.mp4Keyyes
The sample row_sample: true, a reason, and empty output valuesno
A stop at your cost limitok: false, _diagnostic: true, reason: "max_cost_reached"no

The sample row carries ok: true, so the Overview table will not tell it apart from a real result. Check _sample or output.mp4Key before you trust a row.

ReasonWhat it means
missing_video_urlSample row: no Video URL was given.
missing_api_keySample row: no OpenAI key was given.
max_cost_reachedThe maximum cost set for the run could not pay for the whole video, so nothing was dubbed. message says what it would have cost.

If anything else in the chain fails, the run stops and is marked failed. There is no partial row and no charge for a dub that was never made. The log names the step: the download, the transcription, the translation or the voice.

When the translation comes back with fewer lines than there were segments, the gaps are filled with the original text, so those lines get spoken in the source language by the dubbing voice. Listen through before you publish.

In the Overview table, output shows as a nested object rather than a link, so open the row or go to the run's Storage tab to get the file.

💡 What people use it for

  • Putting an existing channel's back catalogue into a second language without re-recording anything.
  • Course and training video localisation, where the SRT matters as much as the audio.
  • Ads and product clips that need a Spanish or Arabic cut for one campaign.
  • Getting a rough dub in front of a client to decide whether a proper voice session is worth booking.

Your own YouTube video in a second language, in two runs:

  1. Run YouTube Downloader Pro on the video and copy mediaUrl from its row.
  2. Paste that link into Video URL here, pick the Target language and start it.

🚧 What it does not do

  • No voice cloning and no lip sync. One of six stock voices reads the whole thing, and mouths will not match.
  • The original audio is replaced, not mixed underneath. Music and effects that were on the original track go with it.
  • Keep sources short. The whole soundtrack goes up for transcription in one piece, so anything past roughly 13 minutes of audio is likely to fail at that step.
  • One language and one video per run. Dubbing into three languages is three runs.
  • It does not fetch from video sites. A direct file link to something you host, nothing else.
  • A line that will not fit can overlap the next one. Speed-fitting stops at three times, and after that two voices can be heard together for a moment.
  • No speech, no dub. A video with no audio track, or with nothing spoken in it, stops the run.
  • It is not an official tool of any platform or company named on this page. Dami's Studio is independent and is not affiliated with or endorsed by any of them.

🧭 Which AI video actor do you need?

If you wantUse
A video re-voiced in another languageThis one
Subtitles translated without touching the audioSubtitle Translator
A plain transcript of what was saidVideo & Audio Transcriber
Word by word captions burned on your own videoAuto Caption Burner
A voiceover from text, with no video involvedAI Text to Speech Voiceover
Your own YouTube video as a file link you can dubYouTube Downloader Pro

❓ Questions people ask

Do I need my own OpenAI key to dub a video?

Yes. Without it you get the sample row rather than a dub.

Can I keep the original audio underneath the dub?

No. The dub replaces the audio track.

Will the dub sound like the original speaker?

No. It is one of six stock voices, picked by you.

How long does dubbing a video take?

It depends on how many lines of speech there are, since each is voiced one at a time, and burning subtitles adds a full re-encode on top.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/ai-video-dubber. Either way the run happens on your Apify account at the same price, and OpenAI bills your key as usual.

🆘 If something breaks

Open the Issues tab on the actor page. Include the run ID and your source link, and say which step the log stopped at, since that usually points straight at the cause.