把中文视频翻成英文,配音还是原说话人的声音
原声配音pyVideoTrans 是 jianchang512 做的开源视频翻译工具,协议 GPL-3.0。一条视频丢进去,它按顺序做完四件事:把人话听写成字幕,交给大模型翻译,用目标语言重新配音,再把字幕和配音合回视频。2023 年 10 月发布,到现在还在更新。
这期要的是原声。配音角色选 clone 时,它按每一句字幕的时间,从原视频里截下那段人声当参考,交给支持克隆的配音模型去念译文。所以中文进去、英文出来,说话的人还是同一个。内置就能用的有 F5-TTS(v4.04 起)和 OmniVoice(v4.05 起)。视频里有好几个人时,打开「识别说话人」,每个人可以配回各自的声音。
它有图形界面、网页界面和命令行。没有现成的 skills 文件,但命令行是现成的,把仓库交给 Codex,让它用 uv 装好再跑命令就行。仓库自带的命令行示例用的是固定音色,要原声必须自己把配音渠道改成 F5-TTS 或 OmniVoice,角色写成 clone。
| 项目 | 说明 |
|---|---|
| 输入 | 本地视频或音频。常见容器如 mp4、mkv、mov,音频如 wav、mp3 |
| 适用类型 | 口播、教程、访谈、播客。要原声时,人声最好清晰、一句不要短过大约 3 秒 |
| 输出 | 目标语言字幕、配音音频,以及合好的新视频。默认写到输出目录,不覆盖原文件 |
| 语言 | 识别和翻译覆盖常见语言。原声方面:F5-TTS 覆盖中英日法和几种欧洲、南亚语言;OmniVoice 官方写的是约 600 种 |
| 规格 | clone 这个角色只在「视频翻译」里有。参考音频建议 3 到 10 秒、人声清楚 |
| 环境 | 建议配置 |
|---|---|
| 操作系统 | Windows 10/11、macOS、Linux |
| 运行环境 | 源码安装用 Python 3.10 和 uv。Windows 也可以直接下整合包,解压后双击 sp.exe,不用自己装 Python |
| 硬件 | 官方没有写最低配置,有无英伟达显卡都能跑。要开 GPU,需要 CUDA 12.8 和 cuDNN 9.11,而且只有 NVIDIA |
| 低配 / 无卡方案 | 没有独显就走 CPU,识别模型换小一号。翻译用在线大模型,本机就不用再跑一个大语言模型 |
| 关键依赖 | FFmpeg 必须在。源码安装在项目目录执行 uv sync。F5-TTS 和 OmniVoice 已经内置,不用再单独部署一套 |
源码路线需要 Python 3.10、uv 和 FFmpeg。uv 按官方安装页装好(地址在文末折叠链接里)。装完在终端确认:
uv --version
ffmpeg -version
在 GitHub 搜索 jianchang512/pyvideotrans,克隆到本机,进入项目目录后执行:
uv sync
uv run sp.py
第一行装依赖,第二行开图形界面。整合包用户跳过这两行,直接双击 sp.exe。
翻译要用大模型。第一次在软件菜单的翻译设置里填一个接口地址和 key,DeepSeek、ChatGPT 以及兼容这套格式的都能用,也可以接本机的 Ollama。配音渠道选 F5-TTS 或 OmniVoice,角色选 clone。命令行对应写法:
uv run cli.py --task vtv --name "talk.mp4" --source_language_code zh-cn --target_language_code en --tts_type 2 --voice_role clone --is_separate
常用参数:
| 参数 | 作用 |
|---|---|
--task vtv | 视频翻译:识别、翻译、配音、合成 |
--source_language_code | 原语言。中文写 zh-cn,不要用自动检测,克隆才稳 |
--target_language_code | 目标语言。英文写 en,日文 ja,韩文 ko |
--tts_type | 配音渠道编号。2 是内置 F5-TTS,3 是内置 OmniVoice。0 是固定音色,不会保留原声 |
--voice_role clone | 用原视频里这一句的人声做参考。只在视频翻译任务里有效 |
--is_separate | 先把人声和背景音乐分开,参考音频更干净 |
--cuda | 有 NVIDIA 显卡并且 CUDA 装好了再加 |
--output-dir | 成片放到指定目录。不写也会进输出目录,不会盖掉原片 |
在放视频的目录里执行。分数不够、人声太杂的素材不要硬塞进同一批,克隆参考会脏。
Get-ChildItem *.mp4 | ForEach-Object { uv run cli.py --task vtv --name $_.FullName --source_language_code zh-cn --target_language_code en --tts_type 2 --voice_role clone --is_separate }
把仓库地址发给 Codex,让它在项目目录执行 uv sync。翻译接口你自己填一次。之后直接说人话:把这个文件夹里的视频都出一份英文版,声音用原声,字幕烧进去,原片别覆盖。它要跑的就是上面那条 cli.py,配音渠道必须是 2 或 3,角色必须是 clone。
| 做法 | 声音变成什么样 |
|---|---|
| 配音渠道用固定音色(编号 0 那类) | 换成预设的另一个人,不是原视频里的说话人 |
| F5-TTS(编号 2)+ clone | 原说话人。v4.04 起内置,覆盖中英日法和几种欧洲、南亚语言 |
| OmniVoice(编号 3)+ clone | 原说话人。v4.05 起内置,官方写支持约 600 种语言 |
命令行示例里的 en-US-GuyNeural 这类名字是固定音色。要原声,--tts_type 用 2 或 3,--voice_role 写 clone。图形界面里配音渠道也要选带「内置」的 F5-TTS 或 OmniVoice,角色下拉里选 clone。
clone 只在主界面的「视频翻译」里出现,单独的「文字配音」没有这项。渠道本身也得在支持克隆的名单里,固定音色渠道不会列出 clone。
视频翻译接受常见的视频和音频。成片默认是带画面的视频;纯音频进去,输出也是装在视频容器里的音轨,需要纯音频再用 FFmpeg 抽出。
官方没有规定最低显存。没有 NVIDIA 显卡就不要加 --cuda,识别模型换成小一号,翻译走在线接口。F5-TTS 吃显存时,可以先换 OmniVoice 或先只出字幕,确认流程通了再开克隆。
克隆要求每一句参考大概 3 到 10 秒,太短会漂。在高级选项里把最短语音调到 3000 毫秒左右,并勾上分离人声和背景声。还差一截就加上 --voice_autorate,让配音语速去贴字幕。
先打开识别说话人。翻译暂停校对时,给每个说话人各自选 clone。不分离说话人的话,参考音频会混进别人的声音。
不会。结果在输出目录(或你用 --output-dir 指定的地方)。跟 Codex 说「原片别覆盖」时,让它只往输出目录写。
仓库里没有现成的 skills。把仓库交给 Codex,让它执行 uv sync,再把第 3 步那条命令的参数讲清楚:中文到英文、--tts_type 2、--voice_role clone、分离人声、不覆盖原片。接口地址和 key 你在软件里填一次就行。
软件本身是 GPL-3.0。用它处理你自己的口播、教程可以。别人的成片有版权,翻之前先确认你有权使用这段声音和画面。调用第三方大模型产生的费用由你自己的接口账户承担。
不要在压缩包里直接运行。整包解压到没有中文、没有空格的路径,例如 D:\pyVideoTrans,再双击里面的 sp.exe。源码安装则在项目目录执行 uv run sp.py。