K-ON111111/VoxCPM2
模型介绍
文件和版本
Pull Requests
讨论
分析

VoxCPM2 — 昇腾 NPU 适配模型

赛事: 昇腾 Model Agent 模型适配大赛(第二季) 引擎: torch_npu + voxcpm 库(MiniCPM-4 backbone + AudioVAE V2) 硬件: Ascend 910B 系列(实测 Ascend910B4) 标签: npu ascend pytorch transformers

📖 模型简介

属性值
原始模型OpenBMB/VoxCPM2
架构无分词器自回归扩散 TTS(LocEnc → TSLM → RALM → LocDiT)
参数量~2B(MiniCPM-4 backbone)
任务类型文本转语音(TTS,30 种语言)
输入格式文本(无需语言标签)
输出格式16kHz WAV 音频(AudioVAE V2 支持 48kHz 超分)

🔧 环境依赖

⚠️ 本模型依赖 voxcpm 库(未发布至 PyPI,需从源码安装)。

python3 -m venv --system-site-packages venv
source venv/bin/activate

# 安装 voxcpm 库(源码安装,跳过重依赖)
git clone https://gitcode.com/OpenBMB/VoxCPM.git
pip install -e ./VoxCPM --no-deps

pip install -r requirements.txt -i https://repo.huaweicloud.com/repository/pypi/simple/

🚀 推理步骤

⚠️ 本仓库不包含模型权重(交付件仅 inference.py / readme.md / requirements.txt / assets/), 推理前必须先从原始模型仓单独下载权重。

# 1. 下载模型权重(仓库不含权重,必须单独下载)
git clone https://gitcode.com/OpenBMB/VoxCPM2.git .
git lfs pull

# 2. 运行 NPU 推理
python3 inference.py --model_path . --text "Hello, VoxCPM2." --device npu:0

🧪 测试用例

用例 1: 英文文本转语音

python3 inference.py --model_path . --text "Hello, VoxCPM2." --device npu:0

预期输出:

[Model Agent] ✅ NPU 设备就绪: Ascend910B4
[Model Agent] ✅ 模型加载完成 → npu:0
[Model Agent] 📌 采样率: 16000 Hz
[Model Agent] 🎤 合成文本: Hello, VoxCPM2.
[Model Agent] ✅ 音频已生成 → output_en.wav (7.2s @ 16000Hz)
[Model Agent] 📊 推理耗时: 19619.53 ms
[Model Agent] ✅ 结果已保存 → inference_result.json

📁 目录结构

.
├── inference.py          # NPU 推理脚本
├── readme.md             # 本文件
├── requirements.txt      # 依赖清单
└── assets/               # 截图素材

📝 适配说明

本模型由 昇腾 Model Agent 自动完成 NPU 适配。 VoxCPM2(无分词器自回归扩散 TTS)迁移至昇腾 NPU:

  • inference.py 内置 NPU 适配 patch:
    1. 覆盖 config.json 中显式的 device: cuda 为 npu:0;
    2. 使 VoxCPMModel.__init__ 跳过 CUDA/cpu 回退逻辑,KV 缓存直接建在 NPU 上;
    3. 禁用 torch.compile(仅支持 CUDA),跳过 ModelScope 降噪器。
  • 生成 16kHz 波形,AudioVAE V2 支持 48kHz 超分辨率输出。