news 2026/9/7 8:16:00

OpenVoice 即时语音克隆完整指南:用 5 秒参考音频三步跑通本地声音复刻

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenVoice 即时语音克隆完整指南:用 5 秒参考音频三步跑通本地声音复刻

OpenVoice 即时语音克隆完整指南:用 5 秒参考音频三步跑通本地声音复刻

【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice

手里只有一段 5 秒的人声录音,却想让 TA"开口"朗读任意文本,商业平台要么收费要么不开放接口。OpenVoice 是 MIT 与 MyShell 开源的即时语音克隆工具:从短参考音频提取音色,让该音色说出英文、中文乃至多语言文本,且采用 MIT 许可证可免费商用。

📌 项目速览

OpenVoice 做的事:输入一段参考音频加一段文字,输出"用参考人的音色读这段文字"的语音。它把能力拆成三块——音色克隆(准确复制参考音色)、风格控制(情感、口音、节奏、停顿、语调可独立调节)、零样本跨语言克隆(参考音频和生成文本的语言都无需出现在训练集里)。

适合谁:想在自己项目里接入语音克隆的开发者和研究者。仓库直接提供了三个可运行的 Notebook(demo_part1.ipynb 风格控制、demo_part2.ipynb 跨语言、demo_part3.ipynb V2 多语言)和一个本地 Gradio 网页。官方在 docs/QA.md 里明确说它是"技术而非产品":多数参考音频下效果不错,但不保证每种声音都完美,不适合拿来直接给终端用户当成品用。

不适合什么:如果你想要"上传音频就出成品、零代码"的完整应用,它不是;它交付的是模型和流水线,工程化(稳定性、兜底逻辑)需要自己补。

🚀 完整跑通:从零到生成第一条克隆语音

第 1 步:搭环境

按官方 docs/USAGE.md 的 Linux 安装流程,4 条命令装完依赖:

conda create -n openvoice python=3.9 conda activate openvoice git clone https://gitcode.com/GitHub_Trending/op/OpenVoice cd OpenVoice pip install -e .

装成功的标志是pip install -e .正常结束(依赖版本在 setup.py 中写死,如 numpy 1.22.0、gradio 3.48.0)。若报版本冲突,多半是 conda 环境里已有新版 numpy,删掉重建成 Python 3.9 环境即可。

第 2 步:放模型文件

V1 需要把官方 checkpoint 压缩包(下载地址见 docs/USAGE.md)解压到仓库根目录的checkpoints文件夹,形成checkpoints/base_speakers/ENcheckpoints/base_speakers/ZHcheckpoints/converter三个子目录。漏掉任何一项,后面加载模型都会直接报FileNotFoundError,先确认目录结构再跑代码。

第 3 步:跑最小示例

下面这段脚本完成初始化并从参考音频提取目标音色(仓库自带 resources/example_reference.mp3 可直接用):

import torch from openvoice import se_extractor from openvoice.api import BaseSpeakerTTS, ToneColorConverter device = 'cuda:0' if torch.cuda.is_available() else 'cpu' base_speaker_tts = BaseSpeakerTTS('checkpoints/base_speakers/EN/config.json', device=device) base_speaker_tts.load_ckpt('checkpoints/base_speakers/EN/checkpoint.pth') tone_color_converter = ToneColorConverter('checkpoints/converter/config.json', device=device) tone_color_converter.load_ckpt('checkpoints/converter/checkpoint.pth') source_se = torch.load('checkpoints/base_speakers/EN/en_default_se.pth').to(device) target_se, _ = se_extractor.get_se('resources/example_reference.mp3', tone_color_converter, vad=True)

接着两步生成克隆语音:先让基础 TTS 出"底稿",再交给转换器换音色:

base_speaker_tts.tts("This audio is generated by OpenVoice.", 'outputs/tmp.wav', speaker='default', language='English', speed=1.0) tone_color_converter.convert( audio_src_path='outputs/tmp.wav', src_se=source_se, tgt_se=target_se, output_path='outputs/output.wav', message='@MyShell')

效果验证

