Video Translation
Create a new localized video asset from an existing project video. Treat
speech translation, dubbing, voice preservation, lip synchronization, captions,
quality, authorization, generation, and verification as one workflow.
Lip-synced translation starts with source-transcript review in an editable
ChatCut Widget. The recognized source wording is never treated as final until
the user has edited or approved that form and submitted it. Audio-only
translation keeps the existing direct-submit flow and skips this review.
When to Use
Use this skill when the user wants an existing video to:
- Make its speakers speak another language.
- Produce a dubbed or localized version.
- Preserve the original speakers' vocal identity across languages.
- Synchronize visible mouth movements with translated speech.
- Translate only the spoken audio while keeping the original picture.
- Generate a translated video with optional translated captions.
- Create a language-specific version for another market.
Typical triggering requests include:
- "让视频里这个人说英语。"
- "把中文口播做成英文版,口型也对上。"
- "把这段采访译制成日语,保留每个人的声音。"
- "做一个西班牙语配音版。"
- "只把声音翻译成英语,画面不要变。"
- "把这个中文数字人成片改成英文。"
Route adjacent requests elsewhere:
- Only translate, add, edit, or export captions: use caption translation.
- Translate a script before generating a new avatar video: translate the text,
then use the Digital Human Skill.
- Generate speech with a chosen replacement voice: use the Voice Skill.
- Transcribe spoken content without changing it: use the Transcription Skill.
- Edit pauses, mistakes, framing, or B-roll in talking-head footage: use the
Talking Head Guide.
- Generate new footage rather than localize an existing video: use Video Gen.
Treat these requests as ambiguous:
- "把这个视频翻译成英文。"
- "帮我做一个英文版。"
- "中文改成英语。"
- "做一个海外版。"
- "把这个视频国际化一下。"
For an ambiguous request, ask one treatment question with text choices. Keep
the wording natural for the conversation, and include all applicable paths:
- Lip-sync translation: continue through the editable source-transcript review
and submit with
audioOnly: false or omit audioOnly.
- Audio-only translation: keep the existing direct-submit path and submit with
audioOnly: true.
- Subtitle-only translation: use caption translation and do not submit a video
translation job.
Keep user-facing terminology in one language. These are localized concept names,
not fixed full option sentences; descriptions may stay natural for the context:
| Conversation language |
Lip-sync path |
Audio-only path |
Subtitle-only path |
| Chinese |
口型同步翻译 |
只翻译声音 |
只翻译字幕 |
| English |
Lip-synced translation |
Audio-only translation |
Subtitle-only translation |
| Spanish |
Traducción con sincronización labial |
Traducción solo de audio |
Traducción solo de subtítulos |
The target translation language does not control this copy; the user's
conversation language does. Never append a second-language gloss such as
(lip-sync) to a localized label.
Do not omit lip-sync when the source has a visible speaker. Do not relabel
audio-only translation as generic "AI voice replacement"; choosing a new
synthetic voice is a separate Voice Skill workflow. If the user already stated
one treatment, skip this question and follow that route directly.
Do not submit a paid video-translation job until changing the spoken audio is
explicitly requested or confirmed.
Workflow
Resolve the source video. It must be an imported project video asset;
use the exact asset id from the attachment, selection, or browse_assets.
Local or external media must be imported first.
Resolve the target language as an English language name (for example
"English", "Spanish", "Japanese"). Confirm it when the user only implied a
market ("海外版") rather than a language.
Pick the treatment:
- Lip-sync:
mode: "speed" — translated dubbing that preserves
the speakers' vocal identity, plus synchronized mouth movements. Continue
through the source-transcript review below.
audioOnly: true — translate the audio only and keep the picture
untouched. Use for screen recordings, voice-over footage, or when the user
says the picture must not change. Prefer this for transparent WebM when
preserving the alpha channel matters. Skip steps 4–6 and keep the existing
direct-submit flow; do not require or pass reviewedSourceTranscript.
Prepare the source transcript for lip-sync only. If word-level
transcription is not complete, call trigger_transcript, wait for it with
track_progress, and retry only when it is ready. Call read_script, then
read the matching library/<filename>.md source transcript. Do not use the
editable timeline.md cut as the translation source. Do not substitute
inspect_asset transcript ranges for read_script; the range result may be
partial and is not the canonical complete source transcript.
Render the editable source-text review for lip-sync only. Load the
widget-forms Skill and reuse the same <form-textarea> confirmation pattern
used by the Digital Human Skill. Strip the library's [sN] addresses and
speaker-rendering rows, but keep exactly one recognized transcript segment
per line, in source order. Put that complete text in the textarea's
default; use a localized label that asks the user to check and correct the
recognized original text. Do not expose segment ids, word indices, file
syntax, or timestamps.
Hard preflight before emitting the Widget:
- The field id is exactly
reviewedSourceTranscript.
- The prefill attribute is exactly
default, never default-value,
defaultValue, value, or placeholder.
default contains the actual complete non-empty recognized transcript,
not a placeholder or an omitted value. If the transcript text has not been
read successfully, do not render the Widget; read the canonical library
document first.
- Preserve one recognized source segment per line. Verify that the first and
last non-empty source segments are both present before sending the form.
- In the embedded raw-tag route, apply the
widget-forms XML attribute
escaping rule to the complete transcript before placing it in default.
Never put unescaped recognized text inside the tag.
Embedded ChatCut example (localize visible copy):
请检查识别出的原文,有错字可以直接修改:
<widget>
<form-textarea id="reviewedSourceTranscript" label="请确认并修正原文" rows="12" required="true" default="<recognized source text; one segment per line>"/>
</widget>
Follow widget-forms for the active host rather than emitting raw tags in a
host that does not support the embedded protocol. Do not add a separate
yes/no question or a handwritten submit button. Stop here and wait. Never
submit a translation in the same turn that first presents the Widget.
Use the submitted revision exactly. The Widget submission is explicit
confirmation. Read the complete reviewedSourceTranscript textarea answer
from the user's next message and preserve its wording, punctuation, and
order exactly. Pass through the returned line breaks when present, but do
not reject or rewrite normal line-break edits made inside the textarea; the
tool realigns them to the source timing. Do not paraphrase the text and do
not ask the user to confirm the same text again. If the user replies outside
the Widget with further corrections, reopen the same editable Widget with
those corrections applied rather than reverting to a prose transcript.
Duration behavior. By default the output may run slightly longer or
shorter than the source so the translated speech keeps a natural pace. Pass
keepDuration: true only when the user needs the exact original length
(for example to swap it into an existing timeline slot), and mention that
pacing may sound faster.
Submit with submit_video_translation. For lip-sync, pass
reviewedSourceTranscript as the exact complete textarea value returned in
step 6; the tool combines those reviewed lines with the original segment
timestamps and creates source subtitles. For audioOnly: true, omit
reviewedSourceTranscript and preserve the pre-existing direct-submit path.
The tool shows the user a paid confirmation before the job starts; do not
resubmit after a denial.
Track with track_progress(action="wait") until the translated video
asset lands in the library, then hand it back (place on the timeline only
when asked).
Constraints and cost
- The whole source video is translated and billed by its full duration. To
localize only a section, trim/export that section into its own asset first,
then translate the shorter asset.
- Optional translated captions:
enableCaption: true burns subtitles into the
output video.
- ChatCut always requests preservation of the source resolution and bitrate.
This is best-effort for lip-sync because the picture is re-rendered. A
transparent WebM may become opaque, and 4K or >30 fps media may be
re-encoded. The tool confirmation calls these cases out; never promise that
lip-sync will preserve the container, alpha channel, HDR, codec, bitrate, or
frame rate exactly.
- When the picture must not be lip-synced, choose
audioOnly: true; this avoids
facial re-rendering and is the safest treatment for transparent sources, but
do not promise byte-for-byte container preservation. After completion ChatCut
compares the source and output resolution, frame rate, and alpha pixel format
when media probing is available, and reports detected changes in generation
status.
- Multiple speakers are supported; pass
speakerCount when the user states it.
- For lip-sync, the editable review starts with one source segment per line so
the submitted text can reuse the original word-level timing. Pass the complete
Widget value directly to the tool; do not merge, split, reorder, or silently
normalize it in the conversation layer. Do not invoke this review for
audioOnly: true.
- Indicative cost: ≈ 8 credits per minute of source video.
- Speech is dubbed with voices matched to the original speakers; it is a
translation of the recorded voice, so confirm the user has rights to the
footage and its speakers when the material is clearly someone else's.
- Never reveal or discuss the underlying provider; present this as ChatCut's
AI video translation.
1---2name: video-translation3description: Translate, dub, and localize speech in an existing video while optionally preserving speaker voices, generating translated captions, or synchronizing the speaker's lip movements. Use when the user asks for 视频译制、多语言配音、 把视频里的中文变成英文、让视频里的人说另一种语言、保留原音色、翻译声音、 口型同步、translated video, video dubbing, voice translation, or lip-synced localization, as well as traducción de video, doblaje de video, traducir un video, or sincronización labial. This Skill MUST be loaded before composing treatment choices for an ambiguous video-translation request in any language, including a turn that only asks the user to choose a treatment. Do not use when the user only wants subtitles translated, wants an SRT/VTT file, wants text or a script translated before generating a new avatar video, or wants ordinary TTS with a newly selected voice.4---56# Video Translation78Create a new localized video asset from an existing project video. Treat9speech translation, dubbing, voice preservation, lip synchronization, captions,10quality, authorization, generation, and verification as one workflow.1112Lip-synced translation starts with source-transcript review in an editable13ChatCut Widget. The recognized source wording is never treated as final until14the user has edited or approved that form and submitted it. Audio-only15translation keeps the existing direct-submit flow and skips this review.1617## When to Use1819Use this skill when the user wants an existing video to:2021- Make its speakers speak another language.22- Produce a dubbed or localized version.23- Preserve the original speakers' vocal identity across languages.24- Synchronize visible mouth movements with translated speech.25- Translate only the spoken audio while keeping the original picture.26- Generate a translated video with optional translated captions.27- Create a language-specific version for another market.2829Typical triggering requests include:3031- "让视频里这个人说英语。"32- "把中文口播做成英文版,口型也对上。"33- "把这段采访译制成日语,保留每个人的声音。"34- "做一个西班牙语配音版。"35- "只把声音翻译成英语,画面不要变。"36- "把这个中文数字人成片改成英文。"3738Route adjacent requests elsewhere:3940- Only translate, add, edit, or export captions: use caption translation.41- Translate a script before generating a new avatar video: translate the text,42 then use the Digital Human Skill.43- Generate speech with a chosen replacement voice: use the Voice Skill.44- Transcribe spoken content without changing it: use the Transcription Skill.45- Edit pauses, mistakes, framing, or B-roll in talking-head footage: use the46 Talking Head Guide.47- Generate new footage rather than localize an existing video: use Video Gen.4849Treat these requests as ambiguous:5051- "把这个视频翻译成英文。"52- "帮我做一个英文版。"53- "中文改成英语。"54- "做一个海外版。"55- "把这个视频国际化一下。"5657For an ambiguous request, ask one treatment question with text choices. Keep58the wording natural for the conversation, and include all applicable paths:5960- Lip-sync translation: continue through the editable source-transcript review61 and submit with `audioOnly: false` or omit `audioOnly`.62- Audio-only translation: keep the existing direct-submit path and submit with63 `audioOnly: true`.64- Subtitle-only translation: use caption translation and do not submit a video65 translation job.6667Keep user-facing terminology in one language. These are localized concept names,68not fixed full option sentences; descriptions may stay natural for the context:6970| Conversation language | Lip-sync path | Audio-only path | Subtitle-only path |71| --------------------- | ------------------------------------ | ------------------------ | ----------------------------- |72| Chinese | 口型同步翻译 | 只翻译声音 | 只翻译字幕 |73| English | Lip-synced translation | Audio-only translation | Subtitle-only translation |74| Spanish | Traducción con sincronización labial | Traducción solo de audio | Traducción solo de subtítulos |7576The target translation language does not control this copy; the user's77conversation language does. Never append a second-language gloss such as78`(lip-sync)` to a localized label.7980Do not omit lip-sync when the source has a visible speaker. Do not relabel81audio-only translation as generic "AI voice replacement"; choosing a new82synthetic voice is a separate Voice Skill workflow. If the user already stated83one treatment, skip this question and follow that route directly.8485Do not submit a paid video-translation job until changing the spoken audio is86explicitly requested or confirmed.8788## Workflow89901. **Resolve the source video.** It must be an imported project video asset;91 use the exact asset id from the attachment, selection, or `browse_assets`.92 Local or external media must be imported first.932. **Resolve the target language** as an English language name (for example94 "English", "Spanish", "Japanese"). Confirm it when the user only implied a95 market ("海外版") rather than a language.963. **Pick the treatment:**97 - Lip-sync: `mode: "speed"` — translated dubbing that preserves98 the speakers' vocal identity, plus synchronized mouth movements. Continue99 through the source-transcript review below.100 - `audioOnly: true` — translate the audio only and keep the picture101 untouched. Use for screen recordings, voice-over footage, or when the user102 says the picture must not change. Prefer this for transparent WebM when103 preserving the alpha channel matters. **Skip steps 4–6 and keep the existing104 direct-submit flow; do not require or pass `reviewedSourceTranscript`.**1054. **Prepare the source transcript for lip-sync only.** If word-level106 transcription is not complete, call `trigger_transcript`, wait for it with107 `track_progress`, and retry only when it is ready. Call `read_script`, then108 read the matching `library/<filename>.md` source transcript. Do not use the109 editable `timeline.md` cut as the translation source. **Do not substitute110 `inspect_asset` transcript ranges for `read_script`; the range result may be111 partial and is not the canonical complete source transcript.**1125. **Render the editable source-text review for lip-sync only.** Load the113 `widget-forms` Skill and reuse the same `<form-textarea>` confirmation pattern114 used by the Digital Human Skill. Strip the library's `[sN]` addresses and115 speaker-rendering rows, but keep **exactly one recognized transcript segment116 per line**, in source order. Put that complete text in the textarea's117 `default`; use a localized label that asks the user to check and correct the118 recognized original text. Do not expose segment ids, word indices, file119 syntax, or timestamps.120121 Hard preflight before emitting the Widget:122 - The field id is exactly `reviewedSourceTranscript`.123 - The prefill attribute is exactly `default`, never `default-value`,124 `defaultValue`, `value`, or `placeholder`.125 - `default` contains the actual complete non-empty recognized transcript,126 not a placeholder or an omitted value. If the transcript text has not been127 read successfully, do not render the Widget; read the canonical library128 document first.129 - Preserve one recognized source segment per line. Verify that the first and130 last non-empty source segments are both present before sending the form.131 - In the embedded raw-tag route, apply the `widget-forms` XML attribute132 escaping rule to the complete transcript before placing it in `default`.133 Never put unescaped recognized text inside the tag.134135 Embedded ChatCut example (localize visible copy):136137 ```text138 请检查识别出的原文,有错字可以直接修改:139140 <widget>141 <form-textarea id="reviewedSourceTranscript" label="请确认并修正原文" rows="12" required="true" default="<recognized source text; one segment per line>"/>142 </widget>143 ```144145 Follow `widget-forms` for the active host rather than emitting raw tags in a146 host that does not support the embedded protocol. Do not add a separate147 yes/no question or a handwritten submit button. **Stop here and wait. Never148 submit a translation in the same turn that first presents the Widget.**1491506. **Use the submitted revision exactly.** The Widget submission is explicit151 confirmation. Read the complete `reviewedSourceTranscript` textarea answer152 from the user's next message and preserve its wording, punctuation, and153 order exactly. Pass through the returned line breaks when present, but do154 not reject or rewrite normal line-break edits made inside the textarea; the155 tool realigns them to the source timing. Do not paraphrase the text and do156 not ask the user to confirm the same text again. If the user replies outside157 the Widget with further corrections, reopen the same editable Widget with158 those corrections applied rather than reverting to a prose transcript.1597. **Duration behavior.** By default the output may run slightly longer or160 shorter than the source so the translated speech keeps a natural pace. Pass161 `keepDuration: true` only when the user needs the exact original length162 (for example to swap it into an existing timeline slot), and mention that163 pacing may sound faster.1648. **Submit** with `submit_video_translation`. For lip-sync, pass165 `reviewedSourceTranscript` as the exact complete textarea value returned in166 step 6; the tool combines those reviewed lines with the original segment167 timestamps and creates source subtitles. For `audioOnly: true`, omit168 `reviewedSourceTranscript` and preserve the pre-existing direct-submit path.169 The tool shows the user a paid confirmation before the job starts; do not170 resubmit after a denial.1719. **Track** with `track_progress(action="wait")` until the translated video172 asset lands in the library, then hand it back (place on the timeline only173 when asked).174175## Constraints and cost176177- The whole source video is translated and billed by its full duration. To178 localize only a section, trim/export that section into its own asset first,179 then translate the shorter asset.180- Optional translated captions: `enableCaption: true` burns subtitles into the181 output video.182- ChatCut always requests preservation of the source resolution and bitrate.183 This is best-effort for lip-sync because the picture is re-rendered. A184 transparent WebM may become opaque, and 4K or >30 fps media may be185 re-encoded. The tool confirmation calls these cases out; never promise that186 lip-sync will preserve the container, alpha channel, HDR, codec, bitrate, or187 frame rate exactly.188- When the picture must not be lip-synced, choose `audioOnly: true`; this avoids189 facial re-rendering and is the safest treatment for transparent sources, but190 do not promise byte-for-byte container preservation. After completion ChatCut191 compares the source and output resolution, frame rate, and alpha pixel format192 when media probing is available, and reports detected changes in generation193 status.194- Multiple speakers are supported; pass `speakerCount` when the user states it.195- For lip-sync, the editable review starts with one source segment per line so196 the submitted text can reuse the original word-level timing. Pass the complete197 Widget value directly to the tool; do not merge, split, reorder, or silently198 normalize it in the conversation layer. Do not invoke this review for199 `audioOnly: true`.200- Indicative cost: ≈ 8 credits per minute of source video.201- Speech is dubbed with voices matched to the original speakers; it is a202 translation of the recorded voice, so confirm the user has rights to the203 footage and its speakers when the material is clearly someone else's.204- Never reveal or discuss the underlying provider; present this as ChatCut's205 AI video translation.