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

Dia-1.6B (Ascend NPU Adaptation)

Dia 是 Nari Labs 开发的 1.6B 参数 Text-to-Speech (TTS) 模型,能够从对话脚本直接生成高拟真的对话音频。本仓库提供了 Dia-1.6B 在华为昇腾 Ascend 910 NPU 上的适配版本。

模型简介

Dia 采用 Encoder-Decoder Transformer 架构,支持:

  • 通过 [S1] [S2] 标签生成多说话人对话
  • 非语言表达(笑声、咳嗽、叹气等)
  • 语音克隆(通过音频提示)
  • 情感和语调控制
配置项值
参数量1.6B
Encoder 层数12
Decoder 层数18
隐藏维度1024 (Enc) / 2048 (Dec)
注意力头数16 (Enc) / 16 GQA (Dec, KV=4)
音频编解码器Descript Audio Codec (DAC)
采样率44100 Hz
原始精度float32
NPU 推理精度float16

NPU 适配说明

本适配在华为昇腾 Ascend 910 NPU 上完成,关键适配点:

  1. 设备检测:增加 torch.npu.is_available() 检测,自动选择 NPU 设备
  2. 推理精度:使用 float16 精度推理,显存占用从 ~13GB 降至 ~6GB
  3. 算子兼容:Dia 使用标准 PyTorch 算子(F.scaled_dot_product_attention、nn.Linear、RMSNorm 等),torch_npu 原生支持
  4. CUDA 特定代码处理:torch.compiler.cudagraph_mark_step_begin() 在 NPU 上跳过

环境要求

组件版本
CANN8.0.RC1+
PyTorch2.9.0
torch_npu2.9.0
Python3.11+
NPUAscend 910

快速开始

1. 安装依赖

pip install torch==2.9.0 torch_npu==2.9.0
pip install descript-audio-codec soundfile pydantic safetensors numpy

2. 下载模型

pip install modelscope
modelscope download --model nari-labs/Dia-1.6B --local_dir ./model

3. 运行推理

# NPU 推理 (默认)
python inference.py --text "[S1] Hello. How are you? [S2] I am great!"

# CPU 基线推理 (用于精度对比)
python inference.py --device cpu --text "[S1] Hello. How are you? [S2] I am great!"

# 精度对比模式
python inference.py --compare

# 完整评测
python inference.py --eval

4. Python API

import torch
from inference import DiaNPUModel

model = DiaNPUModel(
    config_path="./model/dia_config.json",
    checkpoint_path="./model/dia-v0_1.pth",
    device=torch.device("npu:0"),
    compute_dtype="float16",
)

audio = model.generate("[S1] Hello world! [S2] Hi there!")
model.save(audio, "output.wav")

精度评测

评测方法:对比 NPU (float16) 与 CPU (float32) 在同一输入下的 Forward Pass 输出,使用鲁棒指标衡量精度。

实测结果

模块指标实测值判定
Encoder余弦相似度0.99999993PASS
EncoderRMSE/Signal0.0395%PASS (< 1%)
EncoderSNR60.4 dBPASS
Encoder平均绝对误差2.06e-06PASS
Decoder余弦相似度0.99999936PASS
DecoderRMSE/Signal0.1139%PASS (< 1%)
DecoderSNR58.9 dBPASS
Decoder平均绝对误差0.00378PASS

推理性能

指标结果
NPU Encoder 推理0.267s
NPU Decoder 单步推理0.102s
NPU vs CPU Encoder 加速比93.1x
精度阈值< 1%
整体结果ALL PASS

评测命令

# Forward Pass 精度验证
python verify_precision.py

# 完整评测 (需要 DAC)
python inference.py --eval --output-dir ./eval_output

评测完成后查看:

  • precision_report.json - Forward Pass 精度报告
  • eval_output/evaluation_report.json - 端到端评测报告

文件结构

Dia-1.6B/
├── README.md                 # 本文件
├── inference.py              # NPU 推理脚本
├── evaluate.py               # 评测脚本
├── verify_npu.py             # NPU 快速验证
├── verify_precision.py       # Forward Pass 精度验证
├── precision_report.json     # 精度评测报告
├── model/
│   ├── dia_config.json       # NPU 适配模型配置
│   ├── config.json           # 原始模型配置
│   ├── dia-v0_1.pth          # 模型权重
│   └── model.safetensors     # SafeTensors 格式权重
└── eval_output/              # 评测输出
    ├── precision_*_npu.wav
    ├── precision_*_cpu.wav
    └── evaluation_report.json

性能参考

硬件精度速度显存
Ascend 910float16~40 tokens/s~6 GB
CPU (Intel)float32~2 tokens/s~13 GB
GPU (A4000)float16~40 tokens/s~10 GB

许可证

本项目基于 Apache 2.0 许可证。原始模型 nari-labs/Dia-1.6B 同样采用 Apache 2.0 许可证。

免责声明

  • 禁止在未经授权的情况下模仿真实人物的声音
  • 禁止使用本模型生成误导性内容(如虚假新闻)
  • 禁止用于非法或恶意目的

致谢

  • Nari Labs 提供原始模型
  • 华为昇腾 NPU 团队提供底层算子支持