OpenVoice语音克隆实操指南:3分钟搭好环境,5秒语音样本完成克隆
【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice
OpenVoice是MIT与MyShell开源的即时语音克隆音频基础模型,用几秒参考音频克隆音色并支持零样本跨语言合成,MIT协议可商用。适合想在本地搭建TTS音色克隆能力的开发者。
一、它是什么 & 能做什么
一句话定位:OpenVoice 是一个"音色转换器"技术栈——基础 TTS 负责生成内容和韵律,音色转换器负责把输出换成你指定参考音频的音色。它克隆的是音色(tone color),不是口音和情绪,这一点先记住,后面调优会用到。
核心能力清单:
- 即时克隆:3~5 秒清晰人声即可提取音色模板,无需训练
- 跨语言零样本:参考语音和目标语言都不要求出现在训练集里,V2 原生支持英、西、法、中、日、韩
- 风格控制:可通过不同 base speaker(如 default / whispering)调节节奏、停顿、语调
- 可商用:V1/V2 均为 MIT License
选型视角对比:
| 维度 | 传统 TTS 微调方案 | 商业克隆 API | OpenVoice |
|---|---|---|---|
| 准备成本 | 需数小时以上语音 + GPU 训练 | 无需准备,按量付费 | 几秒参考音频,零训练 |
| 数据去向 | 自建管线 | 上传至服务商 | 全本地,数据不出机器 |
| 风格自由度 | 训练什么就是什么 | 受限于平台参数 | 可替换 base speaker,自由度最高 |
| 适用对象 | 有训练能力的团队 | 不想写代码的用户 | 开发者/研究者 |
二、3分钟跑通:一键安装与首次克隆
最短路径是一条命令链,按勾选项顺序执行即可:
conda create -n openvoice python=3.9 -y conda activate openvoice git clone https://gitcode.com/GitHub_Trending/op/OpenVoice cd OpenVoice pip install -e .⚙️ 逐项自检:
- Python 用3.9(依赖里 numpy==1.22.0、gradio==3.48.0 是老版本,3.10+ 容易编译失败)
pip install -e .后确认import openvoice不报错- 下载官方 checkpoint 并解压到仓库根目录的
checkpoints/文件夹(V2 模型则解压到checkpoints_v2/,解压后应有converter、base_speakers等子目录) - 有 GPU 就设
device="cuda:0",没有直接写"cpu",全代码路径通用
首次运行不用写代码:打开demo_part1.ipynb,按 cell 顺序执行,最后一步会输出outputs/output_en_default.wav,这就是用仓库自带resources/example_reference.mp3克隆出的第一条语音。跑通它,说明环境、模型、依赖全部就绪。
三、核心玩法拆解
场景1:基础克隆(默认音色 + 默认风格)
用途:把任意一句文本变成"参考人说出来"的效果,是其他所有玩法的地基。
操作:流程固定三步,最小代码只有关键行:
from openvoice import se_extractor from openvoice.api import BaseSpeakerTTS, ToneColorConverter # 1. 加载基础TTS与音色转换器(路径对应 checkpooints 解压目录) # 2. 从参考音频提取音色向量 target_se, _ = se_extractor.get_se("my_reference.wav", tone_color_converter, vad=True) # 3. 先生成中间音频,再转成目标音色 base_speaker_tts.tts(text, "outputs/tmp.wav", speaker="default", language="English") tone_color_converter.convert("outputs/tmp.wav", source_se, target_se, output_path="outputs/final.wav")效果:final.wav的音色与参考音频一致;文本语言与参考音频语言可以不同。注意convert默认会嵌入一段隐形水印,可传message自定义。
场景2:风格切换(同一个人,不同的"演法")
用途:不换音色,只换说话方式——正常、耳语等。
操作:换tts的speaker参数和对应的source_se,转换器部分一行不改:
base_speaker_tts.tts(text, "outputs/tmp.wav", speaker="whispering", language="English", speed=0.9)效果:输出仍是你的克隆音色,但韵律、停顿变成耳语风格。想看完整写法直接对照demo_part1.ipynb,里面有 EN 默认/耳语、ZH 中文三组对照。
场景3:零样本跨语言(V1 路线)
用途:参考音频是中文,想让它说西班牙语、日语——且该语言不在训练集内。
操作:思路是"任何能出声的 TTS 都能当 base speaker"。仓库示例用 OpenAI TTS 生成中间音频,再用转换器换音色(见demo_part2.ipynb)。你也可以用本地 TTS 替代,只要产出一段 wav。
效果:同一音色说 11 种语言,口音由 base speaker 决定,与音色解耦。
场景4:V2 多语言原生合成
用途:不想自己找 base speaker,开箱即用六种语言、音质更好。
操作:额外装一个 MeloTTS:
pip install git+https://github.com/myshell-ai/MeloTTS.git python -m unidic download然后按demo_part3.ipynb走:MeloTTS 出中间音频 →ToneColorConverter换音色,与 V1 流程完全一致,只是检查点目录换成checkpoints_v2。
效果:英/西/法/中/日/韩直接可选,中文还支持句中夹杂外文(如"在这次vacation中去Paris")。
场景5:Gradio 本地演示界面
用途:不想碰代码,网页上传参考音频、输入文本、点按钮。
操作:
python -m openvoice_app --share效果:浏览器打开本地 7860 端口即可交互。界面用 langid 自动检测输入文本语言,V1 界面目前支持中、英两种;其他语言请走 notebook 路线。
四、参数与效果调优
可调参数不多,但每个都有明确手感:
| 参数 | 位置 | 范围 | 作用 |
|---|---|---|---|
speed | tts() | 约 0.8~1.2 | 语速,>1 加快,<1 放慢;耳语风格建议 0.9 |
speaker | tts() | 模型自带音色名 | 决定风格(default / whispering 等) |
language | tts() | 模型支持的语言 | 决定发音体系 |
tau | convert() | 默认 0.3 | 音色转换强度,官方默认值即可,不要乱动 |
| 参考音频 | get_se() | 3~5 秒、单人、无背景音 | 直接决定克隆上限 |
| 参考音频数量 | get_se()支持传列表 | 1~3 段 | 多段会自动平均,长文本质量更稳 |
📊 可直接照抄的推荐组合:
| 目标 | 组合 |
|---|---|
| 标准克隆 | speaker="default",speed=1.0,参考音频 5 秒干净人声 |
| 耳语/低语 | speaker="whispering",speed=0.9 |
| 正式长文本 | 参考音频传 2~3 段(get_se列表),speed=1.0 |
| 中文输出 | language="Chinese"+ ZH base speaker,仅用 default 风格 |
调优顺序建议:先保证参考音频干净(最大变量),再动speed,最后才考虑换 base speaker。
五、报错 & 避坑速查
| 现象 | 原因 | 解法 |
|---|---|---|
| 克隆音色的口音/情绪不像参考人 | OpenVoice 只克隆音色,口音和情绪由 base speaker 决定 | 换带目标口音的 base speaker,别指望转换器 |
| 输出音质差、有杂音 | 参考音频带背景音、过短、多人声或长静音 | 换 3~5 秒单人干净录音;多段平均 |
| 换参考文件后结果没变化 | 用了同名文件但旧的processed/缓存未删 | 删除processed文件夹重跑 |
| 报 Silero 下载失败 | se_extractor的 VAD 需要拉取 silero-vad 包,网络不通 | 手动下载该 zip 并解压到~/.cache/torch/hub/snakers4_silero-vad_master,细节见 docs/QA.md |
| Gradio 界面提示语言不支持 | 本地 demo 仅支持 zh/en 检测 | 用 notebook 路线跑其他语言 |
import时报依赖错 | Python 用了 3.10+ | 重建 conda 环境,固定 python=3.9 |
🔍 通用排查思路:音质问题九成出在参考音频,先换录音再怀疑代码。
六、选型 & 部署扩展
| 场景 | 推荐方式 | 优势 | 局限 |
|---|---|---|---|
| 快速体验、做 demo | openvoice_appGradio | 零代码,界面直观 | 仅中英,V1 模型 |
| 集成进自己的产品 | 直接调用api.py两个类 | 灵活可控,无 UI 开销 | 需自己管检查点与前后处理 |
| 多语言生产 | V2 + MeloTTS | 六语言原生,音质更好 | 多一个依赖要装 |
| 不想折腾环境 | myshell.ai 已部署的在线服务 | 开箱即用 | 非本地,数据上云 |
| Windows / Docker 部署 | 社区非官方指南 | 省踩坑时间 | 非官方维护 |
周边生态:实现基于 VITS 系架构,水印用 wavmark;跨语言 base speaker 可以替换成任意 TTS(包括 OpenAI TTS),这是它扩展性的主要来源。
七、学习路径 & 资源
建议按这个顺序走,从能跑通到能改:
- docs/USAGE.md — 安装与各版本检查点说明
demo_part1.ipynb— 基础克隆 + 风格控制(先跑通这个)demo_part2.ipynb— 零样本跨语言,外部 TTS 当 base speakerdemo_part3.ipynb— V2 多语言原生合成- docs/QA.md — 官方 FAQ,遇问题先查这里
openvoice/api.py— 全部对外 API 就两个类,源码不长值得通读- 参考音频不够用?仓库
resources/下有demo_speaker0/1/2.mp3和example_reference.mp3可直接练手
下一步
克隆能力的边界不在这两个类里,而在你接什么 base speaker——现在就把demo_part1.ipynb跑通,换一段你自己的 5 秒录音,听一下效果,再决定要不要上 V2。跑不通的地方,先翻 docs/QA.md,那里覆盖了绝大多数坑。
【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考