本文由 莫潇羽@源码七号站(www.fuyuan7.com) 撰写,转载请注明出处。
快速摘要
先把核心结论摆出来,方便只想看答案的朋友:
- pyVideoTrans 是一款 GPL-v3 协议的开源工具,GitHub 已经攒到 17.6K Star,目标是把"外文视频→中文配音+字幕的新视频"这件事变成一键操作。
- 核心是一条四阶段流水线:语音识别(ASR)→字幕翻译→语音合成(TTS)→音视频合成,每个阶段都能单独使用,也都能暂停手动校对。
- 它最让人眼前一亮的能力是声音克隆,只要丢给它一小段原说话人的音频,就能用相同音色生成另一种语言的配音,F5-TTS、CosyVoice、GPT-SoVITS 这些主流方案都接通了。
- 支持的模型与 API 极其丰富:语音识别从本地 Faster-Whisper 到在线 Qwen、Whisper API、Azure 都可以;字幕翻译能接 DeepSeek、ChatGPT、Claude、Gemini、Ollama 本地大模型;配音能接 Edge-TTS、Azure、Minimaxi、OpenAI 等十多家。
- Windows 用户直接下载预打包版双击运行,macOS/Linux 用户走源码 + uv 部署,有 NVIDIA 显卡可以装 CUDA 版 PyTorch 拉满推理速度。
- 除了完整翻译,它还能拆开当独立工具用:批量音视频转字幕、SRT 字幕翻译、文稿对齐打轴、实时语音转文字、人声分离,本质上是一整套本地化工具箱。
我自己花了几个晚上把这套工具从安装到出活全流程跑了一遍,踩了不少坑也找到了不少省力技巧。想看完整拆解,往下翻,后面会从原理到操作一条一条讲清楚,新手也能跟着复现。
一、为什么要折腾一个本地视频翻译工具:刷外文视频时的真实痛点
最近这一两年,我每天打开 B 站、YouTube,推荐流里外文内容的比例肉眼可见在变多。技术分享、纪录片、学术讲座、产品发布会、甚至一些小语种的短视频,信息密度都比中文搬运号要高得多。问题也跟着来:听不懂。
你可能会说,平台不是有自动字幕吗?
我自己折腾下来的感受是,平台自带的自动字幕在两点上不够用。第一是翻译质量普遍偏机翻,术语不一致、断句不自然,看着累。 尤其是技术类视频,一旦碰到专有名词,自动字幕基本就崩掉了,要么直接拼音,要么硬翻成完全不相关的词。第二是没有配音。 字幕只是字幕,眼睛盯着下方一行小字,耳朵其实是闲置的,信息接收效率反而比纯中文视频低不少。
更别提一些场景里字幕本身就是奢侈品:
- 通勤路上想用耳机听个外文播客式视频,屏幕在口袋里,字幕没法看。
- 给爸妈或者完全不懂外语的朋友推一个海外内容,他们更希望直接听到中文。
- 自己做内容二次解读,先把原视频翻译成中文版才好做素材。
- 学习语言时想做平行对比,既要原版又要译版。
这些需求其实都指向同一个问题:外文视频本地化。专业的本地化流程包括听写、翻译、配音、对轨、合成,每一步都有专门的工具和人力。这一条流水线如果完全由人来做,一条十分钟的视频可能要花两到三个小时。
那能不能交给机器?能。
近两年大模型在三个相关领域同时跑出了断层效果:
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ 语音识别 ASR │ → │ 机器翻译 MT │ → │ 语音合成 TTS │
│ Whisper / Qwen-ASR │ │ GPT / Claude / │ │ CosyVoice / F5-TTS │
│ 字节火山 / 阿里 │ │ Gemini / DeepSeek │ │ Edge-TTS / GPT-SoVITS│
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘
任何一个单点能力,放在五年前都属于科研话题,现在都已经能在普通笔记本上跑起来。问题只剩一个:谁把它们串起来,而且串得足够好用。
这就是我后来盯上 pyVideoTrans 的原因。
它不是某一个新模型,而是一套工程化的整合方案。把"语音识别 + 翻译 + 配音 + 合成"四步串成一条自动化流水线,前后端兼容市面上主流的模型和 API,普通用户拖个文件进去就能出片,熟手能在每一步介入手动调整。开源、免费、本地可跑,这三个特性叠在一起,基本就把外文视频本地化的门槛打到了平地上。
我个人折腾它的初衷有三个,我猜也是大多数人的常见诉求:
- 学习用:把感兴趣的英文/日文技术分享翻译成中文版,反复看更省力。
- 存档用:遇到担心后续被下架的外文内容,做一份带中文配音的本地副本。
- 二创用:在原视频基础上做注解、剪辑、二次解读,先有中文版才方便后续加工。
注意一点:视频翻译只是把表达形式从一种语言转为另一种语言,版权依然属于原视频版权方。我自己做的二创全是用于个人学习,公开发布的内容也都会在显著位置标注原出处和原视频作者。这个底线必须守住。
下面这一章先把 pyVideoTrans 自身讲清楚,再展开后面所有的原理和实操。
二、pyVideoTrans 是什么:一条把视频本地化串起来的流水线
2.1 项目定位:不只是一个翻译工具,而是一整条流水线
把项目的定位写清楚很重要,因为它直接决定了你对这个工具能干什么、不能干什么的预期。
pyVideoTrans 不是单一模型,也不是某个翻译网站的客户端。它的本质是一条视频本地化流水线的工程化封装。开发者把语音识别、机器翻译、语音合成、音视频对齐这四件事打包到一个本地软件里,提供 GUI 界面和命令行两种入口,后端则尽量做到"哪家模型好用就接哪家"。
用一句话概括就是:
你扔进去一个外文视频,它给你吐出一个目标语言的新视频,新视频里说话的人用目标语言"开口"说话,屏幕底下还配着对应的字幕。
中间四个阶段,任何一步都可以单独跑、单独导出结果,所以你也可以把它当成:
- 一个本地音视频转字幕工具(只跑 ASR)。
- 一个SRT 字幕批量翻译工具(只跑翻译)。
- 一个AI 配音生成工具(只跑 TTS)。
- 一个人声分离 + 音视频对齐工具(只跑后段处理)。
这种"可拆可合"的设计在我看来才是它最大的工程价值——它不绑死任何一个环节,允许你按自己手头的素材类型来挑用法。
2.2 开源情况:GPL-v3、17.6K Star、长期维护
项目放在 GitHub 上,作者是 jianchang512,仓库地址是 github.com/jianchang512/pyvideotrans,协议是 GPL-v3。
几个关键事实摆一下:
|
维度 |
现状 |
|
Star 数 |
17.6K+,在视频处理类开源项目里属于头部 |
|
Fork 数 |
2.2K+ |
|
协议 |
GPL-v3,允许个人和企业免费使用 |
|
开源时间 |
2023 年 10 月首次完整开源,持续迭代至今 |
|
官方站点 |
pyvideotrans.com,有文档与下载 |
|
社区 |
bbs.pyvideotrans.com,自带 AI 自动答疑,作者也会回复 |
|
商业授权 |
开发者声明未授权任何渠道付费销售,看到二手平台高价倒卖请绕道 |
这里有个细节值得单独提一下:开发者明确写过"未授权任何实体或个人在淘宝、闲鱼、拼多多等平台销售本软件",所以如果你看到二手平台标着几十块上百块的"pyVideoTrans 安装服务"或者"汉化包",直接关掉就行。软件本身永远免费,Windows 预打包包和源码都能在 GitHub 与官方站点直接拿到。莫潇羽@源码七号站 一直强调一件事:开源项目第一原则,认准官方分发渠道,这个习惯能避掉九成的下游骗局。
2.3 它能处理什么、不能处理什么
边界感很重要,先把范围摆清楚。
能处理:
- 任何包含人类说话声的音视频文件,有没有内嵌字幕都行——因为它是基于语音识别重新生成字幕的,与原视频里的字幕轨无关。
- 单人独白(技术分享、纪录片旁白、产品演示)。
- 多人对话(访谈、播客式视频、会议录制)。
- 仅音频(播客 mp3、录音 wav)——可以只跑前几步,输出字幕或纯配音音频。
- SRT 字幕文件——可以单独翻译或单独配音。
不太擅长:
- 纯背景音乐 / 纯环境音视频,因为没有可识别的说话声。
- 多人极度重叠对话(同时说话),说话人分离会受影响。
- 极强方言或非常专业的小众术语场景,识别率会下降——这种情况后面会讲怎么用术语表辅助。
- 极短视频(几秒钟),时间轴对齐空间太小,听感会显得仓促。
2.4 一条流水线四个阶段:先建立全景视角
为了后面讲原理时不混乱,这里先把整条流水线的全景图画一下。后面每一章节讲每一个阶段的细节时,你可以随时回到这张图对照位置。
flowchart LR
A[原始视频/音频] --> B[第1阶段<br/>语音识别 ASR]
B --> C[原文字幕<br/>带时间轴的 SRT]
C --> D[第2阶段<br/>字幕翻译 MT]
D --> E[目标语言字幕]
E --> F[第3阶段<br/>语音合成 TTS]
F --> G[目标语言配音<br/>音频文件]
G --> H[第4阶段<br/>音视频合成]
A --> H
E --> H
H --> I[最终成品<br/>带中文字幕+中文配音的新视频]
四步合在一起就是完整翻译,任何一步都可以单独导出中间产物。这种设计让 pyVideoTrans 在我自己的工作流里能扮演两种角色:全自动出片 或者 半自动精修。一般我对画质要求不高的内容直接全自动,需要正式发布的内容则会在每一步介入校对。
下一章开始,我们逐个把这四个阶段的原理拆开看。莫潇羽@源码七号站 个人推荐的看法是:了解原理之后再用工具,你才知道为什么某些设置要这么调、某些场景为什么效果差。会用工具的人很多,理解工具的人会少很多,而后者才能把工具用出 80 分以上的效果。
三、四阶段原理拆解:每一步里到底发生了什么
很多教程会跳过原理直接讲操作,我自己一直觉得这是本末倒置。原理不懂,操作就只能照抄,出问题时连排查方向都找不到。所以这一章会稍微"啰嗦"一点,把每个阶段里的关键概念用大白话讲明白。
3.1 第一阶段:语音识别 ASR——从波形到带时间轴的文字
语音识别(Automatic Speech Recognition,ASR)做的事情就一句话:把声音变成文字,并且标出每一句话出现在视频的什么时间段。
为什么要带时间轴?因为后面字幕要贴回视频上,要给观众看到"什么时候出现哪一句话",所以每一段文字都必须挂着一个起止时间戳。这种带时间轴的字幕文件最常见的格式就是 SRT。
一个标准的 SRT 字幕长这样:
1
00:00:01,200 --> 00:00:04,500
Hello and welcome to today's tutorial.
2
00:00:04,800 --> 00:00:08,200
In this video we will talk about open source.
数字编号、起止时间、文字内容,三块组成一段字幕。pyVideoTrans 第一阶段的产物就是这个文件。
那"声音怎么变成文字"这一步是怎么做到的?
主流方案是基于 Transformer 的端到端语音识别模型,典型代表是 OpenAI 的 Whisper 系列。原理简化讲就是三步:
原始波形 → 频谱特征(Fbank 80维) → 编码器 Encoder → 解码器 Decoder → 文字 + 时间戳
模型会先把音频切成短窗口,提取出每一帧的频谱特征,送进编码器抽象成"声学表示";解码器再把这串声学表示翻译成文字 token,同时输出语种、时间戳等附加信息。
Whisper 系列在过去几年的演进值得提一下,因为 pyVideoTrans 默认走的是 Faster-Whisper 路线:
|
模型 |
体积 |
显存 |
速度 |
适用场景 |
|
tiny |
~75MB |
<2GB |
极快 |
移动端、低配机器,准确率一般 |
|
base |
~150MB |
~2GB |
很快 |
入门尝试 |
|
small |
~500MB |
~3GB |
快 |
一般质量需求 |
|
medium |
~1.5GB |
~5GB |
中等 |
中等质量,中文可用 |
|
large-v3 |
~3GB |
~10GB |
较慢 |
高质量首选,多语言 |
|
large-v3-turbo |
~1.6GB |
~6GB |
比 v3 快 7-8 倍 |
速度与质量平衡 |
Faster-Whisper 是社区基于 CTranslate2 对 OpenAI Whisper 做的推理加速版本。同样的模型权重,推理速度能比官方实现快几倍,显存占用也低不少。pyVideoTrans 默认集成的就是这一版,我个人在 8GB 显存的中端显卡上跑 large-v3 完全没问题。
除了 Faster-Whisper,pyVideoTrans 还接了阿里的 Qwen-ASR、FunASR(对中文识别尤其友好)、以及一些在线 API。中文素材建议优先用 FunASR 或 large-v3,英文素材 large-v3-turbo 速度和质量都很在线。
3.2 第二阶段:字幕翻译——从一段文字到另一种语言
拿到带时间轴的原文字幕后,下一步是把它翻译成目标语言。
这一步看起来"就是机翻嘛",其实大有讲究。字幕翻译和普通文本翻译有几个本质区别,直接影响效果好坏:
- 每条字幕都是一个被时间轴切碎的片段,不一定是完整句子。模型如果只看单条字幕,经常会丢失上下文。
- 字幕长度必须匹配口播时长。翻译得太长,配音说不完;太短,听感空荡。
- 专业术语要全文一致。同一个专有名词在十句话里被翻译成五种说法,观感会很糟糕。
- 断句要符合中文听感。直译过来的"主-谓-宾"如果生硬,合成的语音会非常拗口。
pyVideoTrans 把翻译这一步做了大量优化,这也是为什么它的输出比单纯丢给翻译 API 的效果好。主要的工程改进有四点:
1. 上下文窗口:翻译当前字幕时,把前后几条一并送给模型,保留语境
2. 术语表:用户可以预先定义术语对照表,模型翻译时强制保持一致
3. 长度约束:在 prompt 中限定译文长度,避免配音超时
4. AI 翻译优先:接入 GPT/Claude/Gemini/DeepSeek 等大模型,质量远超传统翻译 API
可接入的翻译渠道:
|
类型 |
代表方案 |
特点 |
|
传统翻译 API |
Google、Microsoft、百度、腾讯、字节火山 |
速度快、便宜、术语处理一般 |
|
大模型 API |
DeepSeek、ChatGPT、Claude、Gemini、阿里百炼 |
质量高、可加 prompt 控制风格 |
|
本地大模型 |
Ollama(Llama、Qwen、Mistral 等) |
完全本地、不联网、数据安全 |
|
离线翻译 |
OTT 等离线引擎 |
速度快、不依赖外部服务 |
我自己最常用的搭配是 DeepSeek + 术语表。DeepSeek 的中文翻译质量在我用过的所有 API 里偏向自然,价格也比较友好;遇到敏感数据完全本地化的场景,就切到 Ollama + Qwen 走全本地。
3.3 第三阶段:语音合成 TTS——从文字到自然的人声
翻译好的字幕只是文字,要让视频"开口说话",就得把字幕变成音频。这就是 语音合成(Text-to-Speech,TTS)。
TTS 这几年的进步可能比 ASR 还要肉眼可见。十年前的 TTS 出来的声音是"机器人朗读早安",现在的 TTS 已经能做到"不仔细听根本不知道是合成的"。
pyVideoTrans 接入的 TTS 方案大致分四类:
免费方案
└── Edge-TTS:走 Edge 浏览器的微软 TTS 通道,免费、无须 key、效果不错
本地模型
├── F5-TTS:基于 Flow Matching 的 TTS 模型,质量高、支持声音克隆
├── CosyVoice:阿里通义实验室开源,多语言支持好
├── GPT-SoVITS:小样本声音克隆神器,5-10 秒音频就能复刻音色
└── ChatTTS:适合对话场景,情绪表达自然
在线 API
├── OpenAI TTS:质量稳定、付费
├── Azure TTS:微软,多语言、多音色
├── ElevenLabs:声音克隆效果一流,付费
└── Minimaxi、302.AI 等其他厂商
新手最适合从 Edge-TTS 起步。完全免费,中文有十几个声音可选,效果对绝大多数场景已经够用了。等熟悉了再升级到本地的 CosyVoice 或者 F5-TTS,玩声音克隆。
TTS 阶段的关键变量有几个我必须强调一下:
- 配音语速:中文相比英文普遍要短,直接合成往往会比原视频说得快,或者出现停顿过长。pyVideoTrans 提供了自动调速和强制对齐两种模式。
- 静音填充:如果译文短而原句子长,中间会被自动塞静音,听感比较"卡"。
- 音视频对齐策略:可以选"以字幕为准"或"以音频为准",前者尊重字幕时间,后者优先听感自然,代价是字幕略错位。
3.4 第四阶段:音视频合成——把字幕、音频、原视频缝合起来
到这一步,我们手里有三样东西:
- 原视频(带原始画面,可以选保留或剥离原声)
- 翻译后的字幕文件(SRT)
- 合成好的目标语言配音(音频文件)
合成阶段做的就是把这三样东西按时间轴对齐拼接,输出最终的成品视频。
底层用的是大名鼎鼎的 FFmpeg。FFmpeg 是音视频处理的标准工具,几乎所有专业视频软件背后都有它的影子。pyVideoTrans 在 Windows 预打包版里直接附带了 FFmpeg 二进制,源码版需要你自己装一份。
合成阶段的关键参数:
|
参数 |
说明 |
|
字幕嵌入方式 |
软字幕(可关闭)/ 硬字幕(烧进画面) |
|
是否保留原声 |
完全替换为新配音 / 原声做背景音降低音量 / 双轨保留 |
|
输出格式 |
mp4 / mkv,推荐 mp4 通用性更好 |
|
视频编码 |
H.264 兼容性好;H.265 体积更小 |
|
音频编码 |
AAC 通用;Opus 体积更小 |
我个人喜欢"原声 -25dB 做背景 + 新配音正常音量"的方案。这样既能听到中文配音,又能依稀感受到原说话人的语气和情绪,沉浸感比完全替换要好。
到这里,四个阶段全部走通,一条完整的视频本地化流水线就跑完了。下一章我们把模型生态展开讲——同样一条流水线,接不同的模型出来的效果可以差很远,怎么选才是真正的核心问题。
四、模型生态全景:本地模型 vs 在线 API 怎么选
pyVideoTrans 最让我惊喜的不是"它能做到多少",而是"它能让你接入多少"。同样一条流水线,你可以全程用免费方案凑活,也可以全程上付费 API 追求极致质量,中间还有大量本地模型可以折腾。
这一章我把所有可选项按阶段排一遍,并说说我自己的取舍。
4.1 语音识别阶段的可选项
本地方案:
Faster-Whisper(默认)
├── tiny / base / small / medium / large-v3 / large-v3-turbo
├── 完全本地、不联网
├── 显存够大就跑 large-v3,够不上就用 large-v3-turbo
└── 中文 medium 以上效果可用,英文 small 即可
FunASR(阿里达摩院)
├── 中文专用优化,识别率往往高于 Whisper
├── 支持时间戳、说话人分离、热词
└── 中文素材首选
Qwen-ASR(本地版)
├── 阿里通义的 ASR 模型
└── 多语言混合场景表现不错
在线方案:
OpenAI Whisper API
├── 接 large-v3 同款模型,云端推理
├── 按分钟计费,适合临时少量使用
└── 不想本地配置 GPU 的可以走这条
阿里 Qwen-ASR API
├── 国内访问稳定
├── 中文识别准确率高
└── 价格亲民
字节火山 ASR
├── 字节系产品,中文优化
└── 提供热词、行业术语等高级功能
Azure / Google ASR
├── 老牌方案,稳定可靠
└── 多语言覆盖最全
怎么选?
|
场景 |
推荐 |
|
中文素材为主,有 6GB+ 显存 |
本地 FunASR 或 Faster-Whisper large-v3 |
|
英文素材为主,本地够用 |
Faster-Whisper large-v3-turbo |
|
临时任务,不想配环境 |
OpenAI Whisper API 或阿里 Qwen-ASR API |
|
数据敏感,完全离线 |
本地 FunASR / Faster-Whisper,不用任何 API |
|
多语言混合场景 |
Whisper 系列(语言识别能力强) |
4.2 字幕翻译阶段的可选项
翻译质量的差距比识别要大得多,这一步我自己投入的对比时间最多。
大模型路线(质量高,推荐):
|
模型 |
优点 |
注意 |
|
DeepSeek |
中文翻译自然、价格亲民 |
国内访问稳定 |
|
ChatGPT(GPT-4 系列) |
质量上限高、风格可控 |
需 OpenAI 渠道 |
|
Claude |
长文一致性好、术语稳定 |
同上 |
|
Gemini |
多语言覆盖广 |
同上 |
|
阿里百炼(Qwen 系列) |
国内云,中文翻译质量好 |
价格友好 |
|
Ollama 本地模型 |
完全离线、数据不出门 |
需本地 GPU |
传统翻译 API(质量中等,速度快):
Google Translate / Microsoft Translator
├── 老牌、稳定
└── 字幕场景下机翻味偏重
百度 / 腾讯 / 字节火山
├── 国内访问稳定
└── 通用文本翻译还行,字幕略生硬
DeepL
├── 欧洲语种翻译质量高
└── 中文相对一般
DeepLX
└── 第三方 DeepL 兼容服务
离线翻译:
OTT(Offline Text Translator)
├── 完全离线
├── 质量与传统翻译 API 相当
└── 速度快、不依赖外部服务
我的搭配建议:
- 追求质量 → DeepSeek API 或 Claude API + 术语表
- 追求速度 → Google / 微软 翻译 API
- 追求数据隔离 → Ollama + Qwen 本地模型
- 完全免费 → 离线 OTT
特别提一下术语表这个功能。pyVideoTrans 允许你预先填写一份"原文→译文"的对照表,翻译时模型会强制按这个表来。比如视频里反复出现 Kubernetes,你不希望它一会儿被翻成"K8s"一会儿被翻成"库伯耐茨",就把它写进术语表锁死。这个小功能用好了能让译文一致性提升一大截。
4.3 语音合成阶段的可选项
TTS 的选择维度比另外两步更多:是否需要声音克隆、是否要本地跑、对自然度要求多高,这三个问题决定了你应该选哪一种。
下面这张表是我自己用过之后总结的:
|
方案 |
部署 |
声音克隆 |
自然度 |
推荐场景 |
|
Edge-TTS |
在线免费 |
不支持 |
★★★★ |
新手首选,日常够用 |
|
OpenAI TTS |
在线付费 |
不支持 |
★★★★★ |
追求稳定质量 |
|
Azure TTS |
在线付费 |
支持(企业级) |
★★★★★ |
多语言、多音色 |
|
F5-TTS |
本地 |
支持(零样本) |
★★★★★ |
想克隆声音 |
|
CosyVoice |
本地 |
支持(零样本) |
★★★★★ |
中文克隆首选 |
|
GPT-SoVITS |
本地 |
支持(微调) |
★★★★★ |
极致音色还原 |
|
ChatTTS |
本地 |
不支持 |
★★★★ |
对话场景情绪好 |
|
ElevenLabs |
在线付费 |
支持(零样本) |
★★★★★ |
商业级英文克隆 |
|
Minimaxi |
在线付费 |
支持 |
★★★★★ |
国内云,中文质量好 |
怎么选? 莫潇羽@源码七号站 我个人的路径建议:
第一阶段(尝鲜):Edge-TTS
└── 不需要任何配置,选一个声音就能用,先把流水线跑通
第二阶段(进阶):Edge-TTS + 术语表打磨
└── 等你能熟练用 Edge-TTS 出片,再去折腾本地模型
第三阶段(克隆):CosyVoice 或 F5-TTS
└── 想要原说话人的声音说中文,从这两个开始
跳过第一、二阶段直接上 F5-TTS 不是不行,但你会在环境配置、参考音频准备、显存调优上花掉大量时间,反而把流水线本身的玩法忘了。先把"能用"做好,再追求"好用",这个顺序很重要。
下一章我们就把声音克隆这件事单独拎出来讲透,它是 pyVideoTrans 最有意思的能力,也是最容易掉坑的地方。
五、声音克隆原理:为什么 5-10 秒音频就能"复刻"音色
声音克隆这个功能第一次跑出效果的时候,我自己是有点震撼的。给它丢一段不到十秒的原说话人采样,然后让它用同一个音色去念翻译好的中文字幕,出来的效果是:听起来真的就像原说话人自己在说中文。
这一章把背后的原理讲清楚,顺便聊聊三个主流方案的差异。
5.1 传统 TTS 与零样本声音克隆的区别
传统 TTS 是这样工作的:
预先录制 → 训练 → 固定音色 → 推理时只能用这些音色
你听到的微软小冰、阿里小蜜、Edge-TTS 里那些女声男声,本质上都是工程师录了一个真人很多小时的语料,训练出固定的几个音色模型。想要新音色,得重新录制、重新训练,成本很高。
零样本声音克隆(Zero-Shot Voice Cloning)颠覆了这个流程:
丢一段参考音频 → 模型自动提取音色特征 → 用这个音色合成任意新句子
↑
整个过程零训练、零微调
关键词是"零样本"——模型本身已经在海量音色上预训练过,它学到的不是"某个具体的人怎么说话",而是"声音的本质特征空间"是什么样的。任何新音色丢进去,模型都能把它在这个空间里定位出来,然后用这个位置生成新的语音。
这件事在五年前看几乎是科幻,现在已经是开源项目里常规配置。
5.2 F5-TTS:Flow Matching 路线
F5-TTS 是最近一年很火的一个开源 TTS 方案,核心创新点是用 Flow Matching 替代了传统的 Diffusion 方案。
简化地讲,Diffusion(扩散模型)是这样生成音频的:从纯噪音开始,一步步把它"去噪"成最终的音频,通常要走几十到几百步。Flow Matching 则是直接学一个"从噪音到音频的最短路径",一两步就能到位,推理速度快很多。
F5-TTS 的特点:
- 零样本克隆:5-10 秒参考音频即可
- 支持英文和中文(默认模型),其他语种需要额外配置
- 速度比 Diffusion TTS 快几倍
- 质量在开源 TTS 里属于第一梯队
它在 pyVideoTrans 里的对接方式是:本地启动 F5-TTS 的 WebUI 服务,pyVideoTrans 通过 HTTP 接口调用。默认地址是 http://127.0.0.1:7860,如果你改了端口对应填进去就行。
5.3 CosyVoice:阿里通义实验室的开源方案
CosyVoice 是阿里通义实验室开源的多语言 TTS 模型,在中文上的表现尤其好。
它的核心特性:
- 支持中文、英文、日语、韩语、粤语,语言代码分别是
zh / en / jp / ko / yue - 零样本声音克隆
- 可控的情感和韵律:可以指定"开心地说""慢慢地说""带笑意地说"等
- 支持流式合成:边生成边播,延迟低
CosyVoice 在 pyVideoTrans 里走 WebUI 接口对接,默认地址 http://127.0.0.1:8000。主界面中配音渠道选择 CosyVoice,角色选择 clone,就是用参考音频里的音色;选择其他预设角色就是用 CosyVoice 自带的预设音色。
参考音频填写格式是这样的:
1.wav#你好啊亲爱的朋友
2.wav#你好啊朋友们
每一行用 # 号分成两段:左边是音频文件名,右边是这段音频对应的文字内容(也就是参考音频里说话人说的话)。多行可以挂多个参考样本,模型会综合学习。
几个硬性约束要记牢,这是我自己第一次跑时踩的坑:
- 单个参考音频 必须小于 10 秒(经验值是 5-8 秒最佳)。
- 必须是 wav 格式,其他格式要先转换。
- 音频要放在 pyVideoTrans 项目目录下的
f5-tts子目录里(对,CosyVoice 也用这个目录),配置里只填文件名不要带路径。 - 参考音频的文字内容要 逐字准确,模型会用这段文字反推音色对应的发音模式,字写错了效果会变差。
5.4 GPT-SoVITS:小样本声音克隆的"手工艺品"
GPT-SoVITS 是国内开源圈非常有名的声音克隆项目,它的路线和 F5-TTS、CosyVoice 略有不同。
F5-TTS 和 CosyVoice 是 零样本——丢一段参考就能跑。GPT-SoVITS 走的是 小样本微调——给它几十秒到几分钟参考音频,先做一轮微调,再合成。微调多花一点时间,代价是音色还原度可以做到极致。
|
维度 |
零样本(F5-TTS / CosyVoice) |
小样本微调(GPT-SoVITS) |
|
准备时间 |
几乎为零 |
几分钟到几十分钟 |
|
参考音频量 |
5-10 秒 |
几十秒到几分钟 |
|
音色还原度 |
80-90% |
95%+ |
|
适合场景 |
临时翻译、快速出片 |
长期角色、IP 化使用 |
如果你只是偶尔翻译一两个视频,F5-TTS 或 CosyVoice 完全够用。如果你想给某个 IP 形象建立一个长期可用的"中文版声音",GPT-SoVITS 微调出来的音色档案是更好的选择。
5.5 声音克隆的伦理与边界
这一节我必须啰嗦一下,因为声音克隆是把双刃剑。
合规可接受的用法:
- 用你自己的声音生成内容(给自己做个 AI 配音助手)。
- 用授权过的 IP 声音做衍生创作。
- 学习用途的视频翻译(不公开发布,或者明确标注为 AI 合成)。
- 商业用途时获得原说话人书面授权。
绝对不要做的事:
- 未经允许克隆他人声音用于公开发布,尤其涉及名人、公众人物。
- 克隆他人声音用于诈骗、伪造身份、敲诈勒索。
- 克隆声音用于政治造谣、虚假信息传播。
我自己在使用过程中遵守的底线是:克隆出来的内容,默认是私人学习用途;一旦想公开发布,要么用我自己的声音,要么用预设音色,要么提前拿到原说话人的明确授权。这个底线不复杂,但能避开绝大多数法律和道德风险。
工具本身是中立的,负责任地用,它就是你的助手;不负责任地用,它就是麻烦的源头。莫潇羽@源码七号站 想强调的一点是,开源工具的伦理边界很大程度上靠使用者自律来守住,这一点比任何技术细节都重要。
六、多说话人识别:对话视频的关键能力
如果你只是翻译单人独白的技术分享或者旁白纪录片,这一章可以跳过。但你想翻译访谈、对谈、播客式视频、会议录像,这一章就必须看完。
6.1 为什么单人 TTS 处理对话会出问题
设想这样一个场景:你下载了一段两人访谈视频,主持人和嘉宾轮流说话。如果你只用单一 TTS 音色去配音,会发生什么?
所有人说话都是同一个声音。
听感上立刻就崩了:对话变成了单人自言自语,完全失去了"两个人在交流"的氛围。访谈类视频如果失去了这种节奏感,基本就没法看了。
解决思路有两个:
方案一:整段视频用一种音色,牺牲对话感
└── 简单粗暴,适合不在乎效果的场景
方案二:先分辨出谁是说话人 A、谁是说话人 B,再分别用不同音色配音
└── 这就需要"说话人识别"能力
6.2 Speaker Diarization:让模型分辨"谁在说话"
说话人分离/识别(Speaker Diarization)做的事情就是:给一段音频,告诉你"在 0:00-0:15 是说话人 A 在说话,0:16-0:30 切换到说话人 B,0:31-0:42 又回到说话人 A"。
技术上的实现路径大致是:
1. 音频切片:把整段音频切成几百毫秒的小片段
2. 声学特征提取:每个片段提取一个音色向量
3. 聚类:把音色向量做聚类,同一个聚类就是同一个说话人
4. 时间轴对齐:把聚类结果映射回时间轴
pyVideoTrans 集成了说话人分离能力,在语音识别阶段就能输出带说话人标签的字幕,长这样:
1
00:00:01,200 --> 00:00:04,500
[SPEAKER_00] Hello everyone, welcome to today's interview.
2
00:00:04,800 --> 00:00:08,200
[SPEAKER_01] Thank you for having me.
每一段字幕前会标记 [SPEAKER_00]、[SPEAKER_01] 这样的说话人编号。
6.3 不同说话人分配不同 AI 配音角色
拿到带说话人标签的字幕后,在 pyVideoTrans 的配音阶段,你可以为每个说话人编号分别指定一个 TTS 音色。比如:
SPEAKER_00→ 男声 "中文男声-沉稳"SPEAKER_01→ 女声 "中文女声-甜美"
合成出来的视频里,主持人和嘉宾就会用两个不同的中文音色对话,听感立刻自然很多。
我个人的小经验是:说话人编号不要追求"绝对准确",大致能区分开就行。说话人分离技术在以下场景容易出错:
- 多人同时说话(重叠)
- 说话人音色非常接近(比如双胞胎)
- 背景音乐很响、信噪比差
- 单个说话人时长极短
遇到这些情况,可以在校对阶段手动把字幕里的说话人编号调整一下。pyVideoTrans 允许你在中间产物上直接编辑 SRT,改完再继续后续阶段。
6.4 实操小技巧:对话视频的预处理
对话类视频要想出片效果好,我的经验是在输入前做一点预处理:
- 降噪:背景噪声大的视频先用 Audacity 或者其他工具做一下降噪,识别和分离的准确率都会提升。
- 响度归一:多个说话人音量差异大时,做一下响度归一(loudness normalization),声学特征会更稳定。
- 去除片头片尾音乐:纯音乐段落会干扰说话人聚类,提前剪掉这些段落识别效果更好。
这些预处理工具都是 FFmpeg 或者 Audacity 这一类的免费工具,花十几分钟整理一下,后面整条流水线的产出质量会上一个台阶。
七、Windows 预打包版上手实操:从零到第一条片子
讲了这么多原理,该上手了。这一章针对 Windows 用户,因为预打包版的体验确实最友好,我自己第一次跑也是用这个版本。
7.1 下载:认准官方渠道
打开 GitHub 仓库 https://github.com/jianchang512/pyvideotrans,点 Releases 进入版本列表,找到带 win-pyvideotrans 前缀的最新版本下载。比如 win-pyvideotrans-v4.00.7z。
官方下载渠道(认准这些):
- GitHub Releases:版本最新,推荐
- 官方站点 pyvideotrans.com 下载页:同步官方包
- 百度网盘:每个 Release 都附带网盘链接
- HuggingFace 镜像:有时国内访问 GitHub 慢可以走这里
注意事项:
- 不要在第三方网站下载,可能被植入广告或后门
- 不要花钱购买"预装版"或"汉化版",软件本身免费
文件比较大,一般完整包 4-6GB,因为里面打包了 PyTorch、Whisper 等模型权重以及 FFmpeg 二进制。下载用百度网盘或 HuggingFace 镜像会比 GitHub 直接下要稳定些。
7.2 解压:路径很有讲究
下载下来的 .7z 文件用 7-Zip 或 Bandizip 解压。解压目标路径有几条硬要求,违反任何一条都可能导致软件无法启动:
|
要求 |
反例(错误) |
正例(正确) |
|
路径不能含中文 |
|
|
|
路径不能含空格 |
|
|
|
路径不能含特殊符号 |
|
|
|
不要放在系统盘 Program Files |
|
|
|
不要放在 OneDrive 同步盘里 |
|
|
这些限制不是开发者刻意为之,而是底层 Python 和 FFmpeg 对非 ASCII 路径处理不够稳定,以及 Windows 系统对 Program Files 等目录的权限管控会卡住一些操作。老老实实放到 D 盘根目录下一个英文文件夹,后面省心很多。
7.3 启动:首次启动需要耐心
解压完进入文件夹,找到 sp.exe,双击启动。
第一次启动会很慢——慢到你怀疑是不是死机了。我自己第一次跑大概等了两分多钟才看到主界面。这是因为程序要做几件事:
1. 初始化 Python 解释器和依赖库
2. 检测 FFmpeg、CUDA 等组件
3. 初始化模型缓存目录
4. 加载默认配置
如果三五分钟还没启动起来,就要怀疑是不是路径或依赖出问题。这时候可以:
- 关掉杀毒软件(部分杀软会拦截预打包版的 Python 解释器,误报为木马)
- 用调试版
_debug.exe启动,会输出详细日志,看具体卡在哪一步 - 去 BBS 社区
bbs.pyvideotrans.com提交错误日志,有 AI 自动答疑
7.4 主界面初识
启动成功后,你会看到一个比较"工具感"的主界面。主要的几个区域值得花一分钟认一下:
┌─────────────────────────────────────────────────┐
│ 上方菜单栏:文件、设置、工具、帮助 │
├─────────────────────────────────────────────────┤
│ 左侧: │
│ - 视频文件选择 │
│ - 源语言 / 目标语言 │
│ - 语音识别渠道选择 │
│ - 翻译渠道选择 │
│ - 配音渠道选择 │
├─────────────────────────────────────────────────┤
│ 右侧: │
│ - 任务进度 │
│ - 日志输出 │
│ - 中间产物预览 │
└─────────────────────────────────────────────────┘
新手第一次跑,我推荐这套保守配置:
|
选项 |
推荐值 |
|
语音识别渠道 |
Faster-Whisper(本地) |
|
模型 |