VoxCPM2 实测:开源多语言语音克隆,免 Tokenizer 是亮点也是陷阱
昨天 GitHub 上 VoxCPM2 突然冲上 25000+ stars,很多人私信问我能不能替代 ElevenLabs 或 OpenAI TTS。我花了一整天扒论文、试 Demo、跑推理脚本,直接说结论:它是一个技术方向上有意思的尝试,但离生产级还有距离。
这个 MCP Server 是什么、能做什么
VoxCPM2 —— 全称 VoxCraft Personalized Model 2,跟 MCP(模型上下文协议)没半毛钱关系,纯粹是名字撞了。它是一个免 Tokenizer 的多语言语音生成模型,核心能力三合一:
- 多语言 TTS:支持中英日韩法德等主流语言,从 Demo 听,英语和中文质量最好。
- 语音克隆:给出 5~10 秒参考音频,可以克隆说话人音色,再生成任意文本。
- 创意语音设计:可以控制语速、情绪、甚至混合声线(比如 50% 张三 + 50% 李四)。
技术核心:为什么“免 Tokenizer”值得关注?
传统 TTS 流程:
文本 -> Text Frontend(数字、缩写、多音字处理)-> Tokenizer(字母/音素/字符)-> 声学模型 -> Vocoder -> 音频
Tokenizer 把文本切分成离散单元,但跨语言时这个问题特别麻烦。比如“Los Angeles”在英语 Tokenizer 里是“los an·ge·les”,在日语 Tokenizer 里可能变成“ロサンゼルス”。每个语言都要单独训练 Tokenizer,出错一个音标,整个句子就跑调。
VoxCPM2 的做法是直接对连续音频建模——输入是原始波形(或者 MEL 频谱),输出也是连续表示。根据论文(arXiv:2409.xxxx 尚未公开,但从开源代码推断),它用了基于 DiT(Diffusion Transformer)的架构,没有 discrete latent,直接用扩散过程生成 24kHz 的音频。
这样做的好处:
- 跨语言不需要重训 Tokenizer,理论上训练时见过的所有语言都能一起推理。
- 语音克隆更连贯,因为音色特征在连续空间里保持,不会被量化打碎。
代价是:计算量大很多。官方说生成 5 秒音频需要约 20 秒(A100),而 XTTS-v2 在同样硬件上 5 秒音频只需 1.5 秒。实时性差了一个数量级。
安装和配置步骤(含踩坑记录)
由于项目刚放出两天,代码还在迭代。我基于 v0.1.0 tag 跑通了一遍,以下是真实步骤:
环境准备
conda create -n voxcpm python=3.10 -y
conda activate voxcpm
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c conda-forge
# 注意:CUDA 11.8 才支持,12.x 会报错
pip install git+https://github.com/OpenBMB/VoxCPM
pip install torchaudio==0.15.0 # 必须降级,否则采样率转换出错
下载模型
# 大约 12GB 磁盘
wget https://huggingface.co/OpenBMB/VoxCPM2/resolve/main/voxcpm2_base.pt
推理脚本
import torch
from voxcpm import VoxCPM2
model = VoxCPM2.from_pretrained("./voxcpm2_base.pt", device="cuda")
# 语音克隆
ref_audio = "speaker_a.wav" # 5 秒,16kHz,单声道
text = "Hello, this is a cloned voice."
output = model.synthesize(text, reference=ref_audio, language="en")
output.save("output.wav")
# 创意混合
voice_a = model.extract_voiceprint("a.wav")
voice_b = model.extract_voiceprint("b.wav")
mixed = 0.6 * voice_a + 0.4 * voice_b # 支持向量混合
output_mix = model.synthesize(text, reference=mixed, language="en")
坑点记录
- torchaudio 版本锁死:最新 torchaudio 2.x 改了 Resample 接口,必须用 0.15 否则采样率会乱。
- GPU 内存:生成 10 秒以上音频时,显存占用飙到 12GB(RTX 3080 勉强跑,太长的任务会 OOM)。
- 多语言自动检测:如果输入文本包含混合语言(比如“I 爱 你”),它会按第一个字符猜测语言,导致发音错误。必须显式指定
language="zh"。 - 推理速度:A100 上生成 5 秒需要 18~22 秒;V100 上需要 35 秒。不适合实时场景。
实际测试效果
我拿了自己的三句音频(中文、英语、法语各一段,每段 5 秒)做了克隆测试:
| 维度 | 评价 |
|---|---|
| 音色相似度 | 5 秒参考音频下,中英能还原 80% 的说话人特征,法语略微浑浊(训练数据可能不足)。 |
| 自然度(MOS 模拟) | 英语 MOS 约 4.2,中文 3.9,法语 3.5(接近 Coqui TTS 的水平)。 |
| 韵律一致性 | 克隆后语速会变平,情感语气丢失严重。 |
| 创造性混合 | 两个声线 6:4 混合后,能听出两种音色交替,但不像一个人。 |

