基于昇腾 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 |
pip install torch_npu librosa numpy transformers torchaudiopython 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 → 当前目录import inference as inf
inf.set_seed(42)
inf.DEVICE = "npu"
inf.IS_HALF = True
inf.load_all_models()
audio, sr, stats = inf.synthesize("其实有的时候换位思考一下。")# 单次推理
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 音频模型参数:
在相同输入下,对比 NPU FP16 与 CPU FP32 各模块输出的相对误差 (Relative Error):
| 测试项 | 指标 | NPU FP16 vs CPU FP32 | 结果 |
|---|---|---|---|
| SSL Encoder | Cosine Similarity | 0.9948 | ✅ 高相似度 |
| SSL Encoder | Relative Error | 10.19% | ⚠️ FP16 固有损失 |
| VQ Latent Codes | Code Match | 98.23% | ✅ 离散码几乎一致 |
| VQ Latent Codes | Relative Error | 8.92% | ⚠️ 整数量化差异 |
| BERT Encoder | Relative Error | 0.38% | ✅ 通过 (<1%) |
| BERT Encoder | Cosine Similarity | 0.99999 | ✅ 几乎完全一致 |
| SoVITS Decoder | Waveform Cosine | 0.058 | ⚠️ FP16 累积误差 |
| GPT AR T2S | Token Match | 0% | ⚠️ AR 采样路径分叉 |
| 指标 | NPU FP16 |
|---|---|
| 平均推理时间 | 0.844s |
| 标准差 | ±0.047s |
| 最快推理 | 0.776s |
| 最慢推理 | 0.899s |
| 实时率 (RTF) | 0.298 |
| 参考音频长度 | ~3.5s |
| 测试文本 | 其实有的时候换位思考一下。(13字) |
| 阶段 | 耗时 | 占比 |
|---|---|---|
| 参考音频编码 | 0.013s | 1.5% |
| 文本处理+BERT | 0.039s | 4.6% |
| GPT AR T2S | 0.737s | 87.4% |
| SoVITS 解码 | 0.049s | 5.8% |
| 其他 | 0.006s | 0.7% |
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 # 参考文本#+NPU