d
dingdang666/cnn8rnn-audioset-sed-NPU
模型介绍文件和版本Pull Requests讨论分析

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%。

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/wsntxxn/cnn8rnn-audioset-sed
  • 适配代码仓库:https://gitcode.com/dingdang666/cnn8rnn-audioset-sed-NPU

2. 验证环境

组件版本
Python3.11.x
PyTorch2.10.0+cpu
torch_npu2.10.0
torchaudio2.11.0
transformers5.8.1
safetensors0.7.0
CANN8.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默认值
--devicenpu:0
--no_warmupFalse
benchmark.py默认值
--npu_devicenpu:0
--num_warmup3

7. 精度评测结果

输出张量向量级相对误差余弦相似度最大绝对误差平均绝对误差
clipwise_output0.078922%0.9999996424——
指标实测值阈值状态
向量级相对误差0.079%< 1%PASS
余弦相似度0.9999996> 0.99PASS

8. 性能数据

操作耗时
CPU 推理时间(FP32)3.22s
NPU 推理时间(FP16,3轮预热后)0.08s
加速比41.65x

9. 注意事项

  1. 输入为 32kHz 原始音频波形,脚本自动重采样和填充。
  2. 模型内部 RNN 层使用 .half() 转换,NPU 上需 patch 为 float32(脚本已自动处理)。
  3. 支持 clipwise_output(整段音频分类)和 framewise_output(逐帧事件检测)。
  4. 推理需要 torchaudio 库用于音频加载和重采样。
下载使用量0