PyVideoTrans 使用教程

把中文视频翻成英文,配音还是原说话人的声音

原声配音

📖 项目简介

pyVideoTrans 是 jianchang512 做的开源视频翻译工具,协议 GPL-3.0。一条视频丢进去,它按顺序做完四件事:把人话听写成字幕,交给大模型翻译,用目标语言重新配音,再把字幕和配音合回视频。2023 年 10 月发布,到现在还在更新。

这期要的是原声。配音角色选 clone 时,它按每一句字幕的时间,从原视频里截下那段人声当参考,交给支持克隆的配音模型去念译文。所以中文进去、英文出来,说话的人还是同一个。内置就能用的有 F5-TTS(v4.04 起)和 OmniVoice(v4.05 起)。视频里有好几个人时,打开「识别说话人」,每个人可以配回各自的声音。

它有图形界面、网页界面和命令行。没有现成的 skills 文件,但命令行是现成的,把仓库交给 Codex,让它用 uv 装好再跑命令就行。仓库自带的命令行示例用的是固定音色,要原声必须自己把配音渠道改成 F5-TTS 或 OmniVoice,角色写成 clone。

✨ 核心亮点

🎙️
原声克隆
角色选 clone,按每句字幕截原视频人声当参考,译文还是原来那个人的声音。
📝
整段翻译
字幕先整段交给大模型,前后文连着看,专有名词不容易一句一个译法。
👥
多人各配各的
打开识别说话人之后,可以为每个说话人单独指定 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 已经内置,不用再单独部署一套

🚀 如何使用

💡
Windows 想最快看到界面:去 Releases 下整合包,解压到没有中文、没有空格的路径,双击 sp.exe。要交给 Codex 批跑,用下面的源码安装。
1

装 uv 和 FFmpeg

源码路线需要 Python 3.10、uv 和 FFmpeg。uv 按官方安装页装好(地址在文末折叠链接里)。装完在终端确认:

bash uv --version
ffmpeg -version
2

下载并安装

在 GitHub 搜索 jianchang512/pyvideotrans,克隆到本机,进入项目目录后执行:

bash uv sync
uv run sp.py

第一行装依赖,第二行开图形界面。整合包用户跳过这两行,直接双击 sp.exe。

3

一条视频出英文原声版

翻译要用大模型。第一次在软件菜单的翻译设置里填一个接口地址和 key,DeepSeek、ChatGPT 以及兼容这套格式的都能用,也可以接本机的 Ollama。配音渠道选 F5-TTS 或 OmniVoice,角色选 clone。命令行对应写法:

bash 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成片放到指定目录。不写也会进输出目录,不会盖掉原片
4

一个文件夹批量出英文版

在放视频的目录里执行。分数不够、人声太杂的素材不要硬塞进同一批,克隆参考会脏。

powershell 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 }
5

结合 Codex 使用

把仓库地址发给 Codex,让它在项目目录执行 uv sync。翻译接口你自己填一次。之后直接说人话:把这个文件夹里的视频都出一份英文版,声音用原声,字幕烧进去,原片别覆盖。它要跑的就是上面那条 cli.py,配音渠道必须是 2 或 3,角色必须是 clone。

✅
成片在输出目录里,原视频还在。先听一两句,音色不像再查人声是否被背景音乐盖住。

🎯 典型应用场景

🎙️
口播出英文版
一条中文口播,字幕和配音一起换成英文,声音还是自己的。
📚
教程对外发
软件教程、课程录屏翻成英文或日文,不用重录一遍。
🎤
访谈保留每个人
打开说话人识别,主持人和嘉宾各配回各的音色。
🎧
播客出外语版
一整期音频也能走同一条流程,输出带配音的成片。
📝
只要字幕
配音角色留空就不配音,只出听写和翻译后的字幕。
🤖
交给 Codex 批跑
文件夹里的成片用同一句人话出外语版,原片不覆盖。

📈 和固定音色比

做法声音变成什么样
配音渠道用固定音色(编号 0 那类)换成预设的另一个人,不是原视频里的说话人
F5-TTS(编号 2)+ clone原说话人。v4.04 起内置,覆盖中英日法和几种欧洲、南亚语言
OmniVoice(编号 3)+ clone原说话人。v4.05 起内置,官方写支持约 600 种语言
🧠
原声不是把整段录音变速。它是按字幕时间把原人声裁成一句句参考,连同译文一起送给克隆模型,再对齐时间轴合回去。人声和背景先分开,参考里才不会带上音乐。

❓ 常见问题

Q: 为什么配出来是另一个人的声音?

命令行示例里的 en-US-GuyNeural 这类名字是固定音色。要原声,--tts_type 用 2 或 3,--voice_role 写 clone。图形界面里配音渠道也要选带「内置」的 F5-TTS 或 OmniVoice,角色下拉里选 clone。

Q: 下拉列表里没有 clone?

clone 只在主界面的「视频翻译」里出现,单独的「文字配音」没有这项。渠道本身也得在支持克隆的名单里,固定音色渠道不会列出 clone。

Q: 支持哪些文件?

视频翻译接受常见的视频和音频。成片默认是带画面的视频;纯音频进去,输出也是装在视频容器里的音轨,需要纯音频再用 FFmpeg 抽出。

Q: 显存不够、跑不动怎么办?

官方没有规定最低显存。没有 NVIDIA 显卡就不要加 --cuda,识别模型换成小一号,翻译走在线接口。F5-TTS 吃显存时,可以先换 OmniVoice 或先只出字幕,确认流程通了再开克隆。

Q: 音色像,但和口型、时间对不齐?

克隆要求每一句参考大概 3 到 10 秒,太短会漂。在高级选项里把最短语音调到 3000 毫秒左右,并勾上分离人声和背景声。还差一截就加上 --voice_autorate,让配音语速去贴字幕。

Q: 好几个人说话,全变成同一种声音?

先打开识别说话人。翻译暂停校对时,给每个说话人各自选 clone。不分离说话人的话,参考音频会混进别人的声音。

Q: 原视频会被覆盖吗?

不会。结果在输出目录(或你用 --output-dir 指定的地方)。跟 Codex 说「原片别覆盖」时,让它只往输出目录写。

Q: 怎么和 Codex 配合?

仓库里没有现成的 skills。把仓库交给 Codex,让它执行 uv sync,再把第 3 步那条命令的参数讲清楚:中文到英文、--tts_type 2、--voice_role clone、分离人声、不覆盖原片。接口地址和 key 你在软件里填一次就行。

Q: 可以拿去做商业视频吗?

软件本身是 GPL-3.0。用它处理你自己的口播、教程可以。别人的成片有版权,翻之前先确认你有权使用这段声音和画面。调用第三方大模型产生的费用由你自己的接口账户承担。

Q: Windows 双击没反应,或解压后打不开?

不要在压缩包里直接运行。整包解压到没有中文、没有空格的路径,例如 D:\pyVideoTrans,再双击里面的 sp.exe。源码安装则在项目目录执行 uv run sp.py。