
各位朋友好先报个背景我把 VoxCPM2、CosyVoice3、OmniVoice 这三款主流的本地 AI 声音克隆方案装在了同一台机器上用完全相同的参考音频和相同的合成文本跑了一整天。这篇文章就是把这一天里踩过的坑、对比过的数据、反复试出来的参数全部摊开讲。如果你是第一次接触本地 AI 声音克隆或者正在纠结该用哪款工具做有声内容、游戏配音、语音助手这篇实测应该能帮你节约不少试错时间。先说明一点这次测试我只用了自己的声音录音和明确得到授权的公开样本。未经授权克隆他人声音用于营销、直播扮仿或冒充身份无论在哪个平台都有法律风险这一点在动手之前必须有数。1. 三款工具的定位差异与现实选型逻辑1.1 VoxCPM2轻量优先的“快枪手”VoxCPM2 给我最大的印象是“不挑设备”。同一条 80 字左右的句子我的 RTX 4070 Ti SUPER 跑起来显存占用稳定在 2.1GB 左右即使退到核显机器上用 CPU 推理也只是慢一点不会跑不动。它的模型文件比较精简启动速度很快适合实时性要求高的场景比如直播互动、会议演示里的即时变声或者在资源受限的本地环境里做批量短句合成。代价也很明显。在音色还原上它能做到“听着像”但句尾的收气、停顿间的气声、重音处那种细微的“劲儿”会显得毛糙。生成稳定度方面我测的 6 组短句里出现过一次明显的吞字把文本末尾的“意外”这个词直接漏掉了。这和三方语音合成方案追求“高保真韵律重建”的路线不太一样VoxCPM2 更像是把“快”和“成本低”放在第一位的工程向方案。1.2 CosyVoice3开箱可用的“全能选手”CosyVoice3 的定位和 VoxCPM2 完全不同。它的链路设计更完整从文本编码到声学特征生成再到声码器重建每一步都有相对独立的模块所以模型文件和组织结构都更重。换来的是我在实测里最满意的一项指标韵律自然度。同样是那句夜间电台开场白它能把我录音里轻微的换气节奏、句尾的降调、甚至“意外”这个词前的微妙停顿都重建出来第一遍听就有种“这就是原声在念稿”的错觉。中文场景是它的明显强项多语言效果我简单试了试英文和粤语也能用但细节上没有中文这么顺。如果你的核心诉求是音频质量、韵律还原和稳定的生成效果CosyVoice3 是这三款里让我最省心的一款。1.3 OmniVoice多语言与情感表现的“特色党”OmniVoice 最吸引我的点是它在音色控制之外多了风格维度的选项。它不仅能把一个人的音色clone下来还允许你传入“neutral / happy / sad / whisper”之类的语气标签让同一句文本在同一个音色下呈现出不同情绪状态。这对我来说是个很实用的能力做多角色对话配音时同一音色配出两个语气版本比反复外采人声方便得多。实测里 OmniVoice 的生成结果带有一种轻微的“播音腔”也就是整体语气比原声更工整、顿挫更明显。客观相似度上它略低于 CosyVoice3但生成过程稳定很少出现吞字和重复词。它比较适合中期要把“音色可变、风格可变”当核心需求的创作者比如有声书里一个角色需要在不同章节展现不同情绪。1.4 为什么拿它们仨做横评一句话总结VoxCPM2 代表资源敏感型CosyVoice3 代表质量敏感型OmniVoice 代表功能敏感型。这三款工具的侧重点刚好把本地 AI 声音克隆的主流需求切成三块。把它们放到同一环境里跑同一句话不是为了分出谁“碾压”谁而是为了看清楚每款工具的取舍到底值不值。我的原则是脱离使用场景谈优劣没有意义。实时工具里多等两秒都不行VoxCPM2 那点毛糙完全可以接受做精品内容时多用好几秒的推理时间和多占几百 MB 显存只要能换回更自然的语气这笔交易也值得。所以下面所有测试数据我都会同时标注场景适用性方便你对号入座。2. 一张显卡能跑吗环境准备与部署实录2.1 硬件基准与系统准备先说我用的这组硬件Intel i7-13700K 处理器64GB 内存NVIDIA RTX 4070 Ti SUPER 16GB 显存操作系统是 Ubuntu 22.04驱动版本 550。测试前把 BIOS 里的 Re-Size BAR 打开了对显存分配有一点帮助但不是必须项。16GB 显存跑这三款工具都绰绰有余。我实测单条推理时VoxCPM2 约 2.1GB、OmniVoice 约 2.3GB、CosyVoice3 约 2.8GB所以哪怕你只有一张 8GB 显存的显卡也能比较从容地运行。真正吃紧的是内存CosyVoice3 在加载完整模型链路时峰值内存占用到过 12GB 左右所以机器上最好预留 16GB 以上的空闲内存。软件层面我建议用 Conda 隔离环境不要往系统 Python 里硬塞依赖不然很容易把别的项目搞坏。conda create -n voice_clone python3.10 -y conda activate voice_clone pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu1212.2 三款工具的安装姿势VoxCPM2 的安装过程最轻量把项目源码拉下来之后核心依赖其实只有推理脚本用到的几个库。我实际操作里比较它的是显存和启动速度整个安装到可跑大概只花了半小时。CosyVoice3 的依赖明显更多因为它涉及声学模型和声码器两条链路。安装时建议把requirements.txt里的版本号都保留不要顺手升级成最新版否则很容易遇到接口不兼容的问题。我第一轮就是手贱把某个库升到新版结果torch和声码器之间的算子报了一串 shape mismatch多花了四十分钟排查。OmniVoice 介于两者之间。它的目录里有比较完整的说明文档安装前要注意确认模型权重和源码版本匹配我用的版本要求权重文件放在weights目录下且不要随意改名。三款工具都要求把参考音频统一成 16kHz 采样率、单声道 WAV 格式。这个细节很容易忽略我一开始直接丢了一个 44.1kHz 立体声录音进去结果 CosyVoice3 生成的音频里出现了明显的“金属声”其实就是重采样环节处理不当导致的。2.3 模型权重获取与格式校验模型权重体积都不小我整理了一张表方便对照工具模型文件体积主要格式推荐设备VoxCPM2约 1.8GB.pt / .pthCPU / 低显存 GPU 均可CosyVoice3约 7.2GB分片权重 tokenizerGPU2GB 显存以上OmniVoice约 4.2GB.pth / .onnxGPU2GB 显存以上下载完模型后我第一次踩坑的地方是文件完整性。因为模型分片多中间断过一次网导致有个分片不完整加载的时候不报错但推理结果全是噪音。后来我养成了一个习惯下载完成后先看一下分片大小和官方仓库里的 checksum 对齐再进入下一步。另一个建议是下载目录不要有中文字符或空格。这不是玄学是 Python 某些版本在加载路径时会按默认编码处理路径一复杂就容易出稀奇古怪的编码报错。2.4 资源占用横向对比我实际记录了启动到完成推理的完整资源数据工具显存占用内存占用峰值80字文本推理耗时启动到可用耗时VoxCPM22.1GB4.3GB3.2s约 18sCosyVoice32.8GB12.1GB4.9s约 45sOmniVoice2.3GB7.6GB6.1s约 30s这里有个容易误读的地方CosyVoice3 虽然显存占用只比 OmniVoice 高 0.5GB但内存峰值高出近一倍因为它需要同时保留更多中间特征。你在规划部署机器时最好按“显存加内存”的总量来评估不要只看显存。3. “同一句话”实测三步还原完整克隆链路3.1 基准音频的选取为什么选“这句话”我选了一句 43 个字的电台开场白作为统一测试文本“各位听众朋友大家好这里是今晚的夜间电台我是你们的老朋友小北。今天我们要聊的话题可能会让你有点意外。”选这句话的原因是多方面的。它里有“众”、“朋”、“老”这些带后鼻音的字有“意外”这种句末轻读词有“让大家”这种连续第三声变调还有一个明显的顿号带来的句间停延。这些语音特征恰好能同时检验三款工具的元音稳定性、声调还原、节奏停顿和句尾韵律控制。一句话能覆盖这么多难点比随机找一句“今天天气不错”要有说服力得多。参考音频我用的是自己录的一段 10 秒原声录音环境是晚上安静的房间里用动圈麦克风嘴巴离麦约 15 厘米语气平稳中间没有大幅度的情绪起伏。录了三遍之后我挑了中间那一版因为它的基频曲线最平直不会被模型误解成说话人的个性化特征。3.2 三款工具的推理配置与运行VoxCPM2 的推理命令大致这样具体参数名不同版本会有出入python infer.py \ --text 各位听众朋友大家好这里是今晚的夜间电台我是你们的老朋友小北。今天我们要聊的话题可能会让你有点意外。 \ --ref_audio /data/ref/male_voice_10s.wav \ --ref_text 各位听众朋友大家好这里是今晚的夜间电台我是你们的老朋友小北。今天我们要聊的话题可能会让你有点意外。 \ --output /output/voxcpm2_result.wav \ --top_p 0.7 \ --temperature 0.8这里--ref_text是参考音频的转写文本最好不要空着。如果参考语音里有一句话没有被转写完全模型提取的说话人特征就会掺入文本无关的噪音。我试过一次缺失ref_text的情况生成的音色明显偏闷像说话时嘴里含了东西。CosyVoice3 走的是 zero-shot 入口核心逻辑是参考语音加参考文本一起送入声学模型python run.py \ --zero_shot \ --text 各位听众朋友大家好这里是今晚的夜间电台我是你们的老朋友小北。今天我们要聊的话题可能会让你有点意外。 \ --prompt_audio /data/ref/male_voice_10s.wav \ --prompt_text 各位听众朋友大家好这里是今晚的夜间电台我是你们的老朋友小北。今天我们要聊的话题可能会让你有点意外。OmniVoice 的调用则在文本和音频之外多了一个情感标签参数python voice_clone.py \ --input_text 各位听众朋友大家好这里是今晚的夜间电台我是你们的老朋友小北。今天我们要聊的话题可能会让你有点意外。 \ --ref_audio /data/ref/male_voice_10s.wav \ --emotion neutral3.3 结果对比相似度、自然度、稳定性我用声纹模型提取了合成音频和原声的说话人向量算余弦相似度同时在三个盲听朋友那里做了主观评分指标如下工具声纹相似度自然度5分制内容完整度是否出现明显瑕疵VoxCPM20.813.894%出现一次句末吞字CosyVoice30.874.6100%无OmniVoice0.834.1100%无单独看客观分CosyVoice3 优势比较明显。但声纹相似度只是一个粗略指标0.8 以上在盲听时其实已经能骗过大多数人的第一耳朵了。真正的区别在细听阶段VoxCPM2 的句子边界收得比较紧字与字之间的过渡没有原声那种“粘连感”CosyVoice3 在句号的停顿长度上做到了与原录音几乎一致OmniVoice 有一些“播音腔”也就是每个字的声母更精力充沛听起来更清楚但少了一点生活化聊天里那种松弛。3.4 听感细节分析逐条说感受。VoxCPM2 的整体框架是对的音色亮了约 5%像在调试均衡器时给高频加了 1dB。瑕疵主要集中在爆发音位置比如“朋友”里的“朋”“听”里的“听”唇齿间气流行进得比较急促出现了一点电音一样的小毛刺。这个在单独听时不太明显放到背景音乐里基本察觉不到但如果你做的是纯人声的播客内容就需要注意。CosyVoice3 是我听完最接近原声的版本。“意外”这个词的“外”字带了一个轻微的叹气感和原录音里那个不大的呼吸声几乎一致。这种细节文本信息不包含完全靠参考音频里的语气推断出来。我认为这正是它帧级别的声学建模带来的差异。OmniVoice 赢在稳定输在“太工整”。它生成的音频从头到尾没有破音、没有吞字、没有多余气声但每句话的停顿节奏像被统一校准过原声里那种即兴的、不规则的情感起伏被磨平了一部分。对于要求语气规范的内容这反而是优点对于自然对话感要求极高的场景就显得有点“端着”。4. 核心参数与推理细节剖析4.1 top_p 与 temperature 对克隆效果的作用如果你只在默认参数下跑三款工具都能出成果但要达到更理想的听感采样参数必须自己动手试。我理解这两个参数的分工是temperature 控制的是生成结果的“胆量”值越高越敢于尝试概率较低的音节top_p 控制的是“视野”只从累积概率占比 70% 到 90% 的候选项里选。我调参后建议的起始档位工具temperaturetop_p备注VoxCPM20.80.7偏低容易“平”偏高容易破音CosyVoice30.60.7官方默认基本可用无需大动OmniVoice0.80.85配合情感标签可以获得更多变化调参数的重要原则是一次只动一个变量。我第一轮同时把 VoxCPM2 的 temperature 从 0.7 提到 0.9 又把 top_p 降到 0.5结果完全说不出是哪个参数导致语气变了等于白测。后来我固定一个 seed先只改 temperature记录三组结果再只改 top_p记录另外三组最后对比听感才能定位到具体参数对哪个语音特征影响最大。4.2 参考音频切片3秒、10秒、30秒的差别我把同一段录音分别切成 3 秒、10 秒、30 秒作为输入在 CosyVoice3 上做了专项测试参考时长声纹相似度听感表现3秒0.76音色偏亮有轻微“塑料感”韵律特征几乎没有被学到10秒0.87音色最接近原声换气和停顿的自然度最好30秒0.82音色稳定但混入了一些说话人在长段录音里的个人口头习惯这个结果其实反映了语音克隆模型的一个共性逻辑参考音频过短说话人向量提取器拿到的有效信息不足只能抓住基频和共振峰的大致位置参考音频过长则会引入更多与内容无关的副语言特征反而冲淡了音色辨识度。10 秒到 15 秒是我目前认为的舒适区间。我注意到 3 秒组的“塑料感”并非真的加了混响而是高频谐波不够完整导致的听感。这种情况你靠后处理去压噪或提亮都补救不回来最佳策略还是源头换更长的参考音频。4.3 官方默认参数与我的调优版本经过一下午的微调我最终固定下来的配置可以分享给你参考。VoxCPM2 我选择关闭随机采样里的温度退避策略temperature 维持 0.8top_p 保持 0.7同时把use_fp16打开。在 16GB 显存环境下fp16 没有精度损失感知速度大约提升了 18%。CosyVoice3 用的是官方默认的流式解码设置但我把参考音频统一按 16kHz 重采样后再传入并保留参考文本原样转写。最关键的一条经验是参考文本里的标点符号不要改成顺手的版本。模型把参考文本的逗号和句号都当作韵律标记来用你一旦把逗号改成句号生成的停顿就会变得比原声更长。OmniVoice 我试过在 neutral 之外再加上 “gentle” 这个软语气标签结果在“可能会让你有点意外”这句上得到了一版更柔和的降调主观喜欢率明显更高。建议你拿到 OmniVoice 后先系统地跑一遍所有情感标签用同一句话闭上眼睛听一遍比看文档猜测每个标签的含义要直观得多。5. 常见问题与排查技巧实录5.1 合成结果出现明显杂音我遇到的第一类问题是结果音频里带着细碎的“嘶嘶”声尤其在句头位置。排查后发现原因是参考音频里电脑风扇的底噪被声学模型当成了环境特征的一部分一并重建了出来。处理路径是先用 ffmpeg 做轻降噪再统一转格式。ffmpeg -i raw.wav -af afftdnnf-25, highpassf80, lowpassf12000 -ar 16000 -ac 1 clean.wav需要注意降噪强度不宜过大。我试过把降噪开到nf-40结果底噪是没了音色里那种自然的“空气感”也被削掉一大截合成结果听起来干巴巴的。轻降噪的原则是只压掉明显底噪别动语音主体。如果降噪后仍有问题检查输出音频的采样率是否和参考音频一致。模型内部如果以 16kHz 的特征重建出 24kHz 音频播放器在重采样时会出现谐波失真听感就是“金属声”这时候直接指定输出为 16kHz 单声道即可。5.2 显存溢出与批量推理优化批量处理多句话时最容易遇到的是显存溢出尤其 CosyVoice3。我的经验是不要图快直接上大 batch。实测 batch_size2 相比 batch_size1 并没有带来明显的吞吐提升但峰值显存几乎翻倍在 8GB 卡上很容易直接 OOM。更合理的做法是保持 batch_size1开启 fp16并把同一批次的文本长度控制得均匀一些。比如你要合成 100 句不同长度的台词按照字符数从短到长排序再分批跑比打乱顺序一次性硬塞稳定得多。OmniVoice 的显存占用不高但 CPU 推理时启动慢。我的建议是如果你的机器支持 CUDA不要把 OmniVoice 丢到 CPU 上跑它的一些风格控制算子 CPU 版本性能很差GPU 上 6 秒的任务 CPU 上可能拉到 40 秒。5.3 声音不像本人怎么办最让人头疼的问题就是“音色有点相似但明显不是同一个人”。我排查这类问题时有一个固定顺序换参考音频、换参考文本、最后才调采样参数。先检查参考音频是否足够干净。如果录音环境有混响比如在卫生间或玻璃房里录的模型学到的空间信息会盖过音色信息。最好用书架前铺了吸音棉的环境或者直接用动圈麦近距离录制减少房间反射。再检查参考文本是否完整准确。少标一个字多写一个口误都会让模型在提取说话人特征时无所适从。最后才是参数。如果你已经把参考音频和文本都处理到很理想的状态相似度还是上不去那就降低 temperature 重新跑一遍大概率能改善。我见过用户问“为什么我用官方音频clone出来的声音还是不像是不是模型不行”结果后来发现他拿的参考音频本身是处理过的、带混响和压缩器音染的成品干声。这类经过大量处理的音频无论什么模型都很难精确还原出原始音色所以源头素材的质量比模型能力更能决定上限。5.4 模型下载耗时太长与文件损坏本地部署最耗时的一环其实是下载模型权重。CosyVoice3 那种 7.2GB 的分片文件在普通网络环境下要花不少时间。我的建议是用支持断点续传的下载工具并全程保持网络稳定下载完先做大小校验再解压。不要贪快从不明来源下载压缩包重新分发。我见过有人直接下网盘里转发的“绿色版权重”结果模型能跑但音质极差因为权重文件被人为裁剪过。官方仓库的权重虽然下载慢但至少能保证没被篡改这个环节省不得。下载完成后目录命名最好保持官方结构。CosyVoice3 会把多个分片放在同一个文件夹下启动时按序号读取如果你手动改过文件名它不会报错只会加载出一个残缺模型生成结果全是紊乱的噪音。这种情况排查起来很隐蔽我那次花了十分钟才想起来去看文件名结果发现系统把model-00002-of-00004.pt改名成了model_2.pt。如果让我直接给一个选型建议我现在会更偏向这样分日常快速验证选 VoxCPM2因为启动快、显存低适合随时丢一句话进去看个大概正式内容制作选 CosyVoice3它的韵律细节值得多等那几秒推理时间需要情绪变化和多角色效果时选 OmniVoice它风格标签带来的创作空间是另外两款替代不了的。当然模型版本更新很快这个结论只对我这一整天的实测负责。如果你也有自己的经验参数欢迎拿去和上面对比着看你会发现每台机器上跑出来的结果其实都会有些自己的脾气。