VoxCPM 2¶
发布日期: 2026 年 3 月
参数量: 2B
采样率: 48kHz
语言: 30 种
重要
VoxCPM 2 是当前推荐版本,适用于新部署与新功能开发。
概览¶
VoxCPM 2 是最新的大版本发布,一个在 236 万小时多语言数据上训练的 2B 参数模型。相较于 1.x 系列,它在容量、质量与可控性上都有显著跃升。
关键特性:
通过 AudioVAE V2 实现 48kHz 音频输出(非对称 16kHz 编码 → 48kHz 解码)
支持 30 种语言的多语言生成
Voice Design:通过自然语言描述创建声音,无需参考音频
Style Control:通过文本标签控制克隆声音的情绪、节奏与说话风格
为声音克隆提供隔离式参考通道(无需配套转写文本)
Concat-Projection 残差 LM 融合,结合多 token DiT 条件输入,带来更强的表现力
基于 MiniCPM-4 骨干构建
新项目都建议优先使用 VoxCPM 2。它是多语言合成、声音克隆、Voice Design 和生产部署的默认推荐版本。
新特性¶
支持 30 种语言
在 236 万小时数据上训练(180 万小时中英基础语料 + 56 万小时多语言),现已覆盖多个语系共 30 种语言。
Voice Design 与 Style Control
可用自然语言从零设计声线,或用简单文本标签控制克隆声音的说话风格。
48kHz 音频输出
重新设计的 AudioVAE V2 具有 3 倍上采样比与采样率条件化解码,可输出接近录音室品质的 48kHz 音频。
重新设计的融合架构
以 Concat-Projection 融合与多 token DiT 条件化取代加法捷径,在整条流水线中保留更丰富的信息流。
语言支持¶
VoxCPM 2 支持跨多个语系的 30 种语言。在原有 180 万小时中英语料基础上,我们增加了 56 万小时多语言数据,从而在下列语言上实现高质量合成:
语系 |
语言 |
|---|---|
东亚 |
中文、日语、韩语 |
东南亚 |
缅甸语、印尼语、高棉语、老挝语、马来语、他加禄语、泰语、越南语 |
南亚 |
印地语 |
欧洲(日耳曼语族) |
丹麦语、荷兰语、英语、芬兰语、德语、挪威语、瑞典语 |
欧洲(罗曼语族) |
法语、意大利语、葡萄牙语、西班牙语 |
欧洲(其他) |
希腊语、波兰语、俄语、土耳其语 |
闪米特语族 |
阿拉伯语、希伯来语 |
非洲 |
斯瓦希里语 |
模型架构¶
VoxCPM 2 保留 VoxCPM 的四阶段流水线——Local Encoder → Text-Semantic LM → Residual Acoustic LM → Local DiT (CFM)——同时重新设计三条核心信息流路径,以提升容量与表现力。
特性对比¶
特性 |
VoxCPM 1 / 1.5 |
VoxCPM 2 |
|---|---|---|
Patch 大小 |
2 / 4 |
4 |
Residual LM 层数 |
6 |
8 |
FSQ 潜变量维度 |
256 |
512 |
最大序列长度 |
4096 |
8192 |
AudioVAE 输出 |
16kHz / 44.1kHz |
48kHz |
编解码采样率 |
对称(相同采样率) |
非对称(16kHz → 48kHz) |
Residual LM 融合 |
加法 |
拼接 + 投影 |
DiT 条件化 |
单 token(相加) |
多 token(拼接) |
参考音频 |
Prompt 续写 |
隔离参考通道 |
语言 |
2(zh、en) |
30 |
可控性 |
-- |
声音设定与风格控制 |
Residual LM 融合:加法 → Concat-Projection¶
在 VoxCPM 1.x 中,Residual Acoustic LM 的输入由**相加**基础 LM 输出与 local encoder 特征得到。VoxCPM 2 改为**拼接后再经可学习线性投影**:
# VoxCPM 1.x
residual_input = lm_output + masked_audio_embed
# VoxCPM 2
residual_input = Linear₂ₕ→ₕ( concat(lm_output, masked_audio_embed) )
这使 Residual LM 能更灵活地学习如何融合语义与声学信息,而不受逐元素加法约束。
DiT 条件化:单 token → 多 token 前缀¶
在 VoxCPM 1.x 中,LM 隐状态与 Residual LM 隐状态被**求和**为单一条件向量,再与扩散步时间嵌入相加,并作为单个前缀 token 输入 DiT。
VoxCPM 2 则 拼接 两个投影后的隐状态(维度加倍),再重塑为 多个前缀 token,与时间步 token 一并送入 DiT:
# VoxCPM 1.x DiT input sequence:
[ (mu + t) | cond | x ] ← 1 conditioning token
# VoxCPM 2 DiT input sequence:
[ mu₁ | mu₂ | t | cond | x ] ← 2 conditioning tokens + timestep token
这样 DiT 的注意力机制可分别关注语义层与声学层信息,避免早期融合导致的信息坍缩。
隔离的参考音频通道¶
VoxCPM 1.x 仅通过 prompt 续写(拼接 prompt 音频与生成)支持声音克隆。VoxCPM 2 引入使用专用特殊 token 的 结构隔离参考音频机制:
[ <ref_start> | ref_audio_patches | <ref_end> | text_tokens | <audio_start> | generation... ]
由此将音色参考与续写上下文解耦,支持四种生成模式:
Zero-shot:无参考音频,仅从文本合成
Continuation:Prompt 文本 + prompt 音频,无缝续写
Reference-only:仅用参考片段的隔离式声音克隆
Combined:参考音频定音色 + prompt 音频提供上下文。我们观察到,相比单独使用 reference 或 continuation,该模式在克隆相似度上略有提升。
AudioVAE V2:原生 48kHz 与采样率条件化¶
AudioVAE 已全面重新设计:
非对称编解码设计:与 v1/v1.5 编解码同采样率不同,V2 在 16kHz 编码(640× 下采样,使 LM token 速率保持 6.25Hz),再通过 1920× 上采样解码器直接解码到 48kHz。这样在不增加 LM 序列长度的前提下获得高质量输出。
解码器容量:通道宽度增至 2048,含 6 个上采样阶段
[8, 6, 5, 2, 2, 2]采样率条件化:新增
SampleRateConditionLayer,在每个解码块注入 scale-bias 调制,使同一模型可按不同目标采样率解码
可控生成¶
VoxCPM 2 引入两项新的可控生成功能,约定相同:在目标文本前的括号 () 内写入控制说明。
声音设定¶
用自然语言描述,无需任何参考音频 即可创建声线。在括号中描述期望的音色特征即可:
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("openbmb/VoxCPM2")
wav = model.generate(
text="(A warm, gentle female voice in her 30s with a calm and soothing tone) "
"Welcome to VoxCPM 2, the next generation of realistic speech synthesis.",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)
小技巧
Voice Design 适合配合年龄、性别、音高、语速、情绪与声线质感等描述性属性;描述越具体越好——模型会理解自然语言描述。
风格控制¶
在使用参考音频做声音克隆时控制说话风格。与参考音频一起在括号中传入控制标签:
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("openbmb/VoxCPM2")
wav = model.generate(
text="(Speaking slowly with a whispering, mysterious tone) "
"The secret lies hidden in the ancient library, waiting to be discovered.",
reference_wav_path="reference_speaker.wav",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("style_control.wav", wav, model.tts_model.sample_rate)
备注
在 Style Control 模式下,参考音频决定 谁 在说话(音色),括号中的文本标签控制 怎样 说(风格、情绪、语速等)。
使用示例¶
安装与共用 generate() API 请从 快速开始 开始。下文示例侧重 VoxCPM 2 专有能力。
仅参考音频的声音克隆¶
wav = model.generate(
text="This is a voice cloning demonstration using VoxCPM 2.",
reference_wav_path="speaker_reference.wav",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("cloned.wav", wav, model.tts_model.sample_rate)
多语种生成¶
# Korean
wav = model.generate(
text="VoxCPM 2는 30개 언어를 지원하는 차세대 음성 합성 모델입니다.",
reference_wav_path="korean_speaker.wav",
cfg_value=2.0,
)
sf.write("korean.wav", wav, model.tts_model.sample_rate)
# French
wav = model.generate(
text="VoxCPM 2 prend en charge la synthèse vocale en trente langues différentes.",
reference_wav_path="french_speaker.wav",
cfg_value=2.0,
)
sf.write("french.wav", wav, model.tts_model.sample_rate)
迁移指南¶
从 VoxCPM 1.5 到 VoxCPM 2¶
更新模型路径:指向 VoxCPM2 checkpoint
更新采样率:保存音频时优先使用
model.tts_model.sample_rate(VoxCPM 2 为48000)声音克隆 API:隔离式克隆请使用新参数
reference_wav_path(续写模式仍可用prompt_wav_path)可控功能:在括号中加入文本标签,尝试 Voice Design 与 Style Control
向后兼容¶
VoxCPM 1.0 与 1.5 的模型及配置仍完全受支持
代码会根据
config.json自动检测模型架构(voxcpm与voxcpm2)generate()API 保持向后兼容;新参数均为可选