播放outputs/output.wav:音色应当与resources/example_reference.mp3中的人声一致,但内容和语速由你给的文本决定。想更省事的话,也可以直接起一个本地网页演示(自动识别中/英文,文本限 200 字符):

python -m openvoice_app --share

浏览器打开生成的地址,粘贴文本、上传参考音频、点 Send,即可在线试听(入口代码见 openvoice/openvoice_app.py)。

🔍 为什么克隆出来的声音"像但不全是":音色与风格是两套模型

OpenVoice 最有辨识度的设计是把"音色"和"怎么说"拆开BaseSpeakerTTS负责把文字变成语音,管情感、口音、节奏;ToneColorConverter只干一件事——把底稿里的音色换成参考人的音色。类比成修图:前者是底片,后者是把"人脸"换掉、但保留构图和光线的工具。

这样做的好处很实际:想换语言或换口音时不用碰克隆模型,换一个对应语言的基础说话人模型即可(仓库自带 EN/ZH 两套,其他语言接任意 TTS 当底稿都行,demo_part2.ipynb 用 OpenAI TTS 当底稿做了 11 种语言的演示)。转换器内部用 IPA(国际音标)对齐特征做音色迁移,保证换掉音色的同时,韵律、停顿这些"非音色信息"原样保留。

对比维度端到端 TTS 声音克隆OpenVoice 分离式方案
换语言/换口音换模型或重新训练只替换基础说话人模型
情感、节奏控制与音色耦合,难单独调由基础模型参数独立控制
使用门槛需针对说话人训练预训练转换器直接用,5 秒音频起步
参考音频要求通常需数分钟数秒到十几秒即可

🛠️ 进阶玩法

换情感说话

风格由ttsspeaker参数控制,英文基础模型可选friendlycheerfulexcitedsadangryterrifiedshoutingwhispering。注意切到非 default 风格时,source_se要换成对应的en_style_se.pth,否则音色转换会失准:

base_speaker_tts.tts("This audio is generated by OpenVoice.", 'outputs/tmp.wav', speaker='whispering', language='English', speed=0.9) source_se = torch.load('checkpoints/base_speakers/EN/en_style_se.pth').to(device)

speed参数同样在这一步生效(0.9 变慢、1.2 变快),而convert里的tau(默认 0.3)控制音色转换强度,数值越大向参考音色靠得越紧。另外convert默认会用 wavmark 往音频里嵌入message指定的不可听水印,部署公开服务时建议保留,也可以给ToneColorConverter(..., enable_watermark=False)关掉。

V2 版本:六种语言原生支持

V2 音质更好且原生支持英、西、法、中、日、韩六种语言(官方说明见 README)。checkpoint 解压到checkpoints_v2,并按 docs/USAGE.md 装好 MeloTTS 后即可把 MeloTTS 各语言模型当基础说话人,完整写法见 demo_part3.ipynb,核心就是"生成底稿 + 换音色"两步:

from melo.api import TTS model = TTS(language='ZH', device=device) speaker_id = model.hps.data.spk2id['ZH'] model.tts_to_file("你好,这是一个 OpenVoice V2 示例。", speaker_id, 'outputs/tmp.wav') source_se = torch.load('checkpoints_v2/base_speakers/ses/zh.pth', map_location=device) tone_color_converter.convert(audio_src_path='outputs/tmp.wav', src_se=source_se, tgt_se=target_se, output_path='outputs/v2_zh.wav')

source_se不用自己提取,V2 已按说话人预先算好,存放在checkpoints_v2/base_speakers/ses/下(文件名与 MeloTTS 的 speaker 键名小写对应)。

