SoulX-Podcast 是由 Soul-AILab 开发的播客式多轮对话语音生成模型,支持中英文及多种方言(四川话、河南话、粤语等)的零样本语音克隆。本仓库提供了在华为昇腾 Ascend 910 NPU 上的完整适配与推理部署方案。
本适配版本将原始 CUDA 代码迁移至昇腾 NPU 平台,主要改动包括:
torch.cuda 调用重定向到 torch_npusoundfile + librosa 替代不兼容的 torchaudiotorch.istft 在 NPU 上存在算子兼容性问题,采用 CPU 回退方案torch.npu.amp.autocast 替代 torch.cuda.amp.autocast| 组件 | 原始设备 | NPU 适配 | 备注 |
|---|---|---|---|
| Qwen3-1.7B LLM | CUDA | ✅ NPU | 核心生成模型 |
| s3tokenizer | CUDA | ✅ NPU | 语音分词器 |
| Flow Matching | CUDA | ✅ NPU | 梅尔频谱生成 |
| HiFi-GAN | CUDA | ⚠️ CPU 回退 | istft 算子限制 |
| Campplus (说话人编码) | CPU (ONNX) | ✅ CPU | 保持不变 |
在相同随机种子 (seed=42) 下,比较 NPU (bfloat16) 与 CPU (float32) 的模型输出。
| 指标 | 数值 | 阈值 | 状态 |
|---|---|---|---|
| Logit 相对 MAE | 0.9651% | < 1% | ✅ PASS |
| Logit 余弦相似度 | 0.99990118 | > 0.99 | ✅ PASS |
| Embedding 层误差 | 0.0000% | < 1% | ✅ PASS |
| 最终隐藏层误差 | 2.8470% | - | bf16 vs fp32 累差 |
NPU 推理精度与 CPU 基线误差 < 1%,满足精度要求。
# 核心依赖
torch >= 2.9.0
torch_npu
transformers >= 4.56.0
s3tokenizer >= 0.3.0
librosa
soundfile
onnxruntime
diffusers
accelerate
# 安装命令
pip install modelscope s3tokenizer librosa soundfile onnxruntime diffusers accelerate# 使用 ModelScope 下载
pip install modelscope
modelscope download --model Soul-AILab/SoulX-Podcast-1.7B --local_dir models/SoulX-Podcast-1.7B
# 克隆推理代码
git clone https://github.com/Soul-AILab/SoulX-Podcast.gitpython soulxpodcast_npu/inference.py \
--model_path models/SoulX-Podcast-1.7B \
--prompt_audio SoulX-Podcast/example/audios/female_mandarin.wav \
--prompt_text "喜欢攀岩、徒步、滑雪的语言爱好者..." \
--text "[S1]一个着迷于在岩壁与雪原间捕捉语言灵感的旅人..." \
--output_path outputs/npu_tts.wav \
--seed 7python soulxpodcast_npu/eval_accuracy.py| 指标 | 数值 |
|---|---|
| 模型加载时间 | 10.54s |
| 推理时间 (4.56s 音频) | 10.51s |
| RTF (Real-Time Factor) | 2.31 |
| 生成音频时长 | 4.56s |
| 设备 | Ascend 910 × 2 |
注: RTF 受 HiFi-GAN CPU 回退影响,纯 NPU 推理 RTF 预期 < 1
soulxpodcast_npu/
├── inference.py # NPU 推理入口脚本
├── eval_accuracy.py # 精度验证脚本
├── outputs/ # 输出目录
│ ├── npu_tts.wav # NPU 生成音频
│ └── eval_results.json # 精度验证结果
└── README.md # 本文件UnfoldGrad 算子不支持非连续输入,使用 CPU 回退@misc{SoulXPodcast,
title = {SoulX-Podcast: Towards Realistic Long-form Podcasts with
Dialectal and Paralinguistic Diversity},
author = {Hanke Xie and Haopeng Lin and Wenxiao Cao and Dake Guo and
Wenjie Tian and Jun Wu and Hanlin Wen and Ruixuan Shang and
Hongmei Liu and Zhiqi Jiang and Yuepeng Jiang and Wenxi Chen and
Ruiqi Yan and Jiale Qian and Yichao Yan and Shunshun Yin and
Ming Tao and Xie Chen and Lei Xie and Xinsheng Wang},
year = {2025},
archivePrefix= {arXiv},
url = {https://arxiv.org/abs/2510.23541}
}本项目沿用原始模型的 Apache 2.0 许可证。