VoxCPM2 多语言语音合成:3 分钟本地跑通,克隆与音色设计一次上手
【免费下载链接】VoxCPMVoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning项目地址: https://gitcode.com/GitHub_Trending/vo/VoxCPM
搭 TTS(Text-to-Speech,文本转语音)最头疼的是选型:想多语言、想克隆声音、还想凭空设计新音色,多数开源项目只覆盖其中一项。VoxCPM2 把这三件事都做进了同一套语音合成系统:30 种语言、9 种中文方言、48kHz 棚级输出,Apache-2.0 完全开源。
一句话说清:VoxCPM2 是什么
白话翻译:VoxCPM2 是一个"无分词器"(Tokenizer-Free)的 TTS 系统——它不先把语音切成离散 token 再拼回去,而是直接生成连续声学表征,省掉了量化(Quantization)环节的信息损失,听感更自然。
- 30 种语言 + 9 种中文方言
- 无需参考音频即可设计音色
- 48kHz 棚级音质输出
- Apache-2.0 开源,可商用
3 分钟本地跑通第一句语音合成
先装包,再调 API,一共 8 行代码:
pip install voxcpmfrom 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, seed=42) sf.write("demo.wav", wav, model.tts_model.sample_rate)跑通后你会得到demo.wav,播放听到的是一句 48kHz 采样率的自然中文语音。系统要求:Python ≥ 3.10 (<3.13) · PyTorch ≥ 2.5 · CUDA 12 · 约 8GB 显存。不想写代码的话,python app.py --port 8808直接起一个网页版界面,在浏览器里试听三种模式。
原理:从文本到 48kHz 音频走了几步
整条路线是一条线:输入文本(可选参考音频),文本先过语义语言模型(TSLM)拿到语义隐状态,再由残差声学语言模型(RALM)在 AudioVAE 潜在空间里逐块生成声学表征,其中的 LocDiT 模块用流匹配(Flow Matching)完成块级生成,最后 AudioVAE V2 解码器把潜在变量还原成波形。
对照上图看:TSLM 和 RALM 是叠在 MiniCPM-4 骨干上的两层语言模型,RALM 输出的潜块交给 AudioVAE V2 收尾——它采用非对称编解码设计,内置超分能力,16kHz 输入直接出 48kHz 音频,不需要外挂上采样器。
核心功能逐个试:从设计到克隆的三档玩法
不传参考音频:一句话定制一个全新音色
想做虚拟助手或角色配音,但没有素材?把描述写进括号放句首即可:
wav = model.generate( text="(年轻女性,温柔甜美的声音)你好,欢迎使用 VoxCPM2。", cfg_value=2.0, seed=42, )纯文字就能"捏"出一个音色,性别、年龄、语气、语速都可写进描述,适合有声书角色和 IP 声音的初稿。
一段短音频克隆声音,还能顺手调语气
拿到参考音频后,reference_wav_path传路径,括号里的指令就能控制风格:
wav = model.generate( text="(稍快语速,欢快语气)这是一段带风格控制的克隆语音。", reference_wav_path="speaker.wav", cfg_value=2.0, )同一份参考音频,改括号里的描述就换情绪和语速,音色本身保持不变——这就是"可控克隆"和单纯克隆的区别。
极致克隆:从参考音频继续说,细节全保留
要求最高时用音频续写(Audio Continuation)模式,模型把参考音频当作"已说出的前缀"直接接着说:
wav = model.generate( text="这是极致克隆演示。", prompt_wav_path="speaker.wav", prompt_text="参考音频的原始转录文本", reference_wav_path="speaker.wav", # 同一段音频也传给参考位,相似度更高 )音色、节奏、情绪是三种模式里保留得最完整的,代价是必须提供准确的转录文本。
效果如何:Seed-TTS-eval 上和谁打
| 模型 | 参数量 | EN WER⬇ | EN SIM⬆ | ZH CER⬇ | ZH SIM⬆ |
|---|---|---|---|---|---|
| VoxCPM2 | 2B | 1.84% | 75.3% | 0.97% | 79.5% |
| Qwen3-TTS | 1.7B | 1.23% | 71.7% | 1.22% | 77.0% |
| CosyVoice3 | 1.5B | 2.22% | 72.0% | 1.12% | 78.1% |
| F5-TTS | 0.3B | 2.00% | 67.0% | 1.53% | 76.0% |
| FishAudio S2 | 4B | 0.99% | - | 0.54% | - |
这意味着:VoxCPM2 用 2B 参数量在可懂度上追平 1.5~1.7B 的竞品,音色相似度(Speaker Similarity)反而是开源同档里第一梯队。多语言场景更能打——Minimax-MLS 测试中英语 SIM 85.4%、日语 82.8%、韩语 83.3%,多数语言位列榜首。
两个真实落地场景
给产品宣传片配 4 种语言旁白,且全用同一个品牌音色。需求:同一位"虚拟代言人"说中英日韩,观众听不出换过声音。
langs = {"en": "Welcome to our new product.", "zh": "欢迎体验我们的新产品。", "ja": "新製品へようこそ。", "ko": "신제품을 만나보세요."} for lang, text in langs.items(): wav = model.generate(text=text, reference_wav_path="brand_voice.wav", cfg_value=2.0) sf.write(f"intro_{lang}.wav", wav, model.tts_model.sample_rate)避坑:参考音频尽量选 10~30 秒、干净无 BGM 的人声片段,背景乐越干净,四段语言的音色越统一。
用自己的声音做 LoRA 微调,5~10 分钟数据就够。需求:固定一个专属叙述者,之后所有合成都带这个声音底色。
python scripts/train_voxcpm_finetune.py \ --config_path conf/voxcpm_v2/voxcpm_finetune_lora.yaml数据准备照 examples/train_data_example.jsonl 的格式,每行{"audio": "路径.wav", "text": "转录"};训练前把 YAML 里的pretrained_path和train_manifest改成你的实际路径。训完用 scripts/test_voxcpm_lora_infer.py 加载 checkpoint 试听验证。
调优 & 避坑:你会踩到的 4 个坑 🛠
症状:显存爆了(OOM)→ 先确认加了load_denoiser=False(省掉降噪器);VoxCPM2 基准占用约 8GB 显存,再往上就要降精度或换机器。
症状:音色设计/可控克隆两次结果差异大→ 官方明确提示这两种模式存在随机波动,多生成 1~3 次挑最好的,并用seed固定随机数以便复现。
症状:列表外的语言读得不对→ 官方支持 30 种语言,不在列表内的可以硬试,不理想的路线是自己数据上微调(Fine-tuning)。
症状:合成速度不够用→ 降inference_timesteps(默认 10 步,质量会略降);高并发场景换 Nano-vLLM 推理,RTF(Real-Time Factor,实时率)从约 0.3 压到 0.13。
常用部署工具速查:
| 工具 | 一句话定位 |
|---|---|
| Nano-vLLM-VoxCPM | 高并发 GPU 推理,RTF 低至约 0.13 |
| vLLM-Omni | OpenAI 兼容 API 服务,适合多租户上线 |
| llama.cpp-omni | CPU / Metal / CUDA 端侧推理,GGUF 格式 |
下一步建议:先把第 3 章的 demo 跑出声 → 再依次试音色设计、可控克隆、极致克隆三档模式 → 有自己声音素材后再评估 LoRA 微调。
【免费下载链接】VoxCPMVoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning项目地址: https://gitcode.com/GitHub_Trending/vo/VoxCPM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考