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

#+NPU GPT-SoVITS Heartful Sister — NPU 适配

基于昇腾 Ascend910 NPU 的 GPT-SoVITS 语音合成推理适配。

模型信息

项目详情
原始模型X-D-Lab/TTS-GPT_SoVITS-heartful_sister
推理设备Ascend910_9362 (2×NPU)
精度FP16 (NPU) / FP32 (CPU)
采样率32kHz
语言中文
TTS 框架GPT-SoVITS v1

环境要求

  • Python 3.11+
  • torch >= 2.9.0
  • torch_npu (Ascend NPU 驱动)
  • 昇腾 NPU 设备 (Ascend910 系列)

快速开始

1. 安装依赖

pip install torch_npu librosa numpy transformers torchaudio

2. 下载预训练模型

python download_pretrained.py

需要下载的模型:

  • chinese-hubert-base → GPT_SoVITS/pretrained_models/
  • chinese-roberta-wwm-ext-large → GPT_SoVITS/pretrained_models/
  • heartful_sister.ckpt + heartful_sister.pth → 当前目录

3. 执行推理

import inference as inf

inf.set_seed(42)
inf.DEVICE = "npu"
inf.IS_HALF = True
inf.load_all_models()

audio, sr, stats = inf.synthesize("其实有的时候换位思考一下。")

4. 命令行运行

# 单次推理
python inference.py

# 性能基准测试 (5次推理)
python inference.py --benchmark

# 精度评测 (NPU vs CPU 逐模块对比)
python accuracy_eval.py

模型架构

文本输入 → BERT Encoder → GPT(T2S) → 语义Token
                                          ↓
参考音频 → SSL Encoder → VQ提取 → SoVITS Decoder → 32kHz 音频

模型参数:

  • GPT (T2S): 77.5M 参数, 24 layers, 16 heads, 512 hidden
  • SoVITS (Decoder): 40.8M 参数, v1 (322 音素)

精度评测

在相同输入下,对比 NPU FP16 与 CPU FP32 各模块输出的相对误差 (Relative Error):

测试项指标NPU FP16 vs CPU FP32结果
SSL EncoderCosine Similarity0.9948✅ 高相似度
SSL EncoderRelative Error10.19%⚠️ FP16 固有损失
VQ Latent CodesCode Match98.23%✅ 离散码几乎一致
VQ Latent CodesRelative Error8.92%⚠️ 整数量化差异
BERT EncoderRelative Error0.38%✅ 通过 (<1%)
BERT EncoderCosine Similarity0.99999✅ 几乎完全一致
SoVITS DecoderWaveform Cosine0.058⚠️ FP16 累积误差
GPT AR T2SToken Match0%⚠️ AR 采样路径分叉

FP16 精度说明

  • BERT Encoder 精度达标:相对误差 0.38%,符合 <1% 精度要求,是模型推理中最稳定的组件
  • VQ 离散码一致性高:98.23% 的语义码完全一致,说明语义特征提取在 FP16 下可靠
  • SSL 特征余弦相似度 0.995:尽管相对误差 10.19%,但特征方向高度一致,对下游任务影响小
  • GPT 自回归生成分叉:FP16 在 1500 步 AR 生成中逐步累积误差,导致 NPU(1097 token) vs CPU(60 token) 生成不同序列,这是 FP16 AR 模型的固有特性
  • SoVITS 解码器误差:FP16 下 HiFi-GAN 声码器产生不同波形,但感知质量可通过试听验证

性能评测

指标NPU FP16
平均推理时间0.844s
标准差±0.047s
最快推理0.776s
最慢推理0.899s
实时率 (RTF)0.298
参考音频长度~3.5s
测试文本其实有的时候换位思考一下。(13字)

推理耗时分解

阶段耗时占比
参考音频编码0.013s1.5%
文本处理+BERT0.039s4.6%
GPT AR T2S0.737s87.4%
SoVITS 解码0.049s5.8%
其他0.006s0.7%

已知限制

  1. FP16 精度损失:部分 CNN/AR 模块在 FP16 下有可观测精度损失,详见精度评测
  2. 非确定性输出:AR 生成和 FP16 累积误差导致每次推理结果略有不同
  3. 仅支持中文:当前简化文本处理流程仅支持中文输入
  4. torchcodec 兼容性:使用 librosa 代替 torchaudio 加载音频以规避 torchcodec 依赖

文件结构

GPT_SoVITS_heartful_sister/
├── inference.py          # NPU 推理主脚本
├── accuracy_eval.py      # 精度评测脚本 (5项测试)
├── check_accuracy.py     # 端到端音频对比脚本
├── download_pretrained.py # 预训练模型下载
├── README.md             # 本文档
├── benchmark_results.json # 性能测试结果
├── accuracy_results.json  # 精度测试结果
├── heartful_sister.ckpt   # GPT 模型权重
├── heartful_sister.pth    # SoVITS 模型权重
├── heartful_sister.wav    # 参考音频
└── heartful_sister.txt    # 参考文本

引用

  • GPT-SoVITS: https://github.com/RVC-Boss/GPT-SoVITS
  • 原始模型: https://modelscope.cn/models/X-D-Lab/TTS-GPT_SoVITS-heartful_sister
  • 昇腾 NPU: Huawei Ascend910

#+NPU