新闻详情

新闻详情

首页 / 资讯中心 / 详情

PaddleSpeech 声音分类实战:基于 PANNs 预训练模型微调 ESC-50 数据集,完成训练、预测与静态图部署

发布时间:2026/9/25 2:36:36来源:尧图网络
PaddleSpeech 声音分类实战:基于 PANNs 预训练模型微调 ESC-50 数据集,完成训练、预测与静态图部署
人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载本篇技术指南以 PaddleSpeech 仓库中的 examples/esc50 声音分类示例为切入点完整讲解如何利用在 AudioSet 上预训练的 PANNsCNN14/CNN10/CNN6模型在 ESC-50 环境声音分类数据集上进行微调Fine-tune并依次走通训练、预测、动转静导出与静态图部署推理的完整链路。读完本文你将掌握PaddleSpeech 声音分类任务的示例目录结构、panns.yaml全部配置项的含义、四个阶段的 shell 命令用法以及 PANNs 骨干网络与分类器在仓库中的底层实现原理。声音分类任务与 PANNs 方案声音分类与检测是声音算法领域的热门研究方向。传统机器学习方法通常先人工提取音频的时域、频域多种特征再经特征选择、组合与变换最后交给 SVM 或决策树等分类器而端到端深度学习方法则利用 RNN、CNN 等深度网络直接对波形waveform或时频特征time-frequency feature进行表示学习representation learning与分类预测。在 IEEE ICASSP 2017 大会上Google 开放了大规模音频数据集 AudioSet包含 632 类音频类别、2,084,320 条人工标注、每段10 秒的声音片段来源于 YouTube 视频。基于该数据集训练出的 PANNsLarge-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition模型在完成预训练后可以用于提取音频的 embedding作为下游任务的通用特征。本示例正是使用 PANNs 预训练模型通过 Finetune 完成声音分类任务。模型简介CNN14 / CNN10 / CNN6PaddleSpeech 中的 PaddleAudio 模块提供了 PANNs 的 CNN14、CNN10、CNN6 三种预训练模型结构规模与 embedding 维度各不相同可在精度与计算量之间按需取舍| 模型 | 结构 | 参数量 | Embedding 维度 | | -- | -- | -- | -- | | CNN14 | 12 个卷积层 2 个全连接层 | 79.6M | 2048 | | CNN10 | 8 个卷积层 2 个全连接层 | 4.9M | 512 | | CNN6 | 4 个卷积层 2 个全连接层 | 4.5M | 512 |从源码 paddlespeech/cls/models/panns/panns.py 可以印证三种网络的实现差异CNN14由 6 个ConvBlock串联每个 block 含 2 个 3×3 卷积层即 12 个卷积层通道数从 64 逐级翻倍至 2048emb_size 2048CNN10由 4 个ConvBlock8 个卷积层构成emb_size 512CNN6由 4 个ConvBlock5x5每个 block 1 个 5×5 卷积层构成emb_size 512。三者共享的卷积块结构为卷积 → BatchNorm → ReLU → 池化池化支持avg、max、avgmax三种方式特征聚合阶段使用mean(axis3)与max(axis2) mean(axis2)的组合后接 dropoutp0.5与fc1。当extract_embeddingTrue时输出 embedding否则输出经 sigmoid 归一化的 AudioSet 527 类预测fc_audioset输出维度为 527。三种模型均通过工厂函数cnn14()/cnn10()/cnn6()创建设置pretrainedTrue时会从百度 BOS 下载对应预训练权重panns_cnn14.pdparams等并加载到本地MODEL_HOME/panns目录。数据集ESC-50ESC-50 是环境声音分类的经典基准数据集包含2000个带标签、时长5 秒的环境声音样本采样率44,100 Hz、单声道样本按语义划分为50 个类别每类40 个样本。类别覆盖动物叫声、自然声景、人类非语音声音、室内/家用声音、室外/城市噪声五大类如 Dog、Rain、Crying baby、Door knock、Helicopter 等。仓库中的数据集实现位于 audio/paddleaudio/datasets/esc50.py首次使用时通过download_and_decompress自动下载ESC-50-master.zipmd5 为7771e4b9d86d0945acce719c7a59305a并解压到DATA_HOME解析meta/esc50.csv元数据字段包括 filename、fold、target、category、esc10、src_file、take通过modetrain/dev与splitfold 编号参数完成数据划分modetrain取 fold 不等于split的全部样本modedev取 fold 等于split的样本。模型指标示例依据 ESC-50 官方提供的 fold 信息进行5-fold微调训练与评估平均准确率如下亦记录于 examples/esc50/RESULTS.md| Model | Acc | | -- | -- | | CNN14 | 0.9500 | | CNN10 | 0.8975 | | CNN6 | 0.8825 |可以看到参数量最大的 CNN14 在 ESC-50 上获得了 95% 的平均准确率明显优于 CNN1089.75%与 CNN688.25%。快速开始示例目录结构与命令入口示例位于仓库 examples/esc50/cls0 目录统一入口为run.sh通过stage参数串联四个阶段| Stage | 功能 | 命令 | | -- | -- | -- | | 1 | 模型训练 |./run.sh 1 conf/panns.yaml| | 2 | 模型预测 |./run.sh 2 conf/panns.yaml| | 3 | 动转静导出 |./run.sh 3 checkpoint output_dir| | 4 | 静态图部署推理 |./run.sh 4 device model_dir audio_file|run.sh 会先执行source path.sh设置环境变量将仓库根目录与utils加入PATH、将仓库根目录加入PYTHONPATH并将BIN_DIR指向paddlespeech/cls/exps/panns随后根据CUDA_VISIBLE_DEVICES中显卡数量计算ngpu并分发到对应local/子脚本。训练阶段若ngpu 0则通过paddle.distributed.launch --gpus $CUDA_VISIBLE_DEVICES启动多卡分布式训练否则单进程直接运行 train.py。示例默认使用 CNN14若希望更换骨干网络只需修改配置文件中model.backbone字段。阶段 1模型训练启动训练单卡$ CUDA_VISIBLE_DEVICES0 ./run.sh 1 conf/panns.yaml多卡训练时只需在CUDA_VISIBLE_DEVICES中列出多张卡例如CUDA_VISIBLE_DEVICES0,1run.sh会自动计算 GPU 数量并走paddle.distributed.launch分支。训练相关参数集中在配置文件 examples/esc50/cls0/conf/panns.yaml 的training节完整配置如下data: dataset: paddle.audio.datasets:ESC50 num_classes: 50 train: mode: train split: 1 dev: mode: dev split: 1 model: backbone: paddlespeech.cls.models:cnn14 feature: sr: 32000 n_fft: 1024 hop_length: 320 window: hann win_length: 1024 f_min: 50.0 f_max: 14000.0 n_mels: 64 training: epochs: 50 learning_rate: 0.00005 num_workers: 2 batch_size: 16 checkpoint_dir: ./checkpoint save_freq: 10 log_freq: 10其中各训练参数的含义与建议epochs训练轮次示例配置为 50learning_rateFine-tune 学习率示例配置为5e-5微调阶段通常使用较小的学习率避免破坏预训练权重batch_size批处理大小需结合显存情况调整若出现显存不足OOM请适当调低示例配置为 16num_workersDataLoader 获取数据的子进程数文档说明默认值为 0加载数据在主进程执行仓库自带示例配置为 2checkpoint_dir模型参数与 optimizer 参数的保存目录示例配置为./checkpointsave_freq模型保存频率每 N 个 epoch 保存一次示例配置为 10即依次保存epoch_10、epoch_20……epoch_50log_freq训练信息打印频率每 N 个 batch 打印一次示例配置为 10。feature节定义特征提取参数重采样率sr: 32000、FFT 点数n_fft: 1024、帧移hop_length: 320、窗函数window: hann、窗长win_length: 1024、Mel 频率范围f_min: 50.0与f_max: 14000.0、Mel 通道数n_mels: 64训练与预测阶段会使用同一套特征参数。从训练主循环源码 paddlespeech/cls/exps/panns/train.py 可以看到完整链路先通过dynamic_import加载ESC50数据集与cnn14骨干用LogMelSpectrogram(**feat_conf)构造特征提取器再用SoundClassifier(backbone, num_class50)组装分类模型优化器采用 Adam、损失函数采用 CrossEntropyLoss。每个 epoch 内遍历 train_loader将波形经 LogMel 特征提取、转置为[N, length, n_mels]后送入模型得到 logits计算损失、反向传播并更新参数每隔log_freq个 step 打印一次loss / acc / lr / step/sec / ETA每隔save_freq个 epoch 在验证集dev split上评估一次并保存 checkpoint。训练结束后checkpoint 目录结构如下checkpoint/ └── epoch_50/ ├── model.pdparams # 模型参数 └── model.pdopt # optimizer 参数阶段 2模型预测使用训练好的动态图模型对单个音频文件进行预测$ CUDA_VISIBLE_DEVICES0 ./run.sh 2 conf/panns.yaml预测参数在predicting节配置predicting: audio_file: /audio/dog.wav top_k: 10 checkpoint: ./checkpoint/epoch_50/model.pdparamsaudio_file指定待预测的音频文件top_k显示得分最高的 top k 个标签文档描述默认值为 1仓库示例配置为 10checkpoint模型参数 checkpoint 文件路径。预测脚本 paddlespeech/cls/exps/panns/predict.py 的实现逻辑为读取audio_file按feature.sr重采样、经LogMelSpectrogram提取特征、加载 checkpoint 权重构建SoundClassifier后前向得到 logits再经 softmax 得到概率按概率降序输出前top_k个类别与得分。示例输出如下[/audio/dog.wav] Dog: 0.9999538660049438 Clock tick: 1.3341237718123011e-05 Cat: 6.579841738130199e-06可见模型以接近 1 的概率将样本判别为 Dog完全符合预期。阶段 3动转静导出训练结束后可将动态图参数导出为静态图模型与参数文件以实施静态图部署$ CUDA_VISIBLE_DEVICES0 ./run.sh 3 ./checkpoint/epoch_50/model.pdparams ./export导出脚本 paddlespeech/cls/exps/panns/export_model.py 支持两个参数checkpoint模型参数 checkpoint 文件output_dir静态图模型与参数文件的保存目录默认./export。导出过程为构建SoundClassifier(backbonecnn14(pretrainedFalse, extract_embeddingTrue), num_classlen(ESC50.label_list))加载 checkpoint 权重后置为 eval 模式通过paddle.jit.to_static指定输入规格InputSpec(shape[None, None, 64], dtypefloat32)即任意 batch、任意帧数、64 维 Mel 特征转成静态图最后用paddle.jit.save保存。导出后的目录结构为export ├── inference.pdiparams ├── inference.pdiparams.info └── inference.pdmodel阶段 4静态图部署推理paddle.inference模块下的 Python 端部署示例由 paddlespeech/cls/exps/panns/deploy/predict.py 提供$ CUDA_VISIBLE_DEVICES0 ./run.sh 4 cpu ./export /audio/dog.wav该脚本支持的主要参数如下比文档描述的device/model_dir/wav更丰富device预测设备可选cpu、gpu、xpu、gcu默认gpumodel_dir静态图模型与参数文件的保存目录默认./exportwav待预测的音频文件必填batch_size推理批大小默认 1use_tensorrtGPU 下是否启用 TensorRT 加速默认FalseprecisionTensorRT 精度可选fp32、fp16默认fp32cpu_threadsCPU 推理线程数默认 10enable_mkldnnCPU 下是否启用 MKLDNN 加速默认False。部署脚本内部使用paddle.inference.Config构建推理配置GPU 模式调用enable_use_gpu(100, 0)并支持 TensorRT 引擎与 FP16/FP32 精度CPU 模式调用disable_gpu()可选enable_mkldnn()缓存容量 10与set_cpu_math_library_num_threads()XPU 模式调用enable_xpu(100)。预测时对输入音频做 LogMel 特征提取通过 feed 句柄copy_from_cpu传入、执行predictor.run()、从输出句柄取回 logits经 softmax 与 argmax 得到类别索引最终打印Wav: /audio/dog.wav Label: Dog源码级原理从配置到分类的完整链路将以上四个阶段串起来看声音分类的完整数据流为数据ESC50数据集按 fold 划分 train/dev见 audio/paddleaudio/datasets/esc50.py特征LogMelSpectrogram将 32kHz 波形转为 64 维 Log-Mel 特征图feature节参数骨干PANNs 预训练模型CNN14/10/6提取 2048/512 维音频 embeddingpaddlespeech/cls/models/panns/panns.py分类头SoundClassifier在 embedding 上接 Dropout默认 0.1与Linear(emb_size, num_class)线性层输出 50 类 logitspaddlespeech/cls/models/panns/classifier.py训练Adam CrossEntropyLoss 微调save_freq控制 checkpoint 落盘paddlespeech/cls/exps/panns/train.py部署paddle.jit动转静导出inference.pdmodel / inference.pdiparams再由paddle.inference创建 Predictor 完成静态图推理paddlespeech/cls/exps/panns/deploy/predict.py。值得注意的是整个示例由dynamic_import驱动的配置即代码风格贯穿无论是数据集paddle.audio.datasets:ESC50还是骨干模型paddlespeech.cls.models:cnn14都由 yaml 中的字符串动态解析导入因此切换 CNN14/CNN10/CNN6 只需改一行model.backbone无需改动任何 Python 代码。这正是本示例可复用于自定义声音分类任务的关键设计。总结本文围绕 PaddleSpeech 的 ESC-50 声音分类示例系统梳理了基于 PANNs 预训练模型完成环境声音分类的完整流程了解 PANNs 三种骨干网络的规模与 embedding 维度、ESC-50 数据集的自动下载与 5-fold 划分机制、panns.yaml中训练/特征/预测三组配置的逐项含义以及训练、预测、动转静、静态图部署四个阶段的命令与脚本实现。借助dynamic_import的配置化设计读者可以轻松将 CNN14 替换为更轻量的 CNN10/CNN6或将 ESC-50 数据集替换为自定义音频分类数据快速复用到实际的声音分类业务中。赞分享人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 声音分类实战基于 PANNs 预训练模型的 ESC-50 微调、评估与部署PaddleSpeech 声音分类实战基于 PANNs 预训练模型的 ESC 50 微调、评估与部署 导读 本文以 PaddleSpeech 仓库中的声音分类人工智能语音音频PaddleSpeech 声音分类实战基于 PANNs 预训练模型在 ESC-50 上完成 Finetune、推理与部署PaddleSpeech 声音分类实战基于 PANNs 预训练模型在 ESC 50 上完成 Finetune、推理与部署 本指南以 PaddleSpeech人工智能语音音频NLP媒体生成基于 PaddleHub 与 PANNs 预训练模型的声音分类与 Audio Tagging 实战指南基于 PaddleHub 与 PANNs 预训练模型的声音分类与 Audio Tagging 实战指南 本文以 PaddleHub Fine tune API人工智能大模型微调模型推理服务上一篇FanControl中文界面配置指南5步实现Windows风扇精准控制下一篇【亲测免费】 RibbonWinForms 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

