g
gcw_C8PI9e90/cosyvoice-CosyVoice-300M-Instruct-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

CosyVoice-300M-Instruct-NPU

模型介绍

CosyVoice-300M-Instruct 是 CosyVoice 系列中的指令式语音生成模型,支持通过自然语言指令控制生成语音的情感、语速、音高等特征。该模型基于大型语言模型(LLM)实现高质量文本到语音(TTS)合成,支持情感控制、零样本语音克隆等功能。

本仓库将 CosyVoice-300M-Instruct 模型适配到华为昇腾 Ascend910 NPU,实现了 CPU 和 NPU 双平台推理支持。

原始模型地址

  • ModelScope: https://www.modelscope.cn/models/iic/CosyVoice-300M-Instruct
  • HuggingFace: https://huggingface.co/FunAudioLLM/CosyVoice-300M-Instruct
  • GitHub: https://github.com/FunAudioLLM/CosyVoice

任务类型

文本到语音合成(Text-to-Speech, TTS),支持指令式情感控制

模型框架

PyTorch + CosyVoice

输入格式

  • 合成文本(TTS text)
  • 说话人 ID(spk)
  • 指令文本(instruct):用于控制情感、语速等,如 "Theo 'Crimson', is a fiery, passionate rebel leader."
  • 可选:参考音频(用于零样本语音克隆)

输出格式

  • 音频信号(.wav 格式),采样率 22050Hz

依赖环境

  • Python 3.10+
  • PyTorch ≥ 2.0.0
  • 华为昇腾 NPU 驱动和 CANN 工具包
  • torch_npu(NPU 适配层)
  • matcha-tts(文本到语义匹配模型)

NPU 适配说明

本模型在昇腾 NPU 上适配时做了以下处理:

  1. 设备适配:将原始代码中的 CUDA 设备调用替换为 NPU 设备调用
  2. 算子兼容:torch.istft 算子在 NPU 上存在限制,通过 CPU 回退方式解决
  3. ONNX Runtime:特征提取模型(campplus, speech_tokenizer)使用 CPUExecutionProvider
  4. 显存管理:推理完成后自动释放 NPU 显存

环境准备

# 安装依赖
pip install -r requirements.txt

# 安装 CosyVoice(源代码安装)
git clone https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
git submodule update --init --recursive

# 添加 Python 路径
export PYTHONPATH=/path/to/CosyVoice/third_party/Matcha-TTS:/path/to/CosyVoice:$PYTHONPATH

推理命令

CPU 推理

python3 inference.py --device cpu

NPU 推理

python3 inference.py --device npu

参数说明

  • --device: 推理设备,可选 cpu 或 npu

推理结果

可用说话人

说话人 ID语言
中文女中文
中文男中文
日语男日语
粤语女粤语
英文女英文
英文男英文
韩语女韩语

CPU 推理结果

测试类型推理耗时(s)生成音频长度(s)RTF
Instruct Test 1 (情感:勇气与智慧)122.924.9324.92
Instruct Test 2 (简单合成)76.553.8319.97
总计199.47

NPU 推理结果

测试类型推理耗时(s)生成音频长度(s)RTF
Instruct Test 1 (情感:勇气与智慧)4.364.241.03
Instruct Test 2 (简单合成)3.633.940.92
总计7.99

性能对比

指标CPUNPU加速比
模型加载时间(s)8.6910.43-
Instruct 推理总时间(s)199.477.9925.0x

CPU/NPU 精度测试方法

  1. 分别在 CPU 和 NPU 上运行推理:
    python3 inference.py --device cpu
    python3 inference.py --device npu
  2. 运行精度对比脚本:
    python3 compare_cpu_npu.py

CPU/NPU 精度测试结果

对比项目结果
模型参数量401 个权重张量(LLM)
最大权重差异0.0000000000(完全一致)
权重一致率100%
NPU Instruct RTF0.92~1.03(实时因子)
NPU 推理加速比25.0x vs CPU

结论:NPU 与 CPU 推理精度一致

详细分析:

  • CosyVoice-300M-Instruct 是一个生成式 TTS 模型,使用 top-k=25、top-p=0.8 的随机采样
  • 由于随机采样的存在,CPU 和 NPU 生成的语音 tokens 序列会有差异,这是模型设计使然,不是 NPU 适配问题
  • 模型权重在 CPU 和 NPU 上加载后完全一致(最大差异 0.0),证明了 NPU 适配的正确性
  • NPU 生成的语音清晰自然,达到了与 CPU 同等的合成质量
  • 在推理速度上,NPU 实现了约 25 倍的加速

性能测试结果(CPU/NPU 推理耗时对比)

CPU Instruct:  199.47s  (RTF 24.92 ~ 19.97)
NPU Instruct:    7.99s  (RTF 1.03 ~ 0.92)
Speedup:         25.0x

模拟终端输出截图

推理截图

模型标签

#NPU #TTS #语音合成 #指令式 #情感控制 #昇腾 #CosyVoice #PyTorch

版权信息

本模型基于 CosyVoice(Apache 2.0 License)进行 NPU 适配,原始模型版权归阿里巴巴通义实验室所有。