
5分钟跑通OpenVoice语音克隆原理到生产完整拆解【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice想让一段 3 秒参考音频克隆出音色、再输出多语言的语音开源方案里选择不多。OpenVoice 就是 MIT 与 MyShell 推出的即时语音克隆模型精准复制音色、独立控制风格、支持零样本跨语言克隆MIT 协议可免费商用。5 分钟跑通第一次语音克隆环境要求很简单项目要求Python3.9conda 环境依赖PyTorchCUDA 可选CPU 也能跑模型官方 checkpoints 压缩包解压到checkpoints目录conda create -n openvoice python3.9 conda activate openvoice git clone https://gitcode.com/GitHub_Trending/op/OpenVoice cd OpenVoice pip install -e .装好后打开 demo_part1.ipynb核心就两段调用。加载基础说话人 TTS 和音色转换器两个模型从参考音频提取 SE 向量可以理解为声音指纹一个表征说话人身份的嵌入然后先 TTS 生成、再换音色device cuda:0 if torch.cuda.is_available() else cpu base_tts BaseSpeakerTTS(checkpoints/base_speakers/EN/config.json, devicedevice) base_tts.load_ckpt(checkpoints/base_speakers/EN/checkpoint.pth) converter ToneColorConverter(checkpoints/converter/config.json, devicedevice) 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, converter, vadTrue) base_tts.tts(Hello, this is OpenVoice., tmp.wav, speakerdefault, languageEnglish) converter.convert(tmp.wav, source_se, target_se, output_pathout.wav)你应该看到outputs/out.wav一句用别人声音说出来的英文。整个链路里最慢的一步是get_se里的 VAD 切分和 Whisper 处理首跑会下载依赖之后有缓存。拆开看两段式管线到底怎么工作整个系统是一个两级管线代码集中在 openvoice/api.py对应架构图上左右两块。可以把它想象成配音后期基础 TTS 先录一段匿名演员的原声音色转换器像声音工程师把原声里的音色层剥掉、贴上目标人物的音色而情绪、节奏、重音原封不动保留。基础说话人 TTS先产出中性原声输入是文本加风格参数speaker、speed、language输出是含风格但音色固定的中间音频。openvoice/models.py 里的SynthesizerTrn是 VITS 风格的自回归扩散结构按句切分后逐句推理再拼接所以长文本不会爆显存。音色提取从参考音频到 SE 向量openvoice/se_extractor.py 的get_se负责这一段。开启vadTrue时走 Silero VAD 把音频切成 1.5~20 秒的有效语音段再经ReferenceEncoder编码并取均值得到一个 SE 向量。注意它按文件名音频哈希建缓存在processed/目录同一个向量不会重复计算。音色转换器Encoder-Flow-Decoder 换音色convert把音频变成梅尔谱走 Encoder → Flow → Flow⁻¹ → HiFi-GAN Decoder 的变换路径sid_src和sid_tgt分别是源音色和目标音色tau控制替换强度默认 0.3。架构上的关键设计是 IPA 对齐特征音素级对齐让替换音色时保留原声的全部韵律这是跨语言不崩的核心。另外输出默认经 wavmark 嵌入 32 位水印可在构造ToneColorConverter时传enable_watermarkFalse关掉也能用detect_watermark验证。V1 和 V2 的差异一张表说清维度V1V2基础 TTS仓库自带 VITS 基础说话人换用 MeloTTS语言官方带 EN/ZH其他需自备 base speaker原生 EN/ZH/ES/FR/JP/KR 六语音质基线改进训练策略明显更好安装pip install -e .即可额外装 MeloTTS 并跑python -m unidic download 音色转换器只换音色口音和情绪由基础 TTS 决定——这是理解 OpenVoice 能力边界最重要的一句话。进阶玩法三种真实会用到的组合风格控制V1。基础说话人模型自带whispering、shouting、sad、cheerful等 9 种风格 speaker只需换speaker参数和对应的风格 SEsource_se torch.load(checkpoints/base_speakers/EN/en_style_se.pth).to(device) for spk in [whispering, shouting]: base_tts.tts(text, tmp.wav, speakerspk, languageEnglish, speed0.9) converter.convert(tmp.wav, source_se, target_se, output_pathf{spk}.wav)效果上同一个克隆音色可以耳语也可以喊话适合做有声书、播客这类需要多情绪的场景。V2 多语言克隆。demo_part3.ipynb 展示了用 MeloTTS 按语言加载 base speaker再统一过转换器from melo.api import TTS for lang, text in {EN: Hello world., ZH: 你好世界。, JP: こんにちは。}.items(): model TTS(languagelang, devicedevice) spk list(model.hps.data.spk2id)[0] model.tts_to_file(text, spk, tmp.wav, speed1.0) source_se torch.load(fcheckpoints_v2/base_speakers/ses/{lang.lower()}_default.pth) converter.convert(tmp.wav, source_se, target_se, output_pathfout_{lang}.wav)注意每种语言用各自 base speaker 的 SE 作为source_se混用会导致音色残留。零样本跨语言克隆V1。demo_part2.ipynb 里甚至不用本地 TTS直接用 OpenAI TTS 生成任意语言音频再用 OpenVoice 把音色换到目标人声上一次演示了 11 种语言。适合想覆盖的语言很多、不想自己训练 base speaker的场景代价是依赖外部 API。上生产之前调优、踩坑与工程化性能与资源调优要点参考音频质量决定上限单说话人、无背景噪声、无长静音段VAD 之后有效语音越长 SE 越稳。VAD 依赖网络下载get_se首次运行会从 GitHub 拉取 Silero 模型内网环境要手动下载解压到~/.cache/torch/hub/snakers4_silero-vad_master否则直接报错。processed/缓存是坑点缓存按文件名音频哈希命名换参考音频如果同名且旧缓存没清会拿到旧的 SE 向量。GPU 收益明显TTS 推理和 Whisper非 VAD 路径用 medium 模型在 GPUfp16 下快得多CPU 也能跑但批量场景不推荐。水印有额外开销wavmark 按 16000 采样/块编码长音频可忽略短音频会打印 Audio too short。部署与集成建议最快的验证方式是官方 Gradio 服务python -m openvoice_app --share本地起一个带语言检测的克隆界面openvoice/openvoice_app.py 里能看到它对 200 字符以上文本、非中英语言的拦截逻辑。要接进产品建议用 FastAPI 之类的框架包一层模型只加载一次常驻内存参考音频先落盘再走get_seSE 向量缓存复用相同参考音频不必重提。单卡同时跑 TTS 和转换器即可V2 的 MeloTTS 按语言懒加载、用完后释放可以避免六语模型同时驻留。多实例水平扩展时注意processed/目录要共享或隔离别让缓存串号。高频问题速答 资源地图Q生成音频的口音、情绪不像参考人是不是 bugA不是。OpenVoice 只克隆音色tone color口音和情绪由基础 TTS 决定想换就要换带该口音的 base speaker 模型。Q生成音质差怎么排查A官方 QA 给了五项清单参考音频是否有噪声、是否太短、是否多人说话、是否有长静音段、是否忘了删processed/旧缓存。QSilero 下载失败怎么办A手动下载 Silero VAD 的 zip解压到~/.cache/torch/hub/snakers4_silero-vad_master不同版本 silero 的解法见官方 issue 讨论。Q支持中文以外的其他语言吗AV2 原生支持六种语言V1 下只要有该语言的基础说话人模型就能接入官方建议不想训练就直接用现成 TTS API 做 base。Q报错 input audio is too shortAVAD 之后有效语音不足参考音频加长到 5 秒以上、或换掉静音过多的录音即可。Q输出音频里有水印吗A默认开启 wavmark 音频水印ToneColorConverter(config, device, enable_watermarkFalse)可关闭detect_watermark可检测。资源导航openvoice/api.py —— 核心类 BaseSpeakerTTS / ToneColorConverteropenvoice/se_extractor.py —— 参考音色提取与 VAD 切分openvoice/openvoice_app.py —— 本地 Gradio Demo 入口demo_part1.ipynb —— V1 风格控制完整示例demo_part3.ipynb —— V2 多语言示例docs/QA.md —— 官方高频问题清单OpenVoice 团队自己定位它是技术而非产品稳定性和开箱体验仍需要工程层补齐。从 V1 到 V2 的路线看方向很明确更强的原生多语言和更自由的语言扩展等 MeloTTS 侧持续更新这套管线只赚不赔。【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考