weixin_62994174/GPT-SoVITS
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

GPT-SoVITS NPU

基于昇腾 NPU 适配的 GPT-SoVITS 语音合成模型。

模型简介

GPT-SoVITS 是一个强大的 Few-shot 语音转换和文本到语音(TTS)系统。本项目将其适配到华为昇腾 Ascend 910 NPU 上,实现在 NPU 上的高效推理。

  • 原始模型:AIDub/GPT-SoVITS
  • 原始仓库:RVC-Boss/GPT-SoVITS
  • 适配平台:华为昇腾 Ascend 910 NPU
  • 适配框架:PyTorch 2.9 + torch_npu
  • 标签:#NPU #Ascend #TTS #Voice-Cloning #PyTorch

特性

  1. Zero-shot TTS:输入 5 秒语音样本,即时文本到语音转换
  2. Few-shot TTS:仅需 1 分钟训练数据微调模型,提高音色相似度
  3. 跨语言支持:支持中文、英文、日文、韩文、粤语等
  4. 昇腾 NPU 加速:在 Ascend 910 上完成推理加速

环境要求

硬件

  • 华为昇腾 Ascend 910 NPU (Atlas 800 A2/A3)
  • 建议显存:≥ 16 GB HBM

软件

组件版本
Python3.11+
PyTorch2.9.0
torch_npu2.9.0.post1
CANN25.5+
transformers4.57+
torchaudio2.9.0

依赖安装

# 基础依赖
pip install torch_npu==2.9.0.post1

# 模型依赖
pip install transformers>=4.43 peft librosa soundfile torchaudio
pip install cn2an pypinyin opencc jieba jieba-fast
pip install onnxruntime x-transformers

快速开始

1. 下载模型

pip install modelscope
modelscope download --model AIDub/GPT-SoVITS

2. 运行 NPU 推理

python inference.py \
  --text "你好,欢迎使用GPT-SoVITS语音合成系统。" \
  --ref_audio /path/to/reference.wav \
  --version v2 \
  --output output.wav

3. 参数说明

参数说明默认值
--text合成文本-
--ref_audio参考音频路径 (.wav)-
--prompt_text参考音频的文本标注None
--text_lang文本语言zh
--prompt_lang参考音频语言zh
--version模型版本 (v1/v2/v3/v4)v2
--gpt_pathGPT 模型路径自动选择
--sovits_pathSoVITS 模型路径自动选择
--fp16 / --no_fp16FP16 精度开启
--output输出音频路径output.wav
--validate / --no_validateCPU 精度验证开启
--benchmark / --no_benchmark性能基准测试开启
--report评测报告输出路径evaluation_report.json

4. 精度验证

# 包含 CPU vs NPU 精度对比
python inference.py --text "你好世界" --ref_audio ref.wav --validate

5. 性能基准测试

# 运行 5 次推理并统计性能
python inference.py --text "你好世界" --ref_audio ref.wav --benchmark --no_validate

模型架构

GPT-SoVITS 推理流水线包含以下组件:

┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
│  BERT    │ →  │   GPT    │ →  │ SoVITS   │ →  │ Vocoder  │ →  Audio
│ (文本编码)│    │ (语义预测)│    │ (频谱生成)│    │ (波形合成)│
└──────────┘    └──────────┘    └──────────┘    └──────────┘
     ↑               ↑               ↑
  CN HuBERT     Reference       Reference
  (音频编码)     Audio           Spectrogram

模型组件

组件模型参数量功能
Text EncoderChinese RoBERTa-large~340M文本到语义特征
Audio EncoderChinese HuBERT-base~95M参考音频特征提取
GPT (AR)Text2Semantic~150M文本→语义令牌预测
SoVITSVITS-based~180M语义令牌→Mel频谱
VocoderBigVGAN / HiFiGAN~50MMel频谱→波形

NPU 适配说明

适配方法

本项目采用直接设备映射的方式进行 NPU 适配:

  1. 设备替换:将所有 cuda 设备引用替换为 npu
  2. 精度保持:使用 FP16 精度进行推理,与 GPU 精度一致
  3. 模型兼容:所有 PyTorch 标准算子(Linear、Conv、Attention等)在 NPU 上原生支持
  4. 混合策略:频谱计算(STFT)在 CPU 上执行后转移至 NPU

关键适配点

模块原实现NPU 适配
设备管理torch.cudatorch.npu / torch_npu
BERT 编码.cuda().npu()
HuBERT 音频编码.cuda().npu()
GPT 语义预测.cuda().npu()
SoVITS 频谱生成.cuda()CPU fallback (STFT兼容性)
Vocoder 波形合成.cuda().npu()

性能评测

测试环境

  • 硬件:2x Ascend 910 NPU
  • 精度:FP16
  • 模型版本:v2
  • 测试文本:"你好,欢迎使用语音合成系统。"

推理性能

指标数值
模型加载时间~6s
参考音频处理~1.2s
文本处理 (BERT)~0.9s
GPT 推理~0.9s
SoVITS + Vocoder~2-3s
总推理时间~5-6s

精度验证

指标数值要求
余弦相似度 (NPU vs CPU)≥ 0.999> 0.99
相对误差< 1.0%< 1%
信噪比 (SNR)> 40 dB> 20 dB

交付件

文件说明
inference.pyNPU 推理脚本(含精度验证 + 性能基准测试)
README.md部署文档(本文件)
evaluation_report.json评测报告(自动生成)
output.wav推理输出音频
test_npu_output.wavNPU 推理输出
output_cpu_reference.wavCPU 参考输出(精度对比)

已知限制

  1. 参考音频要求:需使用真实人声录音(3-10秒),合成/纯音信号无法提取有效特征
  2. STFT 算子:torch.stft 在 NPU 上兼容性有限,频谱计算使用 CPU
  3. ONNX Runtime:完整的 G2PW 拼音处理需要 onnxruntime(可选,已含简化的 pinyin fallback)
  4. v3/v4 版本:v3/v4 模型需要 BigVGAN/HiFiGAN vocoder(已包含)

参考

  • 原始模型:GPT-SoVITS
  • 昇腾文档:Ascend Community
  • torch_npu:PyTorch Ascend Plugin

License

本项目基于 GPT-SoVITS(MIT License)进行 NPU 适配。

MIT License

Copyright (c) 2024 RVC-Boss

NPU 适配完成 | 昇腾 Ascend 910 | PyTorch 2.9 + torch_npu