OpenVoice 语音克隆实操手册:3 秒参考音频,6 种语言音色迁移

发布时间:2026/9/1 9:23:05
OpenVoice 语音克隆实操手册:3 秒参考音频,6 种语言音色迁移 OpenVoice 语音克隆实操手册3 秒参考音频6 种语言音色迁移【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoiceOpenVoice 是 MyShell 开源的即时语音克隆instant voice cloning系统一段几秒的参考音频就能把任意 TTS 生成语音的音色迁移到该说话人身上V2 版本原生覆盖英、西、法、中、日、韩六种语言且全程可本地运行。它和端到端零样本 TTS 的关键差异是两段式——一个负责说内容的基础 TTS 模型一个只负责换音色的 tone color converter音色迁移这一步不需要针对目标说话人重新训练。快速上手从零到首次输出以 V2 为例流程只有三步从参考音频提取音色嵌入SE→ 用 MeloTTS 生成一段目标语言的素声 → 转换器把素声的音色替换为参考人的音色。参考音频给 3–10 秒干净单人语音即可出效果。安装环境官方只维护 Linux 路径conda create -n openvoice python3.9 conda activate openvoice克隆代码并安装git clone https://gitcode.com/GitHub_Trending/op/OpenVoice cd OpenVoice pip install -e .下载 V2 权重checkpoints_v2_0417 包解压为项目根目录下的checkpoints_v2/文件夹V2 的基础 TTS 是 MeloTTS需要单独安装pip install githttps://github.com/myshell-ai/MeloTTS.git python -m unidic download首次输出按 demo_part3.ipynb 精简import torch from openvoice import se_extractor from openvoice.api import ToneColorConverter from melo.api import TTS device cuda:0 if torch.cuda.is_available() else cpu converter ToneColorConverter(checkpoints_v2/converter/config.json, devicedevice) converter.load_ckpt(checkpoints_v2/converter/checkpoint.pth) # 1. 从参考音频提取目标音色嵌入SE仓库自带示例音频 target_se, audio_name se_extractor.get_se( resources/example_reference.mp3, converter, vadTrue) # 2. MeloTTS 生成素声任意 6 语言之一多说话人可选 model TTS(languageEN_NEWEST, devicedevice) model.tts_to_file(Hello, this is OpenVoice., speaker_id0, src_pathoutputs/tmp.wav) # 3. 音色迁移src_se 是素声说话人tgt_se 是参考人 src_se torch.load(checkpoints_v2/base_speakers/ses/en-newest.pth, map_locationdevice) converter.convert(audio_src_pathoutputs/tmp.wav, src_sesrc_se, tgt_setarget_se, output_pathoutputs/cloned.wav)运行后outputs/cloned.wav就是目标语言、目标人音色的输出参考音频切分结果和 SE 会缓存在processed/目录重复运行同一条参考音频不会重新切分。V1 用户则直接使用仓库自带的BaseSpeakerTTS支持languageEnglish/Chinese完整写法见 demo_part1.ipynb。它是怎么工作的OpenVoice 双模块数据流左侧参考音频经 VAD 切分与说话人编码器得到目标 SE右侧文本经基础 TTS 与说话人编码器得到源 SE两者在 tone color converter 中融合后输出克隆语音一条参考音频和一段目标文本进来产出带目标人音色的语音中间经过三个环节参考音频 → 音色嵌入。se_extractor.get_se先用 Silero VAD 去掉静音、把长音频按约 10 秒切段单段保留在 1.5–20 秒之间再逐段算梅尔谱、过ref_enc说话人编码器各段 SE 取均值得到 256 维音色向量。文本 → 素声。基础 TTSV2 用 MeloTTSV1 用BaseSpeakerTTS只管内容、语言和韵律产出的是素声说话人的语音音色由它自己的 SE 描述。素声 → 克隆语音。converter 的voice_conversion在频谱域把素声从源 SE 的方向迁移到目标 SE 的方向tau0.3控制步长只改音色不改说的是什么、什么情感。输出默认经 wavmark 嵌入一段可检测的数字水印ToneColorConverter(..., enable_watermarkFalse)可关闭。其余模块——Gradio 界面 openvoice/openvoice_app.py、V1 的 VITS 合成器 openvoice/models.py——都是上面三步的封装不影响这条主线。核心能力实操零样本参考音频克隆适用只有一小段目标人的录音想让他说出任意文本。# 同上文初始化converter、target_se 已就绪 converter.convert(audio_src_pathoutputs/tmp.wav, src_sesrc_se, tgt_setarget_se, output_pathoutputs/cloned.wav)预期输出音色接近参考人、内容与素声一致的 wav。参考音频含背景音乐或多人说话时先手动剪出干净单人片段再送入多人混音、强 BGM 场景不建议直接用它。跨语言语音克隆配置适用参考人只会说一种语言你却要输出别的语言。V2 内置六种语言的基础说话人源 SE 按语言和说话人从checkpoints_v2/base_speakers/ses/加载model TTS(languageZH, devicedevice) # 也可选 ES / FR / JP / KR model.tts_to_file(今天天气真好。, speaker_id0, src_pathoutputs/tmp.wav) src_se torch.load(checkpoints_v2/base_speakers/ses/zh.pth, map_locationdevice) converter.convert(outputs/tmp.wav, src_se, target_se, output_pathoutputs/cloned_zh.wav)预期输出英文参考人的音色 中文语音。论文中验证过训练集未见的语言对德、意、俄等同样可行前提是换用该语言的素声来源见 demo_part2.ipynb。说话风格控制适用同一音色下切换耳语、喊叫、悲伤等语气。注意 OpenVoice 只迁移音色情感由素声决定——V1 的英文基础说话人预置了 9 种风格换speaker和对应源 SE 即可openvoice/openvoice_app.py 中有完整列表# 同上文 V1 初始化base_speaker_tts、converter、target_se 已就绪 import torch base_speaker_tts.tts(He hoped there would be stew for dinner., outputs/tmp.wav, speakerwhispering, languageEnglish, speed0.9) style_se torch.load(checkpoints/base_speakers/EN/en_style_se.pth).to(device) converter.convert(outputs/tmp.wav, style_se, target_se, output_pathoutputs/cloned_whisper.wav)预期输出目标人音色、耳语语气的英文语音。可用风格default / whispering / shouting / excited / cheerful / terrified / angry / sad / friendly仅英文素声中文素声目前只有default。进阶与调优参数默认 / 推荐值影响convert(tau...)0.3音色迁移强度越大越贴近参考人越大越可能损伤音质tts(speed...)1.0素声语速输出时长随之变化get_se(vad...)TrueTrue 用 Silero VAD 去静音切分False 改用 faster-whisper 按句子切分参考音频10–30 秒、单人、无背景音过短会触发切分断言过长时各段 SE 取均值稳定性提升processed/目录手动管理按文件名 音频 hash 缓存切分结果与 SE什么时候需要调它tau和speed默认值下先跑通再动如果输出仍带素声口音或音色像参考人不够把tau提到 0.5–0.8 试参考音频改动后输出却没变先怀疑processed/缓存而不是参数。不想写代码也可以直接跑仓库内置的 Gradio 应用需要 V1 权重python -m openvoice_app --shareOpenVoice TTS 小部件选择语言与风格后输入文本即可生成带参考人音色的语音踩坑速查Silero VAD 模型下载失败现象se_extractor首次运行时从 snakers4/silero-vad 仓库下载 zip 报错常见于无法访问 GitHub 的机器docs/QA.md 收录了此问题。原因VAD 权重默认在线拉取。修复手动下载 silero-vad 的 master zip 包解压到~/.cache/torch/hub/snakers4_silero-vad_master或换切分器get_se(..., vadFalse)改用 faster-whisper 按句子切段。get_se 抛出 input audio is too short现象AssertionError: input audio is too short。原因VAD 去掉静音后的有效语音不足 10 秒切不出段落se_extractor.py中assert num_splits 0。修复换 10–30 秒的参考音频确保全程是有效人声、无长段静音。克隆相似度不达预期现象输出语音不像参考人。原因OpenVoice 只迁移音色口音与情感来自素声模型不是 bugdocs/QA.md 有明确说明。修复口音/情感不符时换带该风格的素声V1 英文基础支持 9 种风格中文素声只有default。若只是音色不像优先换更干净、更长的参考音频而不是调模型参数。参考音频换了输出却和上次一样现象替换参考音频重跑结果不变。原因processed/目录按文件名 内容 hash缓存了切分结果和 SE同名文件可能命中旧缓存。修复删掉processed/后重新运行让 SE 重新提取。Gradio demo 限制文本 200 字符现象openvoice_app报Text length limited to 200 characters且只接受中英文输入。原因本地 demo 刻意做了长度与语言限制。修复长文本改用 Python API 调用BaseSpeakerTTS.tts内部会按句自动切分没有这个限制。适用边界与选型建议擅长秒级零样本音色迁移、跨语言克隆、风格情感控制MIT 协议可商用。不擅长且需要诚实说明它只克隆音色不克隆参考人的口音与情感想要某人口音的英语得自己准备带该口音的素声官方定位是technology, not a productdocs/QA.md不保证每条参考音频都出好效果多人混响、强背景音输入会直接劣化不适合实时流式场景SE 提取含 VAD 切分convert处理整段音频端到端延迟秒级目标语言没有现成素声时替换任意开源 TTS 作为素声来源即可converter 部分与素声解耦要产品级稳定性则考虑商业 TTS API延伸路径使用说明docs/USAGE.md常见问答docs/QA.md可运行示例demo_part1.ipynbV1 风格控制、demo_part2.ipynbV1 跨语言、demo_part3.ipynbV2 六语言源码入口openvoice/api.py两个核心类、openvoice/se_extractor.pySE 提取建议阅读顺序先按快速上手跑通 V2 首次输出再对照它是怎么工作的理解convert的三个输入最后带着具体问题翻 QA 文档。【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考