Install
openclaw skills install baidu-vod-translate百度智能云VOD视频翻译工具。支持字幕翻译和语音翻译(配音),支持用户上传字幕、自定义字幕样式,支持批量处理文件夹中的视频,处理后可下载到本地或上传到网盘。当用户提及"视频翻译"、"翻译视频"、"把视频翻译成XX语"时触发。
openclaw skills install baidu-vod-translate将视频内容翻译成目标语言,支持字幕翻译和语音翻译(配音)。
禁止直接执行命令!必须按以下流程引导用户:
1. 识别意图 → 判断翻译类型(字幕/语音/两者)
2. 收集参数 → 使用 Question 工具询问用户
3. 确认配置 → 展示参数让用户确认
4. 用户确认 → 才能执行命令
错误示例(禁止):
用户: 帮我翻译这个视频
Agent: [直接执行 python3 translate.py video.mp4 --source zh --target en] ❌
正确示例:
用户: 帮我翻译这个视频
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 1
Agent: 请问您需要哪种翻译方式?
[1] 字幕翻译
[2] 语音翻译(配音)
用户: 1
Agent: 请确认:源语言中文,目标语言英语?
用户: 确认
Agent: [执行命令] ✓
满足以下任一条件时触发:
根据用户描述,识别属于哪种场景:
| 用户描述关键词 | 场景类型 | 推荐配置 |
|---|---|---|
| "翻译成英语"、"翻译成中文" | 字幕翻译 | --subtitle(默认) |
| "配音"、"配音翻译"、"语音翻译" | 语音翻译 | --speech |
| "我有字幕"、"用这个字幕" | 用户字幕 | --subtitle-source user |
| "查任务"、"项目列表" | 任务管理 | --list-tasks/--list-projects |
| "修改字幕"、"替换字幕" | 任务修改 | --update-task |
交互模板:
用户: 帮我翻译这个视频
Agent: 请选择处理方式:
[1] 单个视频 - 处理单个视频文件
[2] 批量处理文件夹 - 处理文件夹中的所有视频
用户: 1 或 2
交互模板:
Agent: 请提供视频文件路径:
用户: /Downloads/video.mp4
交互模板:
Agent: 请提供文件夹路径(将处理该文件夹下所有视频文件):
用户: /Downloads/videos/
Agent: 正在扫描文件夹中的视频文件...
找到 5 个视频文件:
1. video1.mp4
2. video2.mp4
3. video3.mp4
4. video4.mp4
5. video5.mp4
确认处理这些视频吗?
扫描文件夹的实现:
使用 Glob 工具扫描常见视频格式:
Glob: <文件夹路径>/**/*.mp4
Glob: <文件夹路径>/**/*.mkv
Glob: <文件夹路径>/**/*.avi
Glob: <文件夹路径>/**/*.mov
Glob: <文件夹路径>/**/*.webm
交互模板:
Agent: 请问您需要哪种翻译方式?
[1] 字幕翻译 - OCR识别字幕 → 翻译 → 烧录到视频(推荐)
[2] 语音翻译(配音) - 保留原声音色,翻译后配音
[3] 字幕+配音 - 同时进行字幕翻译和配音
用户: 1
询问源语言:
Agent: 请问视频原始语言是什么?
[1] 中文
[2] 英语
[3] 日语
[4] 其他
用户: 1
询问目标语言:
Agent: 请问要翻译成什么语言?
[1] 英语
[2] 日语
[3] 韩语
[4] 其他
用户: 1
如果选择了配音相关选项,额外询问:
Agent: 请选择配音方式:
[1] 音色复刻 - 模仿原声说话(推荐)
[2] AI配音 - 使用指定音色
用户: 1
触发条件:用户说"我有字幕文件"、"用这个字幕"等
交互模板:
用户: 我有字幕文件,帮我翻译视频
Agent: 好的,请提供:
- 视频文件路径:
- 字幕文件路径(SRT格式):
- 字幕是什么语言:
- 要翻译成什么语言:
用户: video.mp4, subs.srt, 中文, 英语
Agent: [执行: --subtitle-source user --subtitle-file subs.srt --source zh --target en]
正在翻译...
收集完参数后,展示配置让用户确认:
单个视频:
Agent: 确认以下配置:
- 视频文件: /Downloads/video.mp4
- 翻译方式: 字幕翻译
- 源语言: 中文
- 目标语言: 英语
- 输出目录: ./output
确认执行吗?
批量处理:
Agent: 确认以下配置:
- 处理模式: 批量处理
- 视频数量: 5 个
- 翻译方式: 字幕翻译
- 源语言: 中文
- 目标语言: 英语
- 输出目录: ./output
确认执行吗?
用户请求
│
├─ 查询任务? ──────────────────────► --list-tasks / --list-projects
│
├─ 删除项目? ──────────────────────► --delete-project
│
├─ 修改任务? ──────────────────────► --update-task
│
└─ 翻译视频?
│
├─ 处理方式?
│ ├─ 单个视频 ──► 获取视频文件路径
│ └─ 批量处理 ──► 获取文件夹路径 → 扫描视频文件 → 展示列表确认
│
├─ 翻译类型?
│ ├─ "翻译字幕" ──► --subtitle
│ ├─ "配音" ──► --speech + 询问配音方式
│ └─ 都要 ──► --subtitle --speech + 询问配音方式
│
├─ 语言?
│ ├─ 源语言 ──► 确认或自动识别
│ └─ 目标语言 ──► 必须明确
│
├─ 字幕来源?(可选)
│ ├─ "有字幕文件" ──► --subtitle-source user
│ ├─ "视频有字幕" ──► --subtitle-source ocr
│ └─ "视频无字幕" ──► --subtitle-source asr
│
└─ 确认执行
│
├─ 来自网盘? ──► 询问是否上传回网盘
│
└─ 执行命令
python3 scripts/translate.py <视频> --source zh --target en
适用场景:大多数视频翻译需求 特点:OCR识别字幕 → 翻译 → 烧录到视频
python3 scripts/translate.py <视频> --source zh --target en --speech
适用场景:需要配音的视频 特点:保留原声音色,翻译后配音
python3 scripts/translate.py video1.mp4 video2.mp4 video3.mp4 --source zh --target en
适用场景:批量翻译多个视频 特点:所有视频使用相同的翻译配置
python3 scripts/translate.py <视频> --source zh --target en \
--subtitle-source user --subtitle-file subs.srt
适用场景:有现成字幕文件 特点:使用用户提供的字幕,翻译更准确
| 用户说法 | 对应语言代码 |
|---|---|
| 中文、国语、普通话 | zh |
| 中文繁体、繁体中文 | zh-TW |
| 英语、英文 | en |
| 日语、日文 | ja |
| 韩语、韩文 | ko |
| 法语、法文 | fr |
| 德语、德文 | de |
| 西班牙语 | es |
| 葡萄牙语 | pt |
| 俄语 | ru |
| 泰语 | th |
| 阿拉伯语 | ar |
Agent: 请问视频原始语言是什么?
[1] 中文
[2] 英语
[3] 日语
[4] 其他
用户: 不确定
Agent: 可以尝试自动识别,或根据视频内容判断。
建议选择最可能的语言,如果翻译效果不好可以重新处理。
Agent: 正在扫描文件夹中的视频文件...
未找到视频文件。请确认文件夹路径正确,且包含以下格式的视频:
.mp4, .mkv, .avi, .mov, .webm
请重新提供文件夹路径:
用户: 我只要翻译后的字幕文件,不要烧录到视频
Agent: 好的,不烧录字幕到视频。
[执行: --no-burn-subtitle]
翻译完成后会提供字幕文件下载链接。
用户: 保留原来的中文字幕,再加英文字幕
Agent: 好的,不擦除原字幕,翻译后会同时显示中英双语字幕。
[执行: --no-erase-subtitle]
export BAIDU_VOD_AK='xxx' && export BAIDU_VOD_SK='xxx' && \
python3 scripts/translate.py <视频路径> --source <源语言> --target <目标语言>
export BAIDU_VOD_AK='xxx' && export BAIDU_VOD_SK='xxx' && \
python3 scripts/translate.py <视频1> <视频2> <视频3> --source <源语言> --target <目标语言>
export BAIDU_VOD_AK='xxx' && export BAIDU_VOD_SK='xxx' && \
python3 scripts/translate.py <视频路径> \
--source <zh|en|ja|...> \
--target <zh|en|ja|...> \
--subtitle \
--speech \
--subtitle-source <ocr|asr|user> \
--subtitle-file <字幕文件> \
--tts-type <VOICE_CLONE|AI_DUB> \
--output-dir <输出目录> \
--upload-netdisk \
--netdisk-dir <网盘目录>
用户: 帮我把 /Downloads/video.mp4 翻译成英语
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 1
Agent: 请问您需要哪种翻译方式?
[1] 字幕翻译(推荐)
[2] 语音翻译(配音)
[3] 字幕+配音
用户: 1
Agent: 请问视频原始语言是什么?
[1] 中文
[2] 英语
[3] 其他
用户: 1
Agent: 确认配置:
- 视频文件: /Downloads/video.mp4
- 翻译方式: 字幕翻译
- 源语言: 中文
- 目标语言: 英语
- 输出目录: ./output
确认执行吗?
用户: 确认
Agent: 正在翻译...
[执行: --source zh --target en]
✓ 处理完成,结果已保存到: ./output/video_en.mp4
用户: 帮我翻译一个文件夹里的所有视频
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 2
Agent: 请提供文件夹路径:
用户: /Downloads/videos/
Agent: 正在扫描文件夹中的视频文件...
找到 3 个视频文件:
1. ep01.mp4
2. ep02.mp4
3. ep03.mp4
请问您需要哪种翻译方式?
[1] 字幕翻译(推荐)
[2] 语音翻译(配音)
[3] 字幕+配音
用户: 1
Agent: 请问视频原始语言是什么?
[1] 中文
[2] 英语
[3] 其他
用户: 1
Agent: 请问要翻译成什么语言?
[1] 英语
[2] 日语
[3] 其他
用户: 1
Agent: 确认配置:
- 处理模式: 批量处理
- 视频数量: 3 个
- 翻译方式: 字幕翻译
- 源语言: 中文
- 目标语言: 英语
- 输出目录: ./output
确认执行吗?
用户: 确认
Agent: 正在批量翻译...
[执行: ep01.mp4 ep02.mp4 ep03.mp4 --source zh --target en]
✓ 全部处理完成
用户: 帮我把这个中文视频配上英语配音
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 1
Agent: 请提供视频文件路径:
用户: /Downloads/movie.mp4
Agent: 请选择配音方式:
[1] 音色复刻 - 模仿原声说话(推荐)
[2] AI配音 - 使用指定音色
用户: 1
Agent: 确认配置:
- 视频文件: /Downloads/movie.mp4
- 翻译方式: 语音翻译(配音)
- 配音方式: 音色复刻
- 源语言: 中文
- 目标语言: 英语
确认执行吗?
用户: 确认
Agent: 正在处理,配音需要较长时间...
[执行: --source zh --target en --speech]
✓ 处理完成
export BAIDU_VOD_AK="your_access_key"
export BAIDU_VOD_SK="your_secret_key"
获取方式:
如需从网盘下载或上传到网盘,需要:
bdpan login 登录--no-wait 参数不等待,稍后查询任务状态