《基于Pytorch实现的声音分类 :网页解读》
解读这个网页 https://blog.csdn.net/qq_33200967/article/details/119830756
该网页是一篇关于基于PyTorch实现声音分类项目的技术博客,详细介绍了项目的相关信息、使用方法及技术细节,以下是具体解读:
一、项目概述
- 项目目标:实现对各种环境声音、动物叫声和语种的识别。
- 支持内容:提供了多种声音分类模型,如EcapaTdnn、PANNS、ResNetSE等;还提供了常用的Urbansound8K数据集测试报告和一些方言数据集的下载及使用例子。
- 应用场景:可用于室外环境监测、野生动物保护、语音识别等领域,同时鼓励用户探索更多场景。
- 源码地址:AudioClassification-Pytorch。
二、使用准备
- 所需环境:Anaconda 3、Python 3.11、Pytorch 2.0.1,支持Windows 11或Ubuntu 22.04系统。
三、项目特性
- 支持模型:包括EcapaTdnn、PANNS、TDNN、Res2Net、ResNetSE、CAMPPlus、ERes2Net等。
- 支持池化层:有AttentiveStatsPool(ASP)、SelfAttentivePooling(SAP)、TemporalStatisticsPooling(TSP)、TemporalAveragePooling(TAP)。
- 支持预处理方法:MelSpectrogram、Spectrogram、MFCC、Fbank。
- 模型论文:每个模型都对应有相关的论文,如EcapaTdnn对应《ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification》等。
四、模型测试情况
在UrbanSound8K数据集(包含10个类别)上,使用Flank预处理方法时,各模型的参数(Params(M))和准确率如下:
模型 | Params(M) | 准确率 |
---|---|---|
ResNetSE | 7.8 | 0.98863 |
CAMPPlus | 7.1 | 0.97727 |
ERes2Net | 6.6 | 0.96590 |
PANNS(CNN10) | 5.2 | 0.96590 |
Res2Net | 5.0 | 0.94318 |
TDNN | 2.6 | 0.92045 |
EcapaTdnn | 6.1 | 0.91876 |
五、安装与使用步骤
- 安装环境
- 安装Pytorch的GPU版本(若已安装可跳过),命令为
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
。 - 安装macls库,可使用pip安装(
python -m pip install macls -U -i https://pypi.tuna.tsinghua.edu.cn/simple
)或源码安装(先克隆仓库,再进入目录执行python setup.py install
)。
- 安装Pytorch的GPU版本(若已安装可跳过),命令为
- 准备数据
- 将音频数据集存放在
dataset/audio
目录下,每个文件夹存放一个类别的音频数据,每条音频数据长度在3秒以上。 - 执行
create_data.py
生成数据列表,格式为“音频路径\t音频对应的类别标签”。以Urbansound8K为例,需下载并解压到dataset
目录下,再修改生成数据列表的代码。
- 将音频数据集存放在
- 修改预处理方法(可选):在配置文件中修改,默认使用Fbank,可根据需求选择其他方法,并设置相关参数。
- 提取特征(可选):执行
extract_features.py
提取特征并保存,然后修改配置文件中数据列表的路径,以加快训练速度。 - 训练:根据实际情况调整配置文件中的分类大小、批次大小等参数,然后执行单卡或多卡训练命令。
- 训练可视化:在项目根目录执行
visualdl --logdir=log --host=0.0.0.0
,并通过网页访问查看。 - 评估:执行
python eval.py --configs=configs/bi_lstm.yml
,输出准确率并保存混淆矩阵图片。注意中文类别标签在Ubuntu系统需安装字体。 - 预测:使用训练得到的模型参数文件,执行
python infer.py --audio_path=音频路径
进行预测。
六、其他功能
- 提供录音程序
record_audio.py
,用于录制采样率16000、单通道、16bit的音频。 infer_record.py
可不断进行录音识别,实现实时录音识别功能,可应用于如识别鸟叫并触发拍照等场景。
七、参考资料
列出了多个相关的GitHub仓库,如PaddleSpeech、PaddlePaddle-MobileFaceNets等。