本文整理了经典的音频分类模型PANNs的基本情况,模型架构及其预训练参数文件的分类,开发环境的搭建和基本的推理测试,以及对该模型主推的CNN14模型的网络架构进行了说明。

PANNs模型简介

PANNs (Large-scale Pre-trained Audio Neural Networks),大规模预训练音频神经网络。该模型由Qiuqiang Kong等学者在 2019-2020 年间提出,其核心意义在于:它打破了音频领域“小样本、难训练”的僵局,为各种音频任务提供了一套强大的通用特征提取器。从整体工作流程上讲,其工作原理就相当于是先对音频文件生成与之对应的梅尔刻度频谱图,然后再使用标准的卷积神经网络基于这个频谱图进行分类操作。该模型在Github上的仓库地址:qiuqiangkong/audioset_tagging_cnn

PANNs模型之所以强大,是因为它在Google的AudioSet数据集上进行了极其充分的训练,学会了分辨世界上几乎所有常见声音的频谱特征。该模型的预训练参数文件下载地址:PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition (Pretrained Models)。从以上的预训练参数下载文件列表中可以看到,该模型提供了多个不同网络模型和参数的预训练参数文件:

image.png

这些预训练参数文件的命令格式大致是:模型架构_采样率_嵌入向量长度_性能指标.pth。

环境安装与基本推理测试

环境与依赖安装:

<https://github.com/qiuqiangkong/audioset_tagging_cnn.git>
pip install -r requirements.txt
pip install h5py  # 需要额外安装这个包,否则运行后续的demo会报错

从源代码目录的scripts/0_inference.sh脚本中可以看到,该模型的推理模式可以分为两种模式:Audio Tagging和Sound Event Detection。

audio_tagging推理模式测试:

(new-env) PS D:\Code\audioset_tagging_cnn> python ".\pytorch\inference.py" audio_tagging --model_type="Cnn14" --checkpoint_path="Cnn14_mAP=0.431.pth" --audio_path="resources/R9_ZSCveAHg_7s.wav" --cuda
GPU number: 1
Speech: 0.893
Telephone bell ringing: 0.754
Inside, small room: 0.236
Telephone: 0.183
Music: 0.092
Ringtone: 0.047
Inside, large room or hall: 0.028
Alarm: 0.014
Animal: 0.009
Vehicle: 0.008
embedding: (2048,)

CNN14模型结构

如上所述,PANNs 并不是单一的一个模型,而是一系列不同网络架构的全家桶。可以在其模型预训练权重文件下载地址 Zenodo 页面看到的各种模型的预训练权重文件,对应了不同的网络深度和结构: