VoxCPM2 快速上手:一条命令装好,30 种语言语音合成与声音克隆一步到位
VoxCPM2 快速上手:一条命令装好,30 种语言语音合成与声音克隆一步到位
做视频配音、给 App 加语音、或者想要一个专属的"数字分声音",最省事的路径是直接用开源项目 VoxCPM2:它是无令牌(tokenizer-free,即不做成离散音素符号、直接生成连续声学表征)的语音合成模型,输出 48kHz 录音棚级音频,覆盖 30 种语言和 9 种中文方言,几秒钟的样本就能克隆一个声音,且基于 Apache-2.0 协议可免费商用。
第 1 步|一键安装:环境要求与模型下载
结论先行:只要你的环境是 Python 3.10~3.12、PyTorch 2.5.0 以上(CUDA 12.0 以上更顺),一条命令就能装完,推理大约 8GB 显存就够用。
pip install voxcpm
装完后不需要手动下权重,首次加载会自动拉取 openbmb/VoxCPM2 模型(2B 参数,官方数据是在 200 万小时以上多语种语音上训练的)。没有独显也能跑 CPU,只是速度会明显慢一些。如果你在国内网络环境,也可以先用 ModelScope 的 snapshot_download 把权重拉到本地,再传本地路径给 from_pretrained。
如何验证你做对了:python -c "import voxcpm" 不报任何 ImportError,且终端能正常打印版本信息。
第 2 步|跑通第一句:最小可用的语音合成示例
结论先行:整个 Python API 只有两步——from_pretrained 加载、generate 生成,五分钟内可以听到第一句。
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False)
wav = model.generate(
text="大家好,这是我用 VoxCPM2 合成的第一句话。",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
两个关键参数:cfg_value 是文本忠实度引导,越高读得越"听话"但也容易变硬;inference_timesteps 是扩散采样步数,步数越多音质上限越高、耗时越长,10 是速度友好的默认值。输入 30 种支持语言中的任意文本都无需指定语言标签,模型会自动识别。
不想写代码也可以走命令行:voxcpm design 负责文本合成与音色设计,voxcpm clone 负责克隆,voxcpm batch 支持批量处理;想要浏览器界面,运行 python app.py --port 8808 后打开本地页面即可,--device 可指定运行在 cuda、mps 或 cpu 上。
它为什么听起来比老一代 TTS 更自然?传统方案先把语音切成一个个离散 token 再重建,VoxCPM2 全程在 AudioVAE V2 的连续潜在空间里工作,由 MiniCPM-4 骨干模型驱动"局部编码→语义建模→声学建模→扩散解码"四段流水线,离散化带来的细节损失基本被绕开了。
如何验证你做对了:播放 demo.wav,整句完整、无机械音,用任意播放器查看其采样率应为 48kHz。
第 3 步|克隆一个声音:按素材多少选三档玩法
结论先行:VoxCPM2 提供三档克隆强度——纯文字"设计音色"、一段参考音频"可控克隆"、音频加逐字稿"极致克隆",素材越少门槛越低,素材越多还原度越高。
- 音色设计(Voice Design):完全不依赖样本。把音色描述用中文或英文括号写在文本最前面,例如
model.generate(text="(年轻女性,温柔甜美的声音)您好,我是本节目的 AI 语音助手。"),模型会直接"凭空"造出这个音色的声音。 - 可控克隆:给
generate传reference_wav_path指向一段 3~10 秒的干净人声,音色跟着样本走;同时文本里的括号指令依然生效,比如"稍快语速、愉快语气",等于克隆声音但保留风格调整权。 - 极致克隆:再传
prompt_wav_path和prompt_text(参考音频的准确逐字稿),模型会直接从参考音频"续读"下去,节奏、气息、情绪这类细节保留得最完整。
参考音频 16kHz 就够了,输出会自动超分到 48kHz,不需要额外装升采样器。
如何验证你做对了:把生成结果和原声并排听,音色明显相似;再换一条括号指令(比如"严肃缓慢地")重新生成,能听出风格真的变了,说明克隆与风格控制两条通路都通了。
第 4 步|效果不满意怎么调:只动这三个参数
结论先行:听感不对时先别换模型,cfg_value、inference_timesteps、seed 三个参数基本覆盖 90% 的调优需求。
| 参数 | 默认值 | 作用(大白话) | 建议范围 |
|---|---|---|---|
cfg_value | 2.0 | 文本忠实度引导,调高读得更准,过高会变僵 | 2.0~3.0 |
inference_timesteps | 10 | 扩散采样步数,调高音质更好但更慢 | 10~20 |
seed | 随机 | 随机种子,固定后可复现同一条结果 | 定下满意的值后保持不变 |
两个容易踩的坑:一是音色设计和可控克隆本身带随机性,官方提示同一输入生成 1~3 次结果会有差异,第一次不满意先重试再怀疑参数;二是参考音频带背景噪音时,加载时保留降噪器(即不传 load_denoiser=False)并在 generate 里传 denoise=True,会先把参考音清洗一遍再克隆,相似度会更稳。
如何验证你做对了:固定 seed、每次只改一个参数对比试听,找到一组满意的组合并记录下来,之后批量生产全部复用。
第 5 步|5~10 分钟音频微调:把专属音色钉死
结论先行:如果零样本克隆的相似度还差一口气,用自己的数据做 LoRA 微调,官方说法是 5~10 分钟音频就能适配一个特定说话人或领域。
训练数据很简单,每行一个 JSON 对象,写清音频路径和对应文本(可选 duration 字段跳过加载),格式参考 examples/train_data_example.jsonl。启动 LoRA 微调:
python scripts/train_voxcpm_finetune.py \
--config_path conf/voxcpm_v2/voxcpm_finetune_lora.yaml
打开这个 yaml 把 pretrained_path 和 train_manifest 改成自己的路径即可,其余默认值(batch_size 2、梯度累积 8、学习率 1e-4、LoRA 秩 32)对多数小数据场景都够用;想全量微调可换用 conf/voxcpm_v2/ 下的 voxcpm_finetune_all.yaml,图省事就直接跑仓库自带的训练网页界面 python lora_ft_webui.py。训练完把 LoRA 权重路径传给 from_pretrained 的 lora_weights_path,加载时会自动读回匹配的秩配置。
如何验证你做对了:用微调后的模型生成一句样本人没说过的新文本,和原始零样本克隆结果对比,音色相似度应有可感知的提升。
第 6 步|上线部署:从实时流式到高并发服务
结论先行:个人本机用 generate 就够;要做产品,按"流式对话→高吞吐服务→端侧运行"三条路选其一即可。
- 流式对话:把
model.generate换成model.generate_streaming,返回音频分块逐段吐出,适合语音助手这类边说边播的场景。 - 高吞吐服务:社区推理引擎 Nano-vLLM 的 VoxCPM 适配版(
pip install nano-vllm-voxcpm)支持并发请求和 HTTP 服务,在 RTX 4090 上 RTF(实时率,越小越快)可从约 0.3 压到约 0.13;vLLM-Omni 则直接提供 OpenAI 兼容的/v1/audio/speech端点,现有客户端改个地址就能接。 - 端侧无 Python 环境:llama.cpp-omni 提供 GGUF 权重的 C++ 推理,CPU / Metal / CUDA / Vulkan 都能跑,Apple M4 Pro 上 RTF 约 1.76,适合做离线工具或嵌入式设备。
如何验证你做对了:对服务端点发一条文本,几秒内收到 wav 且内容与文本一致,流式场景下首块延迟可接受,即部署完成。
接下来做什么
- 今天就按第 2 步跑通最小示例,产出一个 48kHz 的 wav;再挑一条 5 秒左右的干净人声试一次
reference_wav_path克隆,感受一下三档玩法的差异。 - 想读懂源码的话:
git clone https://gitcode.com/GitHub_Trending/vo/VoxCPM,核心模型实现在 src/voxcpm/model/,训练配置在 conf/voxcpm_v2/,对照本文各步看代码会很快。
最后提醒一句:克隆真实人物声音用于商用前,务必取得本人明确授权;所有 AI 生成的音频建议做显著标识,切勿用于冒充他人或传播虚假信息。
更多推荐


所有评论(0)