Skip to main content
A project dubs with one of two models. You name one when you create the project, and the project tells you afterwards what it stored and what it actually uses.

1. Check the language and voices

capability=meaning_first lists the languages with the meaning-first engine, and capabilities.meaning_first_only marks those that have nothing else.
listVoices lists the voices a new project can use. It takes the model, and each voice says whether it works with meaning-first dubbing in meaning_first_compatible.

2. Estimate with the model

The estimate says what you would get. details.dubbing_model is the model that would run, details.text_adaptation says how the auto-dub would voice the text (null when nothing will be dubbed), and a notice dubbing_model_overridden warns when the model is not the one you named, or not v2 when you named none.

3. Create the project

The job echoes the request in params.dubbing_model (null when you named none). Copies from createProjectCopies inherit the model of their source. The project_processing job ends when translation ends. The auto-dub then runs as a dub job of its own, named in result.auto_dub.dub_job_id: wait for it before you read which engine voiced the project.

4. Read it back

A dub job also reports result.engine, result.text_adaptation and result.notices.

When the model differs

These are the allowed fallbacks, in dubbing_model_override_reason: The effective model is v2 only when the project runs meaning-first, its voices can use it and it is not a free dubbing variant. A voice can still change the engine after creation: on a v2 project, giving a speaker a voice with meaning_first_compatible: false sends the next voiceover to the legacy engine, while dubbing_model stays v2. updateSpeakerVoice warns with meaning_first_disabled, and the dub’s result reads engine: legacy with the notice voice_fallback.

Text adaptation

text_adaptation tells you how a dub treats the translation. It decides whether the words you read are the words you hear.

The whole program

dubbing_model.py