news 2026/9/7 7:47:17

5 分钟跑通 OpenVoice:开源零样本语音克隆如何做到“一句话换音色“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5 分钟跑通 OpenVoice:开源零样本语音克隆如何做到“一句话换音色“

5 分钟跑通 OpenVoice:开源零样本语音克隆如何做到"一句话换音色"

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

OpenVoice 是 MIT 与 MyShell 联合开源的音频基础模型,核心能力是零样本语音克隆:给它几秒参考音频,提取出说话人的音色特征(SE 向量),再让一段已生成的语音"换成这个人的声音",并支持跨语言输出和风格控制。适合想给自己的应用接入换声能力的开发者和研究者。装好环境、下载好模型后,约 5 分钟就能用最小示例跑出一段克隆语音;不想装环境的话,官方文档里列的在线小部件可以直接试。

一、快速上手:从 clone 到第一段克隆语音

先说清楚它"能干什么"再动手:输入任意语言的参考音频,OpenVoice 提取音色后用目标音色朗读指定文本,V2 版本原生支持英语、西班牙语、法语、中文、日语、韩语六种语言,且 V1、V2 均为 MIT 协议,可商用。

环境要求很轻:

  • Linux 系统(官方安装指南面向 Linux;Windows/Docker 有社区非官方指南)
  • Python 3.9 + conda + PyTorch(有 NVIDIA GPU 体验最好,CPU 也能跑)
  • 下载好的模型检查点:V1 解压到checkpoints/,V2 解压到checkpoints_v2/(下载地址在官方使用说明里)
  • V2 额外需要 MeloTTS 作为基础 TTS 引擎:pip install git+https://github.com/myshell-ai/MeloTTS.git,然后python -m unidic download

命令合在一起就是一段:

conda create -n openvoice python=3.9 && conda activate openvoice git clone https://gitcode.com/GitHub_Trending/op/OpenVoice cd OpenVoice && pip install -e . # 按 docs/USAGE.md 中的链接下载 checkpoints_1226.zip 解压到 checkpoints/

最小可运行示例(基于 demo_part1.ipynb 精简,V1 英文版):

import torch from openvoice import se_extractor from openvoice.api import BaseSpeakerTTS, ToneColorConverter device = "cuda:0" if torch.cuda.is_available() else "cpu" # 基础说话人 TTS:负责"念字",音色是它自带的 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') # 从参考音频提取目标音色(自动 VAD 分段,缓存到 processed/ 目录) target_se, _ = se_extractor.get_se('resources/example_reference.mp3', converter, vad=True) src_se = torch.load('checkpoints/base_speakers/EN/en_default_se.pth').to(device) base.tts("Hello, this is a cloned voice.", 'outputs/tmp.wav', speaker='default', language='English', speed=1.0) converter.convert('outputs/tmp.wav', src_se, target_se, output_path='outputs/cloned.wav', message='@MyShell')

跑完听outputs/cloned.wav:内容念得字正腔圆,声音却换成了参考音频里的那个人。V2 的最小流程见 demo_part3.ipynb,把checkpoints换成checkpoints_v2,基础 TTS 换成 MeloTTS 即可。

二、场景实战:三种最常见用法

场景 1:给克隆语音换风格(耳语、慢速)

想要什么效果:同一音色下,让说话人用耳语、慢速等不同风格念同一句话。

怎么做:V1 的基础说话人模型内置多个风格位(defaultwhispering),换风格只需要改tts()speaker参数,并加载对应的风格 SE:

source_se = torch.load('checkpoints/base_speakers/EN/en_style_se.pth').to(device) base.tts(text, 'outputs/tmp.wav', speaker='whispering', language='English', speed=0.9) # speed<1 变慢,>1 变快

关键参数:speaker决定风格位,speed控制语速(内部实现为length_scale = 1/speed)。完整示例见 demo_part1.ipynb。

场景 2:跨语言克隆(参考是中文,念英语)

想要什么效果:用一个人的中文参考音频,让他"说"另一种语言——这正是 OpenVoice 主打的零样本跨语言克隆,参考语音和生成语音的语言都可以不在多说话人多语言训练集里。

怎么做:跨语言的"换字"靠基础 TTS 完成,音色部分不动。V1 自带 EN、ZH 两个基础模型,中文文本直接换checkpoints/base_speakers/ZH的模型和zh_default_se.pthlanguage='Chinese'

# 换基础说话人模型(ZH)后 base_zh.tts("今天天气真好,我们一起出去吃饭吧。", 'outputs/tmp.wav', speaker='default', language='Chinese', speed=1.0)

六种语言的完整对比在 demo_part3.ipynb;V1 的跨语言示例(含用 OpenAI TTS 当任意语言基础音色的玩法)在 demo_part2.ipynb。

场景 3:不想写代码,起个本地页面

想要什么效果:网页上传参考音频、输入文本、点按钮出结果。

怎么做:一行命令启动 Gradio 本地 Demo(支持中、英):

python -m openvoice_app --share # --share 生成可分享链接

界面逻辑就是"选风格 + 传音频 + 填文本"三步。

三、机制速览:三个模块各管一摊

