VoxCPM 2

Hugging Face ModelScope 音频示例
  • 发布日期: 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... ]

由此将音色参考与续写上下文解耦,支持四种生成模式:

  1. Zero-shot:无参考音频,仅从文本合成

  2. Continuation:Prompt 文本 + prompt 音频,无缝续写

  3. Reference-only:仅用参考片段的隔离式声音克隆

  4. 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

  1. 更新模型路径:指向 VoxCPM2 checkpoint

  2. 更新采样率:保存音频时优先使用 model.tts_model.sample_rate (VoxCPM 2 为 48000

  3. 声音克隆 API:隔离式克隆请使用新参数 reference_wav_path (续写模式仍可用 prompt_wav_path

  4. 可控功能:在括号中加入文本标签,尝试 Voice Design 与 Style Control

向后兼容

  • VoxCPM 1.0 与 1.5 的模型及配置仍完全受支持

  • 代码会根据 config.json 自动检测模型架构(voxcpmvoxcpm2

  • generate() API 保持向后兼容;新参数均为可选