本项目将 Kokoro-82M 语音合成模型适配至华为昇腾 NPU(Atlas 系列),使用 torch_npu 和 vLLM-Ascend 推理框架。适配后的模型在 NPU 上的推理精度与 CPU 参考一致,NMSE 误差 < 1%。
# 安装 torch_npu(根据 CANN 版本选择)
pip install torch torch_npu
# 安装 kokoro 包
pip install kokoro misaki
# 如果 HuggingFace 网络不通,使用镜像
export HF_ENDPOINT=https://hf-mirror.com/# 从 ModelScope 下载
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('hexgrad/Kokoro-82M', local_dir='./Kokoro-82M')"
# 或从 AtomGit 下载
git clone https://atomgit.com/hexgrad/Kokoro-82M.git# NPU 推理
python inference.py --device npu --phonemes "hˈɛloʊ" --output hello.wav
# CPU 推理
python inference.py --device cpu --phonemes "hˈɛloʊ" --output hello_cpu.wavpython eval/accuracy_run.pypython eval/accuracy_run_perf.pypython eval/check_accuracy_run_perf.py| 文件 | 修改内容 |
|---|---|
kokoro/model.py | 设置 disable_complex=True 默认值,修复 ref_s[:, 128:] 切片逻辑 |
kokoro/pipeline.py | 修复 voice 索引传递方式,确保正确传递 3D 张量 |
inference.py | 新增 NPU 推理入口脚本 |
eval/accuracy_run.py | 新增精度评测脚本 |
eval/accuracy_run_perf.py | 新增性能评测脚本 |
eval/check_accuracy_run_perf.py | 新增结果检查脚本 |
Complex tensor 兼容: 通过 disable_complex=True 禁用 torch.complex64 类型,因为 NPU 当前不支持 complex tensor 运算。
切片索引修复: 原始代码中 ref_s[:, 128:] 在 NPU 上错误地对 dim=1 切片(而非 dim=2),改用显式三维索引修复。
语音包索引: 修复 pipeline.py 中传递单个 frame 而非整个 3D 张量的 voice 索引方式。
| 测试用例 | NMSE | Cos-Sim | SNR |
|---|---|---|---|
| hello | 0.48% | 0.9976 | 23.19 dB |
| world | 0.71% | 0.9964 | 21.47 dB |
| this is a test | 0.70% | 0.9965 | 21.56 dB |
| the quick brown fox... | 0.60% | 0.9970 | 22.23 dB |
| 平均 | 0.62% | 0.9969 | 22.11 dB |
结论: 最大 NMSE 0.71% < 1% 阈值,精度验证通过 ✓
| 指标 | CPU | NPU | 加速比 |
|---|---|---|---|
| 平均推理时间 | 9.81 s | 0.12 s | ~80x |
| 实时因子 (RTF) | 3.57x | 0.045x | - |
结论: NPU 推理比 CPU 快约 80 倍,实时因子 0.045(远快于实时)✓
Kokoro-82M/
├── inference.py # 推理入口脚本
├── eval/
│ ├── accuracy_run.py # 精度评测
│ ├── accuracy_run_perf.py # 性能基准测试
│ ├── check_accuracy_run_perf.py # 结果检查
│ ├── log.txt # 精度评测结果
│ └── log_perf.txt # 性能评测结果
├── Kokoro-82M-ascend/
│ └── readme.md # 本适配说明
└── voices/ # 语音包torch.npu.is_available() 返回 Truekokoro==0.7.6 版本