当前位置: 首页 > news >正文

《 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'  # 切换为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_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。

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

http://www.xdnf.cn/news/1278667.html

相关文章:

  • GaussDB 数据库架构师修炼(十三)安全管理(1)-账号的管理
  • OmniHuman:字节推出的AI项目,支持单张照片生成逼真全身动态视频
  • STM32 HAL驱动MPU6050传感器
  • TradingAgents-CN: 基于多智能体的中文金融交易决策框架
  • 基于深度学习的异常检测算法在时间序列数据中的应用
  • 【深度学习3】向量化(Vectorization)
  • 广州建筑矢量数据分享,带高度,矢量文件
  • Day118 Spring Security
  • 论文阅读:Aircraft Trajectory Prediction Model Based on Improved GRU Structure
  • LabVIEW模糊逻辑控制车辆停靠
  • 视觉相机偏移补偿
  • .NET Core MVC中CSHTML
  • 嵌入式硬件中AI硬件设计方法与技巧
  • 18.WEB 服务器
  • docker compose和docker-compose命令的区别
  • Vue2篇——第二章 Vue从指令修饰符到侦听器的全面解析(重点)
  • MATLAB绘制水的蒸汽压曲线(Antoine方程)
  • jdk17下载安装教程【超详细图文】
  • 《设计模式》策略模式
  • vue3-基础语法
  • JUC学习笔记-----ReentrantLock
  • TC39x STM(System Timer)学习记录
  • 机器学习数学基础:46.Mann-Kendall 序贯检验(Sequential MK Test)
  • Spring Boot - 内置的9个过滤器用法
  • Day 9-2: Transformer翻译实例演示 - 翻译的基础设施
  • AI大模型 教师方向应用探索
  • Audio Flamingo
  • 第4章 程序段的反复执行4 多重循环练习(题及答案)
  • Python day40
  • C++ list类