⚠️ 避坑速查

  • 现象:克隆出来的口音、情感和参考人完全对不上。原因:OpenVoice 只克隆音色(tone color),口音和情感由基础说话人模型决定,不在转换范围内。解决:换用目标口音/情感的基础说话人模型,或自行训练并替换(框架支持直接换入自己的基础模型)。
  • 现象:生成语音有杂音、质感差。原因:参考音频带背景噪声、时长过短、多人同说、或含大段静音;参考音频过短还会直接抛出input audio is too short解决:换 5~15 秒、单人、干净无长静音的录音;同一说话人参考音频文件名尽量唯一,避免processed目录里的旧切分结果造成混乱(官方排查清单见 docs/QA.md)。
  • 现象get_se时卡在 Silero VAD 模型下载并报错。原因se_extractor默认用 Silero VAD 切分音频,首次运行需联网拉取模型,网络不通则失败。解决:手动下载 Silero VAD 仓库 zip 包,解压到~/.cache/torch/hub/snakers4_silero-vad_master(详见 openvoice/se_extractor.py 与官方 QA)。
  • 现象:纯 CPU 机器上调get_se(..., vad=False)报 CUDA 相关错误。原因:whisper 切分分支在代码里固定使用device="cuda"+ float16。解决:没有 GPU 就保持默认的vad=True(Silero VAD 可跑 CPU),或配置好 GPU 环境。
  • 现象:Gradio 网页里粘贴长文本被拒。原因:本地演示对输入有限制:文本不超过 200 字符,语言仅支持中文和英文。解决:正式使用走 Notebook 代码路径,长文本可先自行分句再逐段合成(BaseSpeakerTTS.tts内部本身就按句切分)。

收尾

OpenVoice 的价值在于把"音色"从 TTS 里拆成了可替换的部件:MIT 许可可免费商用,5 秒音频即可克隆音色,换语言只需换基础说话人模型,仓库内 demo 和 Gradio 网页开箱即用。边界也要清楚:它只复刻音色不复刻口音和情感,V1 自带基础模型只有英/中两套,其他语言要自己接 TTS 当底稿;它是给开发者搭能力的技术底座,不是拿来即用的成品。

【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 4:56:08

CATL电池产线PLC编程实战:S7-1500下SCL与梯形图协同之道

简介:本资源为宁德时代(CATL)电池生产线项目所用的西门子S7-1500 PLC完整工程程序包,面向自动化工程师、PLC程序员及智能制造产线调试人员,聚焦动力电池产线控制逻辑实现与标准化编程实践。包内含150个文件&#xff0c…

作者头像 李华
网站建设 2026/9/6 12:47:11

AI Agent 能力评测:从 METR 方法论到最小可用系统

“距全面AI接管仅剩6个月”——如果你最近在技术社区刷到这句话,第一反应大概率是怀疑。怀疑是对的。但比怀疑更有价值的,是弄清楚这句话到底从哪来、METR 是谁、所谓“6个月”是怎么被推出来的,以及它和我们日常做的 AI 工程有没有关系。如果…

作者头像 李华
网站建设 2026/9/7 8:15:29

dcpTool:深度解析与编辑DNG相机配置文件的全流程指南

简介:dcpTool 是一款面向摄影后期与 RAW 工作流开发者的开源 DNG 相机配置文件编辑器,用于将 DCP 文件的二进制结构转换为可编辑的 XML 格式,并支持去马赛克、解捻等多种实用变换。资源包为 zip 压缩包,共 246 个文件、约 7.74MB&…

作者头像 李华
网站建设 2026/9/5 3:53:21

yolov8入门篇

b站博主你可是处女啊:https://space.bilibili.com/21060026/upload/video 1、YOLOv8 环境安装 miniconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ pypi: https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ pytorch: https://pytorch.org/ ultr…

作者头像 李华
网站建设 2026/9/6 5:05:37

Ollama 桌面体验升级:GTK 原生聊天客户端替代终端与 Web UI

在 Linux 上装好 Ollama、拉好模型之后,很多人会突然发现自己回到了一个很尴尬的处境:想和本地模型聊天,要么用命令行一行一行敲,要么临时起一个 Web 服务,然后在浏览器里开个页面。命令行不方便,网页又总觉…

作者头像 李华
网站建设 2026/9/3 13:02:27

Mechanistic Exploration of Backdoored Large Language Model Attention Patterns

文章总结与翻译 一、文章主要内容 本文聚焦大型语言模型(LLMs)中的后门攻击问题,通过机械可解释性方法,探究被植入“潜伏代理”的后门模型与干净模型在内部结构上的差异,旨在为后门攻击的检测与缓解提供依据。 1. 研究背景与问题 后门攻击威胁:攻击者通过在训练数据中…

作者头像 李华