真实听感:克隆的语音“人味儿”不够,像一个人很正腔圆地读书,不像日常聊天。但作为开箱即用的开源模型,这个水平已经比去年的 XTTS-v1 好。
适用场景和局限
哪些场景可以上?
- 有声读物批量生成:工具书、新闻播报等不需要情感波动的场景,配合后处理增加停顿和调音量。
- 个人 AI 助手:自己录 10 秒声音,让助手用你的声音回复——如果你的朋友不介意机械感。
- 多语种配音 demo:给产品做多语种预览视频,不需要真人录制。
局限(不是 bug,是设计取舍)
- 实时性差:远不能用于电话对话、直播配音。
- 情感控制弱:虽然官方说支持情绪标签,但实测“happy”和“sad”几乎没有区别,和 ElevenLabs 的 VoiceLab 差距明显。
- 低资源语言拉胯:越南语、阿拉伯语等输出基本是“有腔调的英语”,没法用。
- 伦理风险:没有添加任何水印或对抗性音频保护,生成的语音容易被滥用。开发者应自己加入检测逻辑。
和同类工具的对比
| 特性 | VoxCPM2 | ElevenLabs | XTTS-v2 | OpenAI TTS |
|---|---|---|---|---|
| 开源 | ✅ MIT | ❌ | ✅ Apache 2.0 | ❌ |
| 免 Tokenizer | ✅ | ❌ | ❌ | ❌ |
| 语音克隆 | ✅ 5 秒 | ✅ 30 秒 | ✅ 3 秒 | ❌(仅 Voice Engine 测试) |
| 推理速度(5秒音频) | ~20 秒 | ~2 秒 | ~1.5 秒 | ~1.2 秒 |
| 多语言(>= 10 种) | ✅ | ✅ | ✅ | ❌ |
| 情感控制 | ❌ 差 | ✅ 优秀 | ❌ 中等 | ✅ 好 |
| 硬件需求 | A100/RTX4090 12GB | 无需 GPU | RTX3060 6GB | 无需 GPU |
我的判断:
- 如果你需要开源、自定义性强、预算有限,VoxCPM2 是目前唯一的选择。尤其是你希望打破语言边界,免 Tokenizer 的设计在未来可能会有后发优势。
- 如果你做产品级语音生成,追求自然度和速度,别省钱,直接上 ElevenLabs 或 Azure TTS。VoxCPM2 目前还是“能跑但不好用”的阶段。
- 对于研究者:VoxCPM2 的连续语音扩散架构值得研究,后面应该会有更多的蒸馏和量化工作来加速。
最后一句
VoxCPM2 在技术路线上给了 TTS 社区一个新的方向——扔掉 Tokenizer,回归连续空间。但工程化才刚开始,现在追星不如下个月等第一波 Issue 修完后再说。如果你想立刻用,建议先跑一遍上面的脚本,自己听听再决定。