嵌入式WASM开发:ESP32上硬件访问的边界与正确姿势 2026/9/25 4:03:51

嵌入式WASM开发:ESP32上硬件访问的边界与正确姿势

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
STM32培训机构怎么选?老工程师拆解课程猫腻与避坑指南 2026/9/25 4:03:45

STM32培训机构怎么选?老工程师拆解课程猫腻与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
HDP发行版HBase二进制包部署指南:从解压到Sqoop导入验证 2026/9/25 4:03:45

HDP发行版HBase二进制包部署指南:从解压到Sqoop导入验证

简介:本资源为 Ambari 2.7.5 编译部署场景下提前备好的 HBase 二进制安装包,面向正在搭建 Hadoop 生态集群、受困于官方源下载缓慢的运维与大数据开发人员。包内共 412 个文件,以 194 个 jar 依赖库、158 个 Ruby 脚本、17 个 shell 启动脚本…

阅读更多 →
SGLang 部署 NeoHorse-1-4B 实战:3条命令拉起 OpenAI 兼容 API 2026/9/25 4:03:38

SGLang 部署 NeoHorse-1-4B 实战:3条命令拉起 OpenAI 兼容 API

SGLang 部署 NeoHorse-1-4B 实战:3条命令拉起 OpenAI 兼容 API 【免费下载链接】NeoHorse-1-4B 项目地址: https://ai.gitcode.com/hf_mirrors/TokenRhythm/NeoHorse-1-4B NeoHorse-1-4B 是 TokenRhythm 基于 Qwen3.5-4B 后训练的 40 亿参数智能体语言模型&…

阅读更多 →
MikroORM 数据库迁移完全指南:从 Schema Diff 到生产环境发布 2026/9/25 4:03:32

MikroORM 数据库迁移完全指南:从 Schema Diff 到生产环境发布

后端 【免费下载链接】mikro-orm TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases. 项目地址: https://gitcode.com/gh_mir…

阅读更多 →
解决单向旋转偶发反向:旋转电位器(rotary-potentiometer)严格消抖算法深度解析 2026/9/25 4:03:32

解决单向旋转偶发反向:旋转电位器(rotary-potentiometer)严格消抖算法深度解析

解决单向旋转偶发反向:旋转电位器(rotary-potentiometer)严格消抖算法深度解析 【免费下载链接】CupCode_EC11旋转编码器模块 此扩展适配于采用EC11的旋转编码器,不支持按键。 项目地址: https://gitcode.com/yuanshixiong/rota…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