AI Video Dubber
Dub any video into another language: transcribe, translate, AI voice-over timed to the original, plus optional translated subtitles.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
videoUrl,targetLanguage,sourceLanguage(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.12 per dubbed minute = $120 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Dubbed minute | Per minute of dubbed/translated video. | $0.12 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.0000125 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-08, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
videoUrl | Public direct URL to the source video (.mp4/.mov/.webm). You host it; nothing is scraped. | string |
targetLanguage | Language to dub into (ISO-639-1: es, fr, de, hi, ar, pt, ja, zh, …). | string |
sourceLanguage | Spoken language of the source, or 'auto' to detect. | string |
voice | AI voice for the dub (OpenAI TTS voices). | string |
burnSubtitles | Overlay the translated subtitles onto the video. | boolean |
openaiApiKey | Your OpenAI key — used for transcription (Whisper), translation, and TTS. Kept private. | string |
ttsModel | OpenAI TTS model: tts-1 (fast) or tts-1-hd (higher quality). | string |
translationModel | Chat model for translation. Default gpt-4o-mini. | string |
baseUrl | OpenAI-compatible base URL for all calls. Default https://api.openai.com/v1. | string |
What you get
A structured dataset — each result includes fields like:
oksourceLanguagetargetLanguagevoicesegmentsdurationSecondsoutputExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in AI Video & Content Studio
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Auto Caption Burner
Burn word-by-word animated captions into any video. 5 viral presets, no watermark, transcript and word timings included.
Storyboard Video Generator
Turn images or a story into a Ken Burns slideshow video with pan-and-zoom motion, optional audio and 9:16, 16:9 or 1:1 output.
Story to Script Rewriter
Turn any story, article or Reddit post into a short-form video script: a strong hook, tight narration, a title and alternate hooks.
Subtitle Translator
Translate SRT and VTT subtitles into many languages in one run, or transcribe a video first. Timings preserved exactly. $0.05 per language, flat rate.
AI Thumbnail Generator
Generate scroll-stopping thumbnails with AI: a dramatic close-up face plus a bold hook headline in 9:16, 16:9 or 1:1. For YouTube, Shorts, Reels and ads.
Social Metadata Generator
Generate platform-ready titles, captions, hashtags, SEO tags and a pinned comment for YouTube, TikTok, Reels, Shorts and X.
Where this tool sits
- Categories
- AI Video & Content Studio
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
| Field | Required | Notes |
|---|---|---|
videoUrl | yes | Public direct URL to the source video (.mp4, .mov, .webm). You host it; nothing is scraped. |
openaiApiKey | yes | Your own OpenAI key. Used for transcription, translation and TTS. Marked secret in the schema. |
targetLanguage | no | 23 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. |
sourceLanguage | no | ISO code, or auto to detect. Default auto. |
voice | no | alloy, echo, fable, onyx (deep male, default), nova (female), shimmer (female). |
burnSubtitles | no | Overlay the translated subtitles onto the video. On by default. |
ttsModel | no | tts-1 (fast, default) or tts-1-hd (higher quality). |
translationModel | no | Chat model used for translation. Default gpt-4o-mini. |
baseUrl | no | Any 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.
| Field | What it is |
|---|---|
ok | Whether the dub completed. |
videoUrl | The source you passed in. |
sourceLanguage | The language actually detected (or the one you forced). |
targetLanguage, voice | What was produced, echoed back. |
segments | How many timed speech segments were transcribed, translated and re-voiced. |
durationSeconds | Source duration, rounded to the second. This is what billing is derived from. |
output.mp4Key | Key-value-store key of the finished video, e.g. dubbed-es-1754689200000.mp4. |
output.srtKey | Key of the translated .srt, written on every run whether or not subtitles were burned in. |
output.mp4Url | Direct URL to the finished MP4 when the store exposes one. |
processingSeconds | Wall-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
| Event | When | Price |
|---|---|---|
| Actor start | Once per run, per GB of run memory | $0.0000125 |
| Dubbed minute | Per 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
burnSubtitlesoff and use the.srtfrom 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.