当前位置: 首页 > 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.dtcms.com/a/326062.html

相关文章:

  • [4.2-2] NCCL新版本的register如何实现的?
  • 剧本杀小程序系统开发:推动行业数字化转型新动力
  • 数据上云有什么好处?企业数据如何上云?
  • vue3-pinia
  • mysql慢查询sql
  • 分裂的王国——进程间通信
  • GeoScene 空间大数据产品使用入门(1)应用场景与基本流程
  • 【接口自动化】-7- 热加载和日志封装
  • .NET Core MVC中CSHTML
  • 【测试】BDD与TDD在软件测试中的对比?
  • AI蛋白质设计学习主线
  • 【智能的起源】人类如何模仿,简单的“刺激-反应”机制 智能的核心不是记忆,而是发现规律并能迁移到新场景。 最原始的智能:没有思考,只有简单条件反射
  • 首涂模板第45套主题2.0修正版苹果CMS模板奇艺主题二开源码
  • 解决 VS Code 右键菜单丢失问题
  • calamine读取xlsx文件的方法比较
  • Spring Boot 2.0 升级至 3.5 JDK 1.8 升级至 17 全面指南
  • 计算机视觉CS231n学习(7)
  • 【Altium designer】解决报错“Access violation at address...“
  • 【代码随想录day 17】 力扣 617.合并二叉树
  • python魔法方法__str__()介绍
  • 【Lua】题目小练9
  • 从零构建自定义Spring Boot Starter:打造你的专属开箱即用组件
  • 爬虫与数据分析入门:从中国大学排名爬取到数据可视化全流程
  • Go语言构建高性能AI分析网关:原理与实战
  • 设计模式笔记_结构型_组合模式
  • React(四):事件总线、setState的细节、PureComponent、ref
  • Jenkins 搭建鸿蒙打包
  • 【k8s】k8s中的几个概念性问题
  • day48 力扣739. 每日温度 力扣496.下一个更大元素 I 力扣503.下一个更大元素II
  • 轻量级解决方案:如何高效处理Word转PDF?