End to End Dubbing
Initiate a full end to end dubbing task.
The Dubbing Process
When you submit a dubbing request, our system begins a multi-stage workflow:Project Setup
Translation
Voiceover Generation
Final Assembly
/dub/{task_id} endpoint with the task_id provided in your initial response.
Compatible Media Sources
Our dubbing service accommodates various media sources to fit your workflow needs. Thevideo_url parameter in your request can point to any of the following:
Online Platforms
Use content directly from popular content platforms:- YouTube videos: Simply provide the standard YouTube video URL.
- Google Drive: Link to media files stored in Google Drive (ensure they’re publicly accessible).
- Direct URLs: Any direct link to a media file that doesn’t require authentication.
Supported File Formats
Our system processes a wide range of professional and consumer media formats:Language Configuration
Specifying the right languages is crucial for successful dubbing. Your request needs to include:- Source Language: The original language spoken in your media.
- Target Language(s): The language(s) you want your content to be dubbed into.
- Query the
/source-languagesendpoint for available source language options. - Check the
/target-languagesendpoint for supported target languages.
Transcription Mode
The optionaltranscription_mode request field controls the transcription pass used before dubbing:
fast(default): returns a transcript more quickly while maintaining quality.slow: takes longer and may produce a more accurate transcript through a more thorough pass.
fast.
Keeping Music in the Foreground
The optionalinclude_music_in_fg parameter controls how background music is handled during source separation:
true(default): music is preserved in the foreground audio alongside speech.false: music is stripped out of the foreground, isolating speech.
Creating Your First Dubbing request
Let’s look at how to initiate a dubbing task with Python:Monitoring Your Dubbing Progress
After submission, your content enters our processing pipeline. The time required depends on the length and complexity of your media. You can check progress by polling the status endpoint:Use Your Own Transcript or Translation
You can include SRT file contents directly in the JSON body ofPOST /dub:
source_transcript: an optional transcript insource_language.target_transcripts: optional translations, each with alanguagematching one of your requested target languages. Supply at most one SRT per language.
content containing the SRT text and an optional format, whose
only supported value is srt. Read the file as UTF-8; do not send a filename, URL,
base64 string, multipart upload, or an array of segments.
source_transcript, only
target_transcripts, or neither. If you have the original transcript, include it
alongside your translations to provide source-language context. Requests without
these fields retain the existing automatic workflow. The task ID, polling, and
result endpoints are unchanged.
The API stores supplied scripts as temporary .srt objects under temp/ in your
workspace’s configured storage before passing them to the dubbing pipeline.
An SRT content string looks like this in JSON:
Validation and limits
- Maximum 2 MiB of UTF-8 text per script; 10 MiB combined across the original and translations, with at most 100 target scripts.
- Scripts must contain at least one cue parseable by the
srtlibrary. Standard SRT usesHH:MM:SS,mmm --> HH:MM:SS,mmmand blank lines between cues. Parsing uses thesrtlibrary with parse errors enabled; its supported variations, including dot-separated milliseconds, are also accepted. - Overlapping and out-of-order cues are accepted. No additional cue-count, numbering, timing, control-character, or dialogue-content checks are imposed beyond the parser. UTF-8 BOM and Windows/Mac line endings are normalized.
- Target scripts must use supported languages selected in
target_languages(or the legacytarget_language). Language aliases are normalized before checking for duplicates. Unknown properties inside a script are rejected.
SRT content could not be parsed; check cue numbers and timestamps.
Use timestamps relative to the original media and scripts that match that media.
Request validation checks SRT structure; it does not download the media to check
its duration or verify the language of your text. Supplied scripts use the existing
dubbing pipeline’s timing and speech processing; this option does not introduce
an exact-wording or exact-timing output mode.
Best Practices for Optimal Results
To get the most from our dubbing service, consider these professional tips:- Source Quality Matters: Higher quality original media yields better dubbing results.
- Language Selection: Choose the right language for your audience to ensure clarity and authenticity.
Practical Applications
Our end-to-end dubbing functionality opens exciting possibilities across industries:- E-Learning: Make educational content accessible to global learners.
- Marketing: Localize promotional videos for international markets.
- Entertainment: Bring films and shows to new language audiences.
- Corporate Communications: Ensure company messages reach multilingual teams.
- Social Media: Expand your content’s reach across language barriers.
Authorizations
The x-api-key is a custom header required for authenticating requests to our API. Include this header in your request with the appropriate API key value to securely access our endpoints. You can find your API key(s) in the 'API' section of our studio website.
Body
The language of the input text. Pass a locale tag (en-us, fr-fr, es-es). Numeric language IDs (1 or "1") still work but are deprecated. See all source languages.
"en-us"
Optional original-language SRT contents. Send the file text in JSON, not a file path or URL.
Optional translated SRTs, one per requested target language. Languages must be unique after normalization. Source and target SRT contents must not exceed 10 MiB UTF-8 combined.
100The URL of the media file to be used to create the end-to-end dubbing task.
null
Languages to generate output in. Pass locale tags (es-es, fr-fr, de-de). Numeric language IDs still work but are deprecated. See all target languages.
Enter a distinctive name for your project that reflects its purpose or content. This name will be displayed in your CAMB.AI workspace dashboard and used to organize related assets, transcriptions, etc.. . Choose something memorable that helps you quickly identify this specific project among your other voice, audio and localization tasks.
3 - 255null
Provide details about your project's goals and specifications. Include information such as the target languages for translation or dubbing, desired voice characteristics, emotional tones to capture, or specific audio processing requirements, outlining the workflow here can serve as valuable documentation for organizational purposes.
3 - 5000null
Optional array of one or two zero‑based audio track indices to dub. Only supported for MXF files. If omitted, the first audio track (index 0) is used by default.
1 - 2 elementsOptional flag to append the dubbed audio as a new audio track in the output file. Only supported for MXF files. If true, the dubbed audio is added as an additional track; if false or omitted, the source would be returned with only dubbed audio.
An optional list of dictionary IDs selected by the user. Each entry must be an integer corresponding to a valid dictionary ID. If provided, at least one ID is required.
1The target output language. Pass a locale tag (fr-fr, es-es, de-de). Numeric language IDs still work but are deprecated. See all target languages.
"fr-fr"
Transcription mode. fast (default) is quicker; slow takes longer and may produce a more accurate transcript.
fast, slow Keep music in the foreground audio during source separation. When true (default), background music is preserved alongside speech; set to false to strip music out of the foreground.
true
Response
Successful Response
A JSON that contains the unique identifier for the task. This is used to query the status of the end to end dubbing task that is running. It is returned when a create request is made for a dub