Yanguan/VoxCPM2
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

VoxCPM2 (Ascend NPU 适配版)

VoxCPM2 是一个无词表、扩散自回归的文本转语音模型 —— 2B 参数、30 种语言、48kHz 音频输出,基于超过 200 万小时 的多语言语音数据训练。

本仓库完成了 VoxCPM2 在 昇腾 NPU 上的适配与验证,支持通过 model.to("npu") 直接加载到 NPU 运行。


环境配置

硬件要求

项目要求
NPUAscend 910B 或同等算力
内存>= 16 GB
存储>= 10 GB(模型权重约 4.5 GB)

软件依赖

# Python >= 3.10
pip install torch==2.5.1
pip install torch-npu==2.5.1  # 昇腾 NPU 适配的 PyTorch
pip install voxcpm soundfile

注意:当前适配基于 CANN 8.5.1 + torch-npu 2.5.1 验证通过。


模型权重下载

方式一:ModelScope(推荐)

modelscope download --model openbmb/VoxCPM2 --local_dir /opt/atomgit/openbmb/VoxCPM2

方式二:AtomGit

python3 -m atomgit download hf_mirrors/openbmb/VoxCPM2 -d /opt/atomgit/openbmb/VoxCPM2

模型适配说明

NPU 适配方式

VoxCPM2 原生支持 device 参数,但内部设备解析逻辑仅支持 cuda/cpu/mps。本适配通过 monkey-patch 方式在运行时注入 NPU 支持,无需修改原始库代码。

核心 patch 点:

  1. resolve_runtime_device:增加 npu 分支,自动识别 NPU 可用性
  2. 模型加载时传入 device="npu" 即可直接运行

已知问题

  • torch.compile 仅在 CUDA 设备上支持,NPU 上会自动跳过(有警告日志,可忽略)
  • 运行时有 allow_internel_format=False 的格式回退警告,不影响结果正确性

推理验证

运行脚本

python3 inference.py

输出结果

推理脚本会在 output/ 目录下生成以下音频文件:

  • output.wav —— 标准英文 TTS 输出

​

  • voice_design.wav —— 带声音风格设计的输出
您的浏览器不支持音频播放。

运行日志示例:

Running on device: npu, dtype: bfloat16
Loading model from safetensors: /opt/atomgit/openbmb/VoxCPM2/model.safetensors
Loaded VoxCPM2Model
Warm up VoxCPMModel...
100%|██████████| 10/10 [00:01<00:00,  6.66it/s]

性能评测

运行脚本

python3 benchmark.py

评测结果(Ascend 910B)

测试用例文本长度推理时间(s)音频时长(s)RTF
short_en短句2.682.930.91
medium_en中句4.875.330.91
long_en长句9.9210.930.91
short_zh中文短句2.582.880.89
voice_design声音设计2.913.250.89

RTF (Real-Time Factor) = 推理时间 / 音频时长,数值越小越好。NPU 上 RTF 约为 0.9,即生成速度接近实时。

详细结果保存在 output/benchmark_result.json。


精度验证

运行脚本

python3 accuracy.py

验证方法

  • NPU 和 CPU 均统一使用 float32 精度运行,消除 dtype 差异带来的干扰
  • 固定随机种子,分别在两套设备上推理相同文本
  • 对比输出音频的波形差异,计算 MSE、MAE、SNR、Cosine Similarity、长度差异等指标

验证结果

指标阈值结果
长度差异比例< 1%PASS
相对 L2 误差< 1%PASS
Cosine Similarity> 0.99PASS

由于 TTS 扩散模型内部包含随机采样(torch.randn),即使固定种子,不同硬件的随机数序列也可能存在差异,导致波形不完全一致。上述指标表明 NPU 与 CPU 输出在感知层面高度一致。

详细结果保存在 output/accuracy_result.json。


模型亮点

  • 🌍 30 语言多语言支持 —— 无需语言标签,直接输入任意支持语言的文本
  • 🎨 声音设计 —— 仅用自然语言描述即可生成全新声音(性别、年龄、音色、情感、语速)
  • 🎛️ 可控克隆 —— 从短音频片段克隆任意声音,并可调节风格
  • 🎙️ 终极克隆 —— 提供参考音频 + 转录文本,实现高保真克隆
  • 🔊 48kHz 音质输出 —— 无需外部上采样器
  • ⚡ 实时流式合成 —— 支持流式输出

模型详情

属性值
架构无词表扩散自回归 (LocEnc → TSLM → RALM → LocDiT)
参数量2B
Audio VAEAudioVAE V2 (16kHz 输入 → 48kHz 输出)
训练数据200万+ 小时多语言语音
最大序列长度8192 tokens
输出采样率48kHz

引用

@article{voxcpm2_2026,
  title   = {VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning},
  author  = {VoxCPM Team},
  journal = {GitHub},
  year    = {2026},
}

License

Apache-2.0,可商用。