OpenVoice 把"生成语音"拆成两件事:基础说话人 TTS 模型(BaseSpeakerTTS)负责念字、定节奏和情感,它念出来的声音是自带的"默认音色";音色转换器(ToneColorConverter)负责换嗓子。你先把参考音频喂给extract_se/get_se得到目标音色向量,再让转换器把 TTS 输出的"源音色"替换成"目标音色"——类比一下:TTS 是写了稿子的播音员,转换器是把播音员的嗓音 P 成指定的人,稿子和台风都不变。

替换之所以干净,靠的是 IPA 对齐(国际音标对齐):转换器内部把语音编码成与具体音色无关的音素级特征,只替换音色维度,其余风格信息原样保留。这也是它敢承诺"参考语音和生成语音都可以是训练集外的语言"的原因。

四、调参与避坑:参数速查 + 常见坑清单

参数速查表

参数推荐值最低要求影响
参考音频时长5–15 秒3 秒左右太短音色特征提取不准,get_se会按 10 秒自动分段
参考音频质量干净、单人、无长静音无明显背景噪声噪声会被当成"音色"一起克隆过去
speed(tts)1.00.5–2.0 之间语速控制,实现为 length_scale=1/speed
speaker(tts)按风格选 default/whispering模型内存在的风格位决定风格位,需搭配对应风格的 src_se
tau(convert)默认 0.30.0–1.0音色融合强度,越小保留源音色越多
vad(get_se)TrueFalseTrue 时自动分段并缓存到processed/,重复调用直接读缓存
message(convert)如 "@MyShell"任意短字符串输出音频会嵌入该字符串水印,可用detect_watermark检测

常见坑清单

  • 生成音色不像参考人 → 先检查参考音频:是否有背景噪声、是否多人同框、是否夹杂长静音;另一个高频原因是重用了旧缓存——换音频但文件名不变且processed/没清理,get_se会返回上一次的 SE → 清理processed/目录后重新提取。
  • 觉得"口音/情感和参考人不一样" → 这不是 bug:OpenVoice 只克隆音色,口音和情感由基础 TTS 模型决定 → 想换口音/情感就换对应风格的基础说话人模型,或自己训练接入(框架设计上就是可替换的)。
  • 跨语言发音不标准 → V1 的BaseSpeakerTTS.tts()只认English/Chinese两个 language 值,传别的会直接 assert 报错 → 六语言原生输出请用 V2 + MeloTTS,或按 demo_part2.ipynb 的思路自备其他语言基础 TTS。
  • 第一次跑get_se卡在下载 Silero VAD → 机器访问不了 GitHub 导致 VAD 模型拉取失败 → 手动下载 silero-vad 的 zip 解压到~/.cache/torch/hub/对应目录(docs/QA.md 有说明)。
  • 输出里隐约觉得"不太干净" → 默认开启水印,音频中嵌入了message字符串 → 不需要水印时可初始化ToneColorConverter(..., enable_watermark=False)
  • V2 安装 MeloTTS 时依赖冲突 → 官方指南是先pip install -e .装 OpenVoice 本体,再单独装 MeloTTS;冲突时建议独立 conda 环境隔离处理。

五、走向生产:几点建议,点到为止

  • SE 向量是纯 torch 张量,参考音频不变就把它存下来(extract_se支持se_save_path),服务里别每次请求都重新get_se
  • GPU 推理 + 模型常驻内存;BaseSpeakerTTS按语言各加载一份,内存吃紧时只挂当前用得到的语言。
  • 快速验证可以直接python -m openvoice_app --share起 Gradio 服务,正式接入时把tts + convert两步包进 HTTP 接口即可,核心 API 都在 openvoice/api.py,音色提取在 openvoice/se_extractor.py。
  • 长文本会自动按句切分后拼接(tts()内置分句),单句过长仍建议自行按标点切段再逐段生成。

OpenVoice 的定位是"技术"而非"开箱即用的产品"——多数情况下它表现很好,但工程化打磨(稳定性、极端 case)仍需你自己补上。想继续深入,从这三个入口开始最快:docs/USAGE.md(安装与检查点下载)、docs/QA.md(官方问答)、demo_part1.ipynb / demo_part2.ipynb / demo_part3.ipynb(三个版本的完整可跑示例)。

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

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

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

51单片机教室智能照明系统设计:DS1302时钟与红外计数实战

简介&#xff1a;本资源是一套完整的基于STC89C52单片机的教室智能照明控制系统设计资料&#xff0c;面向嵌入式初学者、课程设计学生及电子类毕业设计者&#xff0c;解决传统教室照明无法按人数、光照强度与作息时间自动调控的能耗与管理问题。压缩包共78个文件&#xff0c;涵…

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

AI口语陪练:从纠错工具到沉浸环境的范式演进与实践指南

你有没有过这样的经历&#xff1a;明明背了无数单词&#xff0c;语法书也翻烂了&#xff0c;可一到需要开口说英语的时候&#xff0c;大脑就一片空白&#xff0c;喉咙像被堵住一样&#xff0c;半天憋不出一句完整的话&#xff1f;或者&#xff0c;鼓起勇气对着手机App练习&…

作者头像 李华
网站建设 2026/9/6 4:56:08

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

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

作者头像 李华