g
gcw_C8PI9e90/kani-tts-400m-zh-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

KaniTTS-400M-Chinese NPU 部署指南

1. 简介

本文档记录 KaniTTS-400M-Chinese(中文语音合成模型)在华为昇腾 Ascend NPU 上的部署与验证结果。

KaniTTS 是一个基于 LFM2(Liquid Foundation Model 2)骨干网络和 NVIDIA NanoCodec 音频编解码器的高性能文本转语音(TTS)模型。该模型通过因果语言模型生成音频 token,再经由 NanoCodec 解码为波形。

模型规格:

  • 参数量:400M
  • 采样率:22.05kHz
  • 模型类型:Lfm2ForCausalLM(因果语言模型)
  • 数据类型:bfloat16
  • 多说话人(支持:ming, mei)

相关资源:

  • 原始模型:https://huggingface.co/nineninesix/kani-tts-400m-zh
  • KaniTTS 项目:https://github.com/nineninesix-ai/kani-tts

2. 验证环境

组件版本
操作系统Ubuntu 22.04 (aarch64)
NPUAscend 910B4 (31GB)
Python3.11.14
torch2.9.0+cpu
torch_npu2.9.0.post1
transformers5.8.0

3. 模型下载

使用 Hugging Face 镜像站下载模型权重到本地:

# 设置镜像
export HF_ENDPOINT=https://hf-mirror.com

# 下载模型
python3 -c "
from huggingface_hub import snapshot_download
snapshot_download(repo_id='nineninesix/kani-tts-400m-zh', local_dir='./kani-tts-400m-zh')
"

4. 推理脚本

inference.py 是 NPU 推理脚本,支持单次文本和批量文件输入。

使用方式

# 单句合成
python inference.py --text "你好" --speaker ming --output output.wav

# 从文件读取文本
echo "你好,今天过得怎么样?" > input.txt
python inference.py --text-file input.txt --output-dir ./output

# 自定义参数
python inference.py \
    --text "你好,今天过得怎么样?" \
    --temperature 0.7 \
    --top-p 0.9 \
    --max-tokens 3000 \
    --output output.wav

推理流程说明

推理分为两个阶段:

  1. NPU 生成阶段:LFM2 语言模型在 NPU 上运行,将输入文本转换为音频 token 序列
  2. CPU 解码阶段:NanoCodec 编解码器在 CPU 上运行,将音频 token 解码为波形

5. 推理结果

以下为 NPU 上的推理测试结果:

项目数值
模型加载时间~11s
Token 生成时间~27s
音频解码时间~18s
输出音频时长~6s
采样率22050 Hz
峰值显存~2.5 GB

注:以上为单次推理耗时,实际性能受文本长度和 max-tokens 参数影响。

6. 精度评测

NPU vs CPU 精度对比(通过对比前向传播 logits):

指标数值
Token 匹配率100%
均方误差 (MSE)3.3e-2
余弦相似度> 0.99995
对称 KL 散度< 1e-6

评测方法:在相同输入下,分别采集 NPU 和 CPU 前向传播的输出 logits,计算逐 token 的误差指标。

精度结论:该模型已完成 Ascend NPU 适配部署,CPU 与 NPU 推理结果一致性验证通过,精度误差低于 1% 要求。

运行精度评测

python eval_accuracy.py

7. 注意事项

  1. 设备要求:需要 Ascend 910 系列 NPU,建议可用显存 ≥ 4GB
  2. 环境依赖:
    • 需要安装 torch_npu 以支持 NPU 推理
    • NanoCodec 解码在 CPU 上执行,需要安装 nemo-toolkit
    • 音频保存需要 soundfile 库
  3. 多说话人模型:多说话人(支持:ming, mei)。选择说话人通过在 inference.py 中指定 --speaker 参数
  4. 文本长度:建议单次输入不超过 200 个字符,过长的文本可能导致生成质量下降
  5. 显存管理:多个模型评测时需串行执行,防止显存溢出

精度结论

基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.005%,小于 1% 的精度要求。

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

# NPU 推理
python3 inference.py --device npu

# CPU 推理
python3 inference.py --device cpu

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。