OpenVoice 语音克隆实战指南:三步在本地克隆任意声音,支持跨语言与多情感控制
OpenVoice 语音克隆实战指南:三步在本地克隆任意声音,支持跨语言与多情感控制
【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice
如果你手里只有十几秒的录音,却想让合成语音"听上去就是他"?OpenVoice 就是为此而生的开源即时语音克隆项目,由 MIT 和 MyShell 联合推出:从一段短语音中提取音色,套到任意语言、任意情绪的文本朗读上,几秒钟出结果,V1/V2 均采用 MIT 协议,商用免费。
先说说它帮你解决什么麻烦
做过音频产品的人大概都有过这种纠结:给助手、小说旁白或游戏角色配音,要么自己录一遍素材库(贵、慢),要么找商业克隆服务(按量收费,数据还得出内网)。
更麻烦的是多语言:同一个人声读中文、英文、西语,逐语种重新录制不现实。而且你还想控制风格——这句要耳语,那句要兴奋,普通 TTS 根本不给这个能力。
OpenVoice 的思路是把"读什么"和"谁来读"拆成两个独立模块:基础说话人模型负责把文本读成语音,决定口音、情感、节奏;音色转换器只负责把参考人的"音色"贴上去。这套技术从 2023 年 5 月起就在线上平台驱动即时语音克隆功能,到同年 11 月累计被调用了数千万次。
三步跑通本地语音克隆
安装过程很短,先跑通再抠细节。以下是最简路径,对应文件在 docs/USAGE.md 里都有详细说明:
| 步骤 | 做什么 | 命令/文件 | 备注 |
|---|---|---|---|
| 1. 建环境 | 建一个 Python 3.9 的 conda 环境 | conda create -n openvoice python=9后激活 | 避免污染系统 Python |
| 2. 拿代码 | 克隆仓库并进入目录 | git clone https://gitcode.com/GitHub_Trending/op/OpenVoice | |
| 3. 装依赖 | 一次性装好全部依赖 | pip install -e . | 版本由 setup.py 锁定 |
| 4. 放模型 | 下载对应版本 checkpoint 并解压 | V1 →checkpoints/;V2 →checkpoints_v2/ | 压缩文件名称及下载位置见 docs/USAGE.md |
| 5. 跑起来 | 打开 notebook 或起 Web 界面 | demo_part1.ipynb 或python -m openvoice_app --share | 首次运行会自动下载 VAD 等组件 |
跑通之后,核心调用就三件事:加载两个模型 → 提取参考音色 → 转换合成。最关键的片段长这样:
from openvoice import se_extractor from openvoice.api import BaseSpeakerTTS, ToneColorConverter device = "cuda:0" if torch.cuda.is_available() else "cpu" # 基础说话人:负责把文本读出来(决定口音/情感/语速) base = BaseSpeakerTTS('checkpoints/base_speakers/EN/config.json', device=device) base.load_ckpt('checkpoints/base_speakers/EN/checkpoint.pth') # 音色转换器:负责把参考人的音色贴上去 converter = ToneColorConverter('checkpoints/converter/config.json', device=device) converter.load_ckpt('checkpoints/converter/checkpoint.pth') # 从参考音频提取音色(建议 5~15 秒干净录音) target_se, _ = se_extractor.get_se('resources/example_reference.mp3', converter, vad=True) # 先合成再转色:speaker 可选 whispering、excited、sad 等 8 种风格 base.tts("Hello, this is OpenVoice.", 'tmp.wav', speaker='whispering', language='English', speed=0.9) converter.convert('tmp.wav', source_se, target_se, output_path='out.wav')两个模型类的完整实现可以看 openvoice/api.py;get_se内部会用 Whisper 把参考音频切段、去掉静音,再对每段提音色取平均,逻辑都在 openvoice/se_extractor.py 里。
一张图看懂音色转换原理
整条链路是"双轨"的:左边轨道上,基础说话人 TTS 模型接收文本内容和风格参数(口音、情感、语调等),先把语音"读"出来——这一轨决定说什么、怎么读。
右边轨道是音色转换器:它从参考音频中抽出音色特征,同时把左轨的语音过一遍编码器、Flow 网络和解码器,只替换其中的音色成分,情感、节奏、停顿这些"风格信息"原样保留,最终输出"参考人的声音 + 受控风格"的语音。
IPA 对齐——简单说就是让不同语言的发音"对得上号":转换器内部用国际音标做特征对齐,保证跨语言转换时只动音色、不乱掉其他风格,这也是它能做到零样本跨语言的关键。
另外有个容易忽略的设计:生成的音频默认会写入不可听见的水印(convert的message参数),用于标识和追溯,避免被滥用。
V1 和 V2 怎么选
不用纠结,按需求对号入座就行:
如果你只是想快速验证音色克隆效果、或者想把自己的 TTS 模型接进来当底座 —— 选V1,装完解压检查点就能用,风格控制(8 种说话人预设)和跨语言克隆是它的招牌能力。
如果你在意音质、或者需要中文/英文/日语/韩语/法语/西语这六种语言开箱即用 —— 选V2(2024 年 4 月发布),它换了一套训练策略,音质明显更好,并集成了 MeloTTS 作为完整 TTS 流水线(安装 MeloTTS 后执行python -m unidic download获取日语词典即可)。
| 对比项 | V1 | V2 |
|---|---|---|
| 适合谁 | 快速验证、自接第三方基础 TTS | 要音质、要六语种原生支持 |
| 语言覆盖 | 自带英/中底座,其他语言需自备基础说话人模型 | 六种语言原生支持 |
| 额外代价 | 无 | 需安装 MeloTTS,检查点文件更大 |
| 使用入口 | demo_part1 / part2.ipynb | demo_part3.ipynb |
两版都是 MIT 协议,商用、研究都不花钱,这是它相对不少同类方案最实在的一点。
两个真正会用到的进阶场景
场景一:用英语参考声克隆出中文(跨语言克隆)
目标:参考录音是英语,但想让他"开口说中文"。
关键做法:只换底座、不换音色。把基础说话人从checkpoints/base_speakers/EN换成checkpoints/base_speakers/ZH,并把source_se换成中文底座自带的zh_default_se.pth(音色转换需要一个"源音色"作参照,必须与底座匹配);参考人的target_se保持不变。零样本的意思是:参考语音和目标语言都不需要在训练集里出现过。
注意:迁移的只有音色,口音和情感由底座决定——想要"带北京味的中文",得换对应口音的底座模型。细节可参考 demo_part2.ipynb。
场景二:批量文本转语音怎么提速
目标:把一整个目录的文本文件全部转成某个人的声音。
关键做法:模型只加载一次、参考音色target_se只提取一次,之后每条文本走"底座合成 → 转色"两步即可;再配合多线程并行提交,整体耗时基本线性下降。
注意两个坑:
get_se的结果会按文件名缓存在processed目录,不会自动覆盖。换了参考音频却沿用旧文件名,拿到的还是老音色——改个文件名即可。- 底座
tts的speed参数可以批量调速(0.9 放慢、1.2 加快),不用后期处理音频。
顺带一提,跑单条调试嫌麻烦的话,直接python -m openvoice_app --share起一个本地 Gradio 网页,浏览器里拖音频就能玩。
踩坑清单:对照着查一遍
现象:启动时报 Silero VAD 相关错误。原因:VAD 模型要从外网拉取,网络不通就失败。解决:手动下载 silero-vad 的 zip 包,解压到
~/.cache/torch/hub/snakers4_silero-vad_master/。现象:克隆出来的"音色像,但口音、情绪不像"参考人。原因:这不是 bug——音色转换器只克隆音色,口音和情感来自基础说话人模型。解决:想换风格就换底座模型,或切换
speaker预设(friendly、cheerful、excited、sad、angry、terrified、shouting、whispering 共 8 种)。现象:生成语音有杂音、发闷、音质差。原因:参考音频带背景噪声、太短、多人说话或有大段空白。解决:换一段 5~15 秒、单说话人、无噪声的干净录音,采样率 16kHz 以上。
现象:换了参考音频,输出却还是"老味道"。原因:文件名相同,命中了
processed目录里的旧缓存。解决:给参考音频起一个唯一的新文件名。现象:CPU 上跑极慢或显存/内存吃紧。原因:模型默认走 GPU,设备没配对。解决:确认
torch.cuda.is_available(),把device设为cuda:0;批量任务控制并发、必要时把非关键模块放 CPU。更多问题可查 docs/QA.md。
写在最后
OpenVoice 把"语音克隆"从一件录音棚工程变成了一段几行的代码:音色与风格解耦带来灵活控制,IPA 对齐带来零样本跨语言,MIT 协议则把商用门槛清零。对想搭个性化语音助手、多语言内容生产的团队来说,它已经是目前可自托管方案里相当完整的一块拼图。可以期待的方向:更多语言的原生支持、实时克隆的性能优化,以及更简化的端到端训练流程。
【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
