ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

PaddleSpeech 基于 ESC-50 的声音分类基准:PANNs 模型 5-Fold 指标与端到端复现指南

2026/9/25 5:18:13 拓冰建站 浏览量
PaddleSpeech 基于 ESC-50 的声音分类基准:PANNs 模型 5-Fold 指标与端到端复现指南 人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载本文以 PaddleSpeech 仓库中 examples/esc50/RESULTS.md 记录的 ESC-50 环境声音分类基准为核心系统介绍 PANNs 预训练模型CNN14 / CNN10 / CNN6在 5 折交叉验证下的准确率指标并结合 examples/esc50/README.md 的完整教程与paddlespeech/cls下的源码实现给出从数据准备、配置解读、模型微调、单文件预测到动转静部署的端到端实战方案。读完本文你将掌握如何在 PaddleSpeech 中复现这三项基准指标并能独立完成一条声音分类任务的全流程。任务概述与 ESC-50 数据集声音分类Sound Classification是声音算法中的一个热门研究方向。传统机器学习做法是人工提取音频的时域、频域特征经过特征选择与组合后交给 SVM 或决策树分类端到端深度学习则借助 RNN、CNN 等网络直接对波形waveform或时频特征time-frequency进行表征学习与分类预测。本示例使用的数据集为ESC-50Dataset for Environmental Sound Classification它包含2000 个带标签的、时长 5 秒的环境声音样本均为44,100 Hz 采样率的单通道音频文件所有样本被划分为50 个类别每个类别包含40 个样本。正是由于样本量较小、类别较多ESC-50 通常采用官方预定义的 fold 信息进行交叉验证来评估模型泛化能力。PANNs 预训练模型家族CNN14 / CNN10 / CNN6本示例基于PANNsPANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition预训练模型进行 Fine-tune 完成声音分类。PANNs 是在大规模 Audioset 数据集上预训练的声音分类/识别模型预训练后的模型还可以用于提取音频 embedding。PaddleSpeech 的 PaddleAudio 提供了 PANNs 的三种骨干网络预训练模型结构规模如下| 模型 | 结构 | 参数量 | Embedding 维度 | | -- | -- | -- | -- | | CNN14 | 12 个卷积层 2 个全连接层 | 79.6M | 2048 | | CNN10 | 8 个卷积层 2 个全连接层 | 4.9M | 512 | | CNN6 | 4 个卷积层 2 个全连接层 | 4.5M | 512 |从模型规模看CNN14 参数量远超 CNN10/CNN6理论上表征能力最强也是默认示例使用的骨干网络CNN10 与 CNN6 参数规模接近但 CNN10 层数更深。5 折交叉验证基准指标核心根据 examples/esc50/RESULTS.md 的记录本示例遵循 ESC-50 提供的 fold 信息对数据集进行5 折5-fold交叉验证的 Fine-tune 训练与评估各模型在验证集上的平均准确率如下| Model | Acc | | -- | -- | | CNN14 | 0.9500 | | CNN10 | 0.8975 | | CNN6 | 0.8825 |三项指标的含义0.9500CNN1412 层卷积骨干配合预训练权重在 ESC-50 上达到最高精度说明参数量与表征深度对 50 类环境音识别有明显收益0.8975CNN10中等规模模型在精度与参数量之间取得较好平衡0.8825CNN6最轻量的模型仍保持近 90% 的准确率适合对推理体积敏感的场景。需要说明的是上述结果为 5 折交叉验证的平均准确率ESC-50 官方将 2000 个样本预先划分为 5 个 fold每折 400 个样本训练时轮流取其中 4 折做训练集、1 折做验证集共训练 5 次后取平均。示例配置中data.train.split与data.dev.split即用于指定使用哪个 fold 划分详见下文训练配置。端到端复现模型训练一键启动训练在examples/esc50/cls0目录下执行以下命令即可启动 Fine-tune 训练支持单卡与多卡$ CUDA_VISIBLE_DEVICES0 ./run.sh 1 conf/panns.yamlrun.sh通过 stage 参数分发任务stage 1对应训练内部实际调用 examples/esc50/cls0/local/train.sh当CUDA_VISIBLE_DEVICES指定了多于一个 GPU 时使用paddle.distributed.launch启动分布式训练否则单进程直接运行paddlespeech/cls/exps/panns/train.py。训练配置详解训练参数集中在 examples/esc50/cls0/conf/panns.yaml 的training段中| 配置项 | 示例值 | 说明 | | -- | -- | -- | |epochs| 50 | 训练轮次 | |learning_rate| 0.000055e-5 | Fine-tune 学习率预训练迁移场景下保持较小值 | |batch_size| 16 | 批处理大小需结合显存调整显存不足时适当调低 | |num_workers| 2 | Dataloader 获取数据的子进程数为 0 时在主进程加载数据 | |checkpoint_dir|./checkpoint| 模型参数与 optimizer 参数的保存目录 | |save_freq| 10 | 模型保存频率每 N 个 epoch 保存一次 | |log_freq| 10 | 训练信息打印频率每 N 个 step 打印一次 |数据与特征相关配置同样位于该 yamldata数据集入口paddle.audio.datasets:ESC50类别数num_classes: 50train.mode为train、dev.mode为dev两者共用同一个split: 1fold 编号用于按 ESC-50 的 fold 划分训练集与验证集feature采用 LogMel 谱图特征sr采样率为 32000n_fft为 1024hop_length为 320win_length为 1024窗函数hann频带范围f_min: 50.0至f_max: 14000.0Mel 频带数n_mels: 64。模型骨干通过model.backbone以动态导入字符串指定默认使用 CNN14# CNN14 model: backbone: paddlespeech.cls.models:cnn14如需切换为其他预训练模型仅需修改该行# CNN10 model: backbone: paddlespeech.cls.models:cnn10# CNN6 model: backbone: paddlespeech.cls.models:cnn6训练脚本的源码视角从 paddlespeech/cls/exps/panns/train.py 可以看清整个训练链路数据加载通过dynamic_import动态实例化 ESC50 数据集train_ds/dev_ds训练集使用paddle.io.DistributedBatchSamplershuffleTrue以支持多卡特征提取构造paddle.audio.features.LogMelSpectrogram(**feat_conf)提取 LogMel 特征并转置为[N, length, n_mels]送入模型模型组装骨干网络以pretrainedTrue, extract_embeddingTrue加载再包装为SoundClassifier(backbone, num_class50)分类头并套上paddle.DataParallel优化与损失使用Adam优化器学习率来自配置与CrossEntropyLoss训练循环每个 step 计算 logits 与损失、回传更新并按log_freq打印loss / acc / lr / step/sec / ETA周期评估与保存每save_freq个 epoch在验证集上计算dev_acc并将模型参数保存为model.pdparams、优化器状态保存为model.pdopt目录结构为checkpoint_dir/epoch_{N}/。单文件预测训练完成后执行 stage 2 即可对单个音频文件进行分类预测$ CUDA_VISIBLE_DEVICES0 ./run.sh 2 conf/panns.yaml预测参数配置在panns.yaml的predicting段| 配置项 | 示例值 | 说明 | | -- | -- | -- | |audio_file|/audio/dog.wav| 待预测的音频文件路径 | |top_k| 10 | 显示得分最高的 top k 个标签 | |checkpoint|./checkpoint/epoch_50/model.pdparams| 模型参数 checkpoint 文件 |预测输出示例如下对狗叫声样本的分类结果[/audio/dog.wav] Dog: 0.9999538660049438 Clock tick: 1.3341237718123011e-05 Cat: 6.579841738130199e-06从 paddlespeech/cls/exps/panns/predict.py 的实现看预测流程为用soundfile_load按配置采样率读取音频 →LogMelSpectrogram提特征 → 加载 checkpoint 权重并model.eval()→ 前向得到 logits →F.softmax转为概率 → 按概率降序取top_k个标签打印。可以看到示例中 Dog 类别概率接近 1.0分类置信度很高。模型部署动转静与静态图推理训练结束后可走动转静导出 静态图推理的部署链路。1. 动转静导出$ CUDA_VISIBLE_DEVICES0 ./run.sh 3 ./checkpoint/epoch_50/model.pdparams ./exportstage 3调用 examples/esc50/cls0/local/export.sh其内部执行paddlespeech/cls/exps/panns/export_model.py支持参数--checkpoint模型参数 checkpoint 文件--output_dir导出静态图模型和参数文件的保存目录。导出的静态图文件结构如下$ tree export export ├── inference.pdiparams ├── inference.pdiparams.info └── inference.pdmodel2. 静态图部署与预测$ CUDA_VISIBLE_DEVICES0 ./run.sh 4 cpu ./export /audio/dog.wavstage 4调用 examples/esc50/cls0/local/static_model_infer.sh内部执行paddlespeech/cls/exps/panns/deploy/predict.py。该脚本基于paddle.inference模块的 API 提供 Python 端部署示例主要参数--device预测设备如cpu/gpu--model_dir导出的静态图模型和参数文件目录--wav待预测的音频文件。小结PaddleSpeech 的 ESC-50 示例以 PANNs 预训练模型为骨干通过 5 折交叉验证在 2000 个环境音样本上取得了 CNN14 0.9500、CNN10 0.8975、CNN6 0.8825 的平均准确率见 examples/esc50/RESULTS.md。整套流程覆盖训练、预测、动转静导出与静态图推理配置全部收敛在 examples/esc50/cls0/conf/panns.yaml 中源码入口位于paddlespeech/cls/exps/panns/与paddlespeech/cls/models/panns/。无论是以 CNN14 追求最高精度还是以 CNN6 换取更小体积都可以通过修改model.backbone一键切换并复现对应指标。赞分享人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 环境声音分类ESC-50 基准指标与 PANNsCNN14/CNN10/CNN6复现指南PaddleSpeech 环境声音分类ESC 50 基准指标与 PANNsCNN14/CNN10/CNN6复现指南 本文围绕 PaddleSpeech 仓人工智能语音音频PaddleSpeech 声音分类Audio Tagging实战指南基于 PANNs 的 527 类 AudioSet 音频打标PaddleSpeech 声音分类Audio Tagging实战指南基于 PANNs 的 527 类 AudioSet 音频打标 本文是飞桨 Paddle人工智能语音音频NLP媒体生成PaddleSpeech 声音分类Audio Tagging实战指南基于 PANNs 的 527 类 AudioSet 音频打标PaddleSpeech 声音分类Audio Tagging实战指南基于 PANNs 的 527 类 AudioSet 音频打标 声音分类Audio T人工智能语音音频NLP媒体生成上一篇7个关键功能让OCRmyPDF成为PDF文档数字化的首选工具下一篇实战Corral用Amplab基准测试验证Serverless MapReduce性能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考