cnn8rnn-audioset-sed on Ascend NPU
1. 简介
本文档记录 cnn8rnn-audioset-sed(CRNN 声音事件检测模型)在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
该模型包含 8 层卷积和 GRU 循环层,参数量约 6.4M,在 AudioSet 上预训练并微调,可检测 447 类声音事件,时间分辨率 40ms。本项目完成该模型在昇腾 NPU 上的推理适配,验证 NPU 与 CPU 结果的精度误差 < 1%。
相关地址:
2. 验证环境
| 组件 | 版本 |
|---|
| Python | 3.11.x |
| PyTorch | 2.10.0+cpu |
| torch_npu | 2.10.0 |
| torchaudio | 2.11.0 |
| transformers | 5.8.1 |
| safetensors | 0.7.0 |
| CANN | 8.5.1 |
| NPU 硬件 | Ascend 910B3 |
3. 模型信息
| 项目 | 值 |
|---|
| 模型架构 | 8x Conv2D + GRU + FC |
| 参数量 | ~6.4M |
| 声音事件类别 | 447 (AudioSet) |
| 采样率 | 32kHz |
| 时间分辨率 | 40ms |
| 权重格式 | safetensors |
| 框架 | PyTorch (transformers, trust_remote_code) |
| 预训练数据 | AudioSet |
| 许可证 | Apache-2.0 |
4. Conda 环境安装
conda create -n cnn8rnn-sed python=3.11 -y
conda activate cnn8rnn-sed
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.11.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install transformers safetensors --index-url https://repo.huaweicloud.com/repository/pypi/simple/
5. 推理执行
# NPU
python3 inference.py --model_path /path/to/cnn8rnn-audioset-sed --audio_path /path/to/audio.wav
# CPU
python3 inference.py --model_path /path/to/cnn8rnn-audioset-sed --audio_path /path/to/audio.wav --device cpu
# 评测
python3 benchmark.py --model_path /path/to/cnn8rnn-audioset-sed
6. 参数说明
| inference.py | 默认值 |
|---|
--device | npu:0 |
--no_warmup | False |
| benchmark.py | 默认值 |
|---|
--npu_device | npu:0 |
--num_warmup | 3 |
7. 精度评测结果
| 输出张量 | 向量级相对误差 | 余弦相似度 | 最大绝对误差 | 平均绝对误差 |
|---|
| clipwise_output | 0.078922% | 0.9999996424 | — | — |
| 指标 | 实测值 | 阈值 | 状态 |
|---|
| 向量级相对误差 | 0.079% | < 1% | PASS |
| 余弦相似度 | 0.9999996 | > 0.99 | PASS |
8. 性能数据
| 操作 | 耗时 |
|---|
| CPU 推理时间(FP32) | 3.22s |
| NPU 推理时间(FP16,3轮预热后) | 0.08s |
| 加速比 | 41.65x |
9. 注意事项
- 输入为 32kHz 原始音频波形,脚本自动重采样和填充。
- 模型内部 RNN 层使用
.half() 转换,NPU 上需 patch 为 float32(脚本已自动处理)。
- 支持
clipwise_output(整段音频分类)和 framewise_output(逐帧事件检测)。
- 推理需要
torchaudio 库用于音频加载和重采样。