Dolphin-small
模型介绍
Dolphin-small 是 DataoceanAI 与清华大学联合开发的多语言、多任务自动语音识别(ASR)模型,参数量 372M。该模型支持 40 种东方语言和 22 种中文方言的语音识别、语音活动检测(VAD)、分割和语言识别(LID)。
模型参数
参数 值 参数量 372M Encoder 层数 12 (E-Branchformer) Decoder 层数 12 (Transformer) 隐藏层维度 768 注意力头数 12 词汇量 40,002 (BPE) 采样率 16kHz 模型格式 PyTorch
环境要求
硬件环境
项目 要求 NPU Ascend 910B (至少 1 卡) 显存 ≥ 4GB HBM
软件环境
项目 版本 OS openEuler / Ubuntu (aarch64) CANN ≥ 8.0 Python 3.10 / 3.11 PyTorch 2.9.0 torch_npu 2.9.0.post1 numpy ≥ 1.26 sentencepiece ≥ 0.2.0 PyYAML ≥ 6.0
依赖安装
# 华为镜像源
export PIP_INDEX_URL=https://repo.huaweicloud.com/repository/pypi/simple/
# 基础依赖
pip install torch==2.9.0 torch_npu==2.9.0.post1
pip install numpy sentencepiece PyYAML
# 音频处理 (可选,用于加载非 WAV 格式音频)
pip install soundfile
# 或使用 ffmpeg: apt install ffmpeg
快速开始
1. 下载模型
pip install modelscope
modelscope download --model DataoceanAI/dolphin-small
模型文件将下载到 ~/.cache/modelscope/hub/models/DataoceanAI/dolphin-small/。
2. 准备模型目录
mkdir -p model
cp ~/.cache/modelscope/hub/models/DataoceanAI/dolphin-small/{config.yaml,small.pt,bpe.model,feats_stats.npz} model/
3. 运行推理
# 在昇腾 NPU 上运行推理
python3 inference.py audio.wav --device npu
# 运行性能基准测试
python3 inference.py audio.wav --device npu --benchmark --num_runs 10
# CPU 推理 (用于精度对比)
python3 inference.py audio.wav --device cpu
NPU 适配说明
适配方法
采用 torch_npu + transfer_to_npu 自动迁移方案,关键适配点:
设备映射 : transfer_to_npu 自动将 torch.cuda.* API 映射到 torch.npu.*
模型重构 : 从 ESPnet 格式的 checkpoint 重建 E-Branchformer + Transformer 架构,确保 state dict 键名精确匹配(822 个键全匹配,0 缺失)
Mask 类型适配 : 将 FP32 mask 转换为 BOOL 类型以满足 NPU 算子要求
解码器位置编码 : 使用手动正弦位置编码替代 ESPnet 的 PositionalEncoding 模块
关键代码
import torch_npu
from torch_npu.contrib import transfer_to_npu
# 模型自动迁移到 NPU
model = DolphinASR(config, vocab)
model.load_state_dict(ckpt, strict=False) # 822 keys matched
model.to("npu")
model.eval()
# 推理
with torch.no_grad():
result = model.greedy_decode(feats, mask)
适配验证
性能评测
测试环境
项目 配置 NPU Ascend 910B × 2 (单卡推理) CPU Kunpeng 920 aarch64 CANN 25.5.2 测试音频 5 秒,16kHz,单声道 Batch Size 1
推理时延
指标 NPU (Ascend 910B) CPU (Kunpeng 920) 加速比 首次推理 (含 warmup) 2.32s 126.48s 54.5x 平均推理时延 2.25s 126.48s 56.2x 中位数时延 2.26s 127.44s 56.4x 标准差 0.025s 2.21s - 实时率 (RTF) 0.45 25.30 -
RTF < 1 表示推理速度快于实时,满足流式 ASR 需求
精度评测
指标 结果 Encoder 最大差异 0.0570 Encoder 平均差异 0.0073 CTC 最大差异 0.0605 CTC 平均差异 0.0065 最大相对误差 0.42% 精度验收 ✅ PASS (< 1% 误差)
显存占用
指标 值 模型加载 ~3.1 GB 推理峰值 ~4.0 GB
文件说明
文件 说明 inference.pyNPU 推理脚本(支持 benchmark 模式) eval_accuracy.pyNPU vs CPU 精度评测脚本 model/config.yamlESPnet 模型配置文件 model/small.pt模型权重 (1.4 GB) model/bpe.modelSentencePiece BPE 分词模型 model/feats_stats.npz特征归一化统计量
许可证
本项目基于 Apache 2.0 许可证开源。模型权重版权归 DataoceanAI 所有。
标签
#NPU #Ascend #昇腾 #ASR #Speech-Recognition #Dolphin #E-Branchformer #PyTorch
引用
@article{dolphin2025,
title={Dolphin: A Large-Scale Automatic Speech Recognition Model for Eastern Languages},
author={DataoceanAI and Tsinghua University},
journal={arXiv preprint arXiv:2503.20212},
year={2025}
}