OpenVoice 语音克隆实战:从一段10秒参考音到六语配音的完整路径

发布时间:2026/9/1 10:59:23
OpenVoice 语音克隆实战:从一段10秒参考音到六语配音的完整路径 OpenVoice 语音克隆实战从一段10秒参考音到六语配音的完整路径【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice想让自己的声音替你朗读一整本小说最大的障碍往往不是文本而是怎么找到一个配得上你嗓音的音色。OpenVoice 是 MyShellMIT开源的语音克隆技术给你一段 10 秒左右的参考音频它就能提取出发声者的音色特征向量SE 向量可以理解为一张声音指纹用来唯一表征这个人是谁再让任意 TTS 引擎用这个音色把新文本读出来。和需要几分钟录音、还要自己训练模型的端到端克隆方案相比它的差异点在于即时克隆——不训练、不微调参考音频甚至可以是任何语言。一段声音的完整旅程从文本到克隆语音OpenVoice 把生成声音拆成两件职责不同的事基础说话人 TTSBase Speaker负责说什么、什么情绪、多快音色转换器 ToneColorConverter 负责用谁的声音说。文本进来之后先经过基础说话人 TTS——V1 用内置的BaseSpeakerTTSV2 则接入 MeloTTS 这个多语言引擎——产出一段中间音频。这句话的内容、节奏、情绪都对了但说话人是模型自带的固定基础音色不是你要克隆的那个人。与此同时你的参考音频被 VAD语音活动检测用来自动切出有人说话的片段切成分段每段转成梅尔频谱一种把声音画成时间×频率二维图的表示送入 ref_enc 编码器压缩出目标 SE 向量。关键的戏法在下一步。中间音频同样走编码器—Flow—解码器结构其中 Flow 部分使用 IPA 对齐的中间特征国际音标对齐保证跨语言时音素级别对得上把音色从音频里剥离出去同时保留情绪、节奏、语调源 SE基础说话人和目标 SE被克隆的人被注入解码器最终输出的音频就变成用被克隆人的音色说着基础说话人的内容。所以同一个克隆音色既能说英语也能说中文还不串味。整条链路的核心代码都在 openvoice/api.py 里。⚠️ 容易忽略的一点OpenVoice 只克隆音色不克隆口音和情绪。口音和情绪由基础说话人 TTS 决定克隆出来的声音带着基础音色口音是设计如此不是 bug。从零到第一句克隆音装好就跑的清单环境三行搞定建 Python 3.9 环境、克隆仓库、装依赖。conda create -n openvoice python3.9 conda activate openvoice git clone https://gitcode.com/GitHub_Trending/op/OpenVoice cd OpenVoice pip install -e .然后按 docs/USAGE.md 里的说明下载对应的 checkpoint 压缩包解压到checkpointsV1或checkpoints_v2V2文件夹。V2 还需要按文档里的命令额外安装 MeloTTS 多语言引擎。两个版本值得先花 10 秒区分一下V1V2基础 TTS内置 BaseSpeakerTTSMeloTTS 多语言引擎语言英语、中文英语多口音、西、法、中、日、韩Checkpoint 目录checkpoints/checkpoints_v2/定位快速体验风格控制音质更好原生六语最小可跑示例的核心其实就四件事加载转换器、提取目标音色、生成基础音频、转换音色。import torch from openvoice import se_extractor from openvoice.api import ToneColorConverter device cuda:0 if torch.cuda.is_available() else cpu tone_color_converter ToneColorConverter(checkpoints_v2/converter/config.json, devicedevice) tone_color_converter.load_ckpt(checkpoints_v2/converter/checkpoint.pth) target_se, _ se_extractor.get_se(reference.mp3, tone_color_converter, vadTrue)接着用任意 TTS比如 MeloTTS 的tts_to_file把目标文本读成tmp.wav再调convert完成换音色tone_color_converter.convert( audio_src_pathtmp.wav, src_sesource_se, # 基础说话人的 SE 向量checkpoints_v2/base_speakers/ses/ 下 tgt_setarget_se, # 参考说话人的 SE 向量 output_pathcloned.wav, messageMyShell)message参数会往音频里写入一个不可闻的水印官方明确保留检测能力公开发布内容时建议保留。完整可运行的版本直接看 demo_part3.ipynb。三种玩法跨语言播报换语言不换声音V2 的跨语言关键在于目标 SE 向量跟语言无关提取一次反复用。循环里只换 MeloTTS 的语言参数和对应的源 SE 文件克隆音色保持不变。from melo.api import TTS texts { EN: This voice was cloned by OpenVoice., ZH: 你好这是被克隆的声音。, JP: こんにちは、これはクローンされた声です。, } for language, text in texts.items(): model TTS(languagelanguage, devicedevice) speaker_ids model.hps.data.spk2id speaker_key list(speaker_ids.keys())[0] model.tts_to_file(text, speaker_ids[speaker_key], tmp.wav) source_se torch.load(fcheckpoints_v2/base_speakers/ses/{speaker_key.lower().replace(_, -)}.pth, map_locationdevice) tone_color_converter.convert(tmp.wav, source_se, target_se, output_pathfout_{language}.wav)注意最后一行 SE 文件的命名规则与 demo_part3.ipynb 完全一致以该文件为准。同一段参考音可以让同一个人说出英语、中文、日语参考音频本身也可以是任何语言不必和输出语言一致。情感化配音同一声音也能耳语V1 的基础说话人 TTS 内置了 9 个风格说话人default、friendly、cheerful、excited、sad、angry、terrified、shouting、whispering。换情绪只需要改speaker参数语速则由speed控制。base_speaker_tts.tts(text, tmp.wav, speakerwhispering, languageEnglish, speed0.9) 一个不显眼的坑切换speaker后src_se必须换成该风格对应的 SE例如checkpoints/base_speakers/EN/下的en_style_se.pth否则换色会不准。每个风格在 checkpoint 包里都有配套算好的 SE 文件参考 demo_part1.ipynb 的用法。批量合成文本列表进整套音频出批量本质上就是循环一条文本生成一次基础音频、转换、落盘。长文本交给 TTS 自行分句V1 的tts内部会自动切句并加停顿拼接。GPU 显存紧张时把转换器切到devicecpu即可音质不变只是慢一些。踩坑速查按现象对号入座报 input audio is too shortVAD 切不出任何语音段。换成 3–10 秒的干净单人录音去掉长静音段。口音/情绪不像参考人设计如此只克隆音色。想要不同口音换对应口音的基础说话人详见 docs/QA.md 第一部分。同名音频复用结果像没变get_se会把 SE 按音频名缓存在processed文件夹。换个文件名或给get_se传一个新的target_dir。Silero VAD 下载失败机器访问不了 GitHub按 docs/QA.md 的 Silero 一节手动下载压缩包放到 torch 的 hub 缓存目录。CUDA out of memorydevicecpu兜底或缩短参考音频减少分段数量。它不擅长的部分OpenVoice 自己定位为技术而非产品它不保证对每副嗓子都出完美的音色参考音频的挑选和预处理仍要你自己把关。风格词表也被基础模型自带的说话人数框住口音和情绪则完全不在克隆范围内。值得持续关注的方向是 V2 的音质迭代与原生语言集扩展——而基础说话人本身是可插拔的你换上哪个开源 TTS语言覆盖的上限就是哪。【免费下载链接】OpenVoiceInstant voice cloning by MIT and MyShell. Audio foundation model.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