《 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支持)

三、项目核心特性

  1. 支持的模型
    包含7种主流声音分类模型,每种模型均对应相关研究论文,可根据需求选择:

    • EcapaTdnn、PANNS、TDNN、Res2Net、ResNetSE、CAMPPlus、ERes2Net、ERes2NetV2(新增模型)。
  2. 支持的池化层
    提供4种池化方式,用于特征聚合与降维:

    • AttentiveStatsPool(ASP)、SelfAttentivePooling(SAP)、TemporalStatisticsPooling(TSP)、TemporalAveragePooling(TAP)。
  3. 支持的预处理方法
    6种音频特征提取方法,可将原始音频转换为模型可处理的特征:

    • MelSpectrogram、Spectrogram、MFCC、Fbank、Wav2vec2.0、WavLM。

四、模型性能测试

UrbanSound8K数据集(含10类城市环境声音,测试集共874条音频)上的性能表现如下:

模型参数规模(Params/M)预处理方法准确率模型获取方式
ResNetSE7.8Fbank0.96233加入知识星球获取
ERes2NetV25.4Fbank0.95662加入知识星球获取
CAMPPlus7.1Fbank0.95454加入知识星球获取
EcapaTdnn6.4Fbank0.95227加入知识星球获取
ERes2Net6.6Fbank0.94292加入知识星球获取
TDNN2.6Fbank0.93977加入知识星球获取
PANNS(CNN10)5.2Fbank0.92954加入知识星球获取
Res2Net5.0Fbank0.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目录,再修改代码生成列表。
3. 预处理配置(可选)
  • 在配置文件中修改特征提取方法(默认Fbank),支持切换为MelSpectrogram、MFCC等,示例:
    preprocess_conf:
      feature_method: 'MFCC'  # 切换为MFCC
      method_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_listtest_list指向生成的特征列表(train_list_features.txttest_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=数据集音频路径
    

六、其他功能

  1. 录音工具record_audio.py可录制采样率16000Hz、单通道、16bit的音频,方便制作自定义数据集:

    python record_audio.py
    
  2. 实时录音识别infer_record.py支持持续录音并实时分类,可用于场景化应用(如鸟类监测触发拍照):

    python infer_record.py --record_seconds=3  # 每3秒识别一次
    

七、参考资料

  • 相关开源项目:PaddleSpeech、PaddlePaddle-MobileFaceNets、PPASR、3D-Speaker。

该项目提供了完整的声音分类解决方案,从数据处理到模型部署均有详细指导,适合开发者快速上手并应用于实际场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空云风语

人工智能,深度学习,神经网络

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值