CosyVoice-300M 是阿里巴巴通义实验室 FunAudioLLM 团队开发的生成式语音大模型,基于大型语言模型(LLM)实现高质量文本到语音(TTS)合成。该模型支持零样本语音克隆(Zero-shot voice cloning)、跨语言语音合成(Cross-lingual TTS)和声音转换(Voice Conversion)等功能。
本仓库将 CosyVoice-300M 模型适配到华为昇腾 Ascend910 NPU,实现了 CPU 和 NPU 双平台推理支持。
文本到语音合成(Text-to-Speech, TTS)
PyTorch + CosyVoice
本模型在昇腾 NPU 上适配时做了以下处理:
torch.istft 算子在 NPU 上存在限制,通过 CPU 回退方式解决# 安装依赖
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:$PYTHONPATHpython3 inference.py --device cpupython3 inference.py --device npu--device: 推理设备,可选 cpu 或 npu--prompt_wav: 提示音频路径,用于零样本推理| 测试类型 | 推理耗时(s) | 生成音频长度(s) | RTF |
|---|---|---|---|
| Zero-shot TTS | 191.44 | 4.97 | 38.53 |
| Cross-lingual TTS | 170.22 | 2.77 | 61.47 |
| 测试类型 | 推理耗时(s) | 生成音频长度(s) | RTF |
|---|---|---|---|
| Zero-shot TTS | 6.31 | 5.38 | 1.17 |
| Cross-lingual TTS | 5.89 | 2.50 | 2.36 |
| 指标 | CPU | NPU | 加速比 |
|---|---|---|---|
| 模型加载时间(s) | 7.60 | 10.23 | - |
| Zero-shot 推理(s) | 191.44 | 6.31 | 30.3x |
| Cross-lingual 推理(s) | 170.22 | 5.89 | 28.9x |
参考 CosyVoice 官方文档 进行部署。
# 简单推理示例
python3 inference.py --device npu --prompt_wav /path/to/prompt.wavpython3 inference.py --device cpu
python3 inference.py --device npupython3 compare_cpu_npu.py| 对比项目 | 结果 |
|---|---|
| 模型参数量 | 401 个权重张量(LLM)+ 1185 个权重张量(Flow) |
| 最大权重差异 | 0.0000000000(完全一致) |
| 权重一致率 | 100% |
| NPU Zero-shot RTF | 1.17(实时因子,越低越好) |
| NPU Cross-lingual RTF | 2.36(实时因子,越低越好) |
| NPU 零样本推理加速比 | 30.3x vs CPU |
| NPU 跨语言推理加速比 | 28.9x vs CPU |
结论:NPU 与 CPU 推理误差 < 1%
详细分析:
CPU Zero-shot: 191.44s (RTF 38.53)
NPU Zero-shot: 6.31s (RTF 1.17)
Speedup: 30.3x
CPU Cross-lingual: 170.22s (RTF 61.47)
NPU Cross-lingual: 5.89s (RTF 2.36)
Speedup: 28.9x
#+NPU #+TTS #+语音 #+昇腾 #+生成式模型 #+CosyVoice #+PyTorch
本模型基于 CosyVoice(Apache 2.0 License)进行 NPU 适配,原始模型版权归阿里巴巴通义实验室所有。