《 AudioClassification-Pytorch:GitHub项目网页解读》
《 AudioClassification-Pytorch:GitHub项目网页解读》
解读这个网页 https://github.com/yeyupiaoling/AudioClassification-Pytorch
该网页是GitHub上一个基于PyTorch实现的声音分类系统项目主页,详细介绍了项目的核心信息、使用流程及技术细节,以下是具体解读:
一、项目概述
- 目标:实现对环境声音、动物叫声、语种等多种声音的精准识别,支持不同场景下的声音分类需求。
- 应用场景:涵盖室外环境监测(如城市噪音识别)、野生动物保护(如鸟类叫声区分)、语音识别(如方言识别)等,同时鼓励用户拓展更多场景。
- 交流支持:提供知识星球和QQ群(群号:758170167)供用户讨论,知识星球内可获取项目模型文件及其他资源。
二、使用准备
- 环境要求:
- 操作系统:Windows 11 或 Ubuntu 22.04
- 依赖工具:Anaconda 3、Python 3.11、PyTorch 2.0.1(需GPU支持)
三、项目核心特性
-
支持的模型:
包含7种主流声音分类模型,每种模型均对应相关研究论文,可根据需求选择:- EcapaTdnn、PANNS、TDNN、Res2Net、ResNetSE、CAMPPlus、ERes2Net、ERes2NetV2(新增模型)。
-
支持的池化层:
提供4种池化方式,用于特征聚合与降维:- AttentiveStatsPool(ASP)、SelfAttentivePooling(SAP)、TemporalStatisticsPooling(TSP)、TemporalAveragePooling(TAP)。
-
支持的预处理方法:
6种音频特征提取方法,可将原始音频转换为模型可处理的特征:- MelSpectrogram、Spectrogram、MFCC、Fbank、Wav2vec2.0、WavLM。
四、模型性能测试
在UrbanSound8K数据集(含10类城市环境声音,测试集共874条音频)上的性能表现如下:
模型 | 参数规模(Params/M) | 预处理方法 | 准确率 | 模型获取方式 |
---|---|---|---|---|
ResNetSE | 7.8 | Fbank | 0.96233 | 加入知识星球获取 |
ERes2NetV2 | 5.4 | Fbank | 0.95662 | 加入知识星球获取 |
CAMPPlus | 7.1 | Fbank | 0.95454 | 加入知识星球获取 |
EcapaTdnn | 6.4 | Fbank | 0.95227 | 加入知识星球获取 |
ERes2Net | 6.6 | Fbank | 0.94292 | 加入知识星球获取 |
TDNN | 2.6 | Fbank | 0.93977 | 加入知识星球获取 |
PANNS(CNN10) | 5.2 | Fbank | 0.92954 | 加入知识星球获取 |
Res2Net | 5.0 | Fbank | 0.92580 | 加入知识星球获取 |
- 说明:ResNetSE准确率最高,适合对精度要求高的场景;TDNN参数规模最小,适合资源受限的设备。
五、使用流程
1. 安装环境
- 安装PyTorch(GPU版):
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=11.8 -c pytorch -c nvidia
- 安装macls库:
- 快速安装:
python -m pip install macls -U -i https://pypi.tuna.tsinghua.edu.cn/simple
- 源码安装(推荐,保证最新):
git clone https://github.com/yeyupiaoling/AudioClassification-Pytorch.git cd AudioClassification-Pytorch/ pip install .
- 快速安装:
2. 数据准备
- 数据集结构:将音频文件按类别存放于
dataset/audio
目录(如dataset/audio/鸟叫声/
),每条音频长度需≥3秒。 - 生成数据列表:执行
create_data.py
生成训练/测试列表,格式为“音频路径\t类别标签”(标签从0开始)。
示例:dataset/UrbanSound8K/audio/fold2/104817-4-0-2.wav 4
- 若使用UrbanSound8K数据集,需下载并解压至
dataset
目录,再修改代码生成列表。
- 若使用UrbanSound8K数据集,需下载并解压至
3. 预处理配置(可选)
- 在配置文件中修改特征提取方法(默认Fbank),支持切换为MelSpectrogram、MFCC等,示例:
preprocess_conf:feature_method: 'MFCC' # 切换为MFCCmethod_args:sample_frequency: 16000 # 采样率num_mel_bins: 80 # 梅尔 bins 数量
4. 提取特征(可选,加速训练)
- 提前提取音频特征并保存,训练时直接加载:
python extract_features.py --configs=configs/cam++.yml --save_dir=dataset/features
- 修改配置文件,将
dataset_conf.train_list
和test_list
指向生成的特征列表(train_list_features.txt
、test_list_features.txt
)。
5. 模型训练
- 单卡训练:
CUDA_VISIBLE_DEVICES=0 python train.py
- 多卡训练:
CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc_per_node=2 train.py
- 关键参数调整:
dataset_conf.num_class
:根据数据集类别数修改(如UrbanSound8K为10)。dataset_conf.batch_size
:显存不足时减小该值。
6. 训练可视化
- 执行命令启动VisualDL,通过网页查看损失、准确率等指标:
visualdl --logdir=log --host=0.0.0.0
- 访问
http://localhost:8040
(服务器需替换为对应IP)。
7. 模型评估
- 执行评估命令,输出准确率并生成混淆矩阵(保存于
output/images/
):python eval.py --configs=configs/bi_lstm.yml
- 注意:中文标签在Ubuntu系统需安装字体(如SimHei),否则可能显示异常。
8. 预测
- 使用训练好的模型预测音频类别:
python infer.py --audio_path=数据集音频路径
六、其他功能
-
录音工具:
record_audio.py
可录制采样率16000Hz、单通道、16bit的音频,方便制作自定义数据集:python record_audio.py
-
实时录音识别:
infer_record.py
支持持续录音并实时分类,可用于场景化应用(如鸟类监测触发拍照):python infer_record.py --record_seconds=3 # 每3秒识别一次
七、参考资料
- 相关开源项目:PaddleSpeech、PaddlePaddle-MobileFaceNets、PPASR、3D-Speaker。
该项目提供了完整的声音分类解决方案,从数据处理到模型部署均有详细指导,适合开发者快速上手并应用于实际场景。