ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Transformers 音频分类实操:14 分钟微调出一个环境音识别模型

Transformers 音频分类实操:14 分钟微调出一个环境音识别模型 Transformers 音频分类实操14 分钟微调出一个环境音识别模型【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers本文用 Transformers 库完成一个环境音识别任务把预训练音频模型 wav2vec2-base 微调成能区分门铃、电器、交通噪声等场景声音的分类模型。官方示例在单张 V100 上约 14 分钟跑完SUPERB 关键词子集上的准确率达到 98.26%。下面带你从装依赖到跑通验证全程不需要自己写特征提取代码这些库里都有现成实现。先看效果一次调用分出声音类别 全文的最终形态就是两行代码用pipeline(audio-classification, model./wav2vec2-ks)加载你微调好的模型再传给它一个 wav 文件返回的是一组标签 置信度比如[{label: turn_on, score: 0.969}, {label: off, score: 0.012}, ...]——模型以 97% 的把握判定听到的是开启声。输入一段录音输出一个场景标签这就是环境音识别系统的完整闭环。3 分钟搞懂原理wav2vec2 怎么听声音一句话总结预训练模型先听过大量无标注音频你再把一个分类头接上去让它记住你的类别。拆开看是三个角色wav2vec2-base 是在数百小时无标注音频上自监督预训练的模型可以理解为它已经会听特征提取器是个翻译官把原始波形统一转成 16kHz 的数值特征再交给模型分类头是最后新加的一小块网络输出端有 N 个位置正好对应你数据集里的 N 个类别。默认配置下只训练这个新头、冻结预训练部分所以数据少也能很快收敛。下面这张厨房图就是典型的应用场景之一模型做的事情相当于听声辨场景。想深入细节可以看官方音频分类任务文档。从零到跑通微调你的第一个环境音模型第 1 步2 分钟装好音频依赖环境要求 Python 3.10、PyTorch 2.5。音频相关依赖被打包成audio扩展一次装全git clone https://gitcode.com/GitHub_Trending/tra/transformers cd transformers pip install -e .[audio] pip install datasets[audio] evaluatesetup.py 里定义的 torchaudio、librosa 等音频依赖由第一条命令带出datasets和evaluate分别负责加载音频数据和计算准确率。第 2 步备好数据加载 wav2vec2示例脚本支持两种数据源Hub 上的数据集名或本地一份列出音频路径与标签的 CSV。模型侧只有几行核心代码——建特征提取器、加载模型并指定类别数、冻结预训练部分from transformers import AutoFeatureExtractor, AutoModelForAudioClassification processor AutoFeatureExtractor.from_pretrained(facebook/wav2vec2-base) model AutoModelForAudioClassification.from_pretrained( facebook/wav2vec2-base, num_labels2, ) model.freeze_feature_encoder()num_labels填你数据集的类别数重采样、随机裁剪等预处理都由脚本代劳完整参数说明见音频分类示例目录。第 3 步跑官方示例验证训练先用小数据集验证环境。⏱️ 官方示例在 SUPERB 的关键词子集4 类开关指令上跑关键词检测单张 V100 约 14 分钟python examples/pytorch/audio-classification/run_audio_classification.py \ --model_name_or_path facebook/wav2vec2-base \ --dataset_name superb --dataset_config_name ks \ --max_length_seconds 1 --num_train_epochs 5 \ --per_device_train_batch_size 32 --fp16 \ --do_train --do_eval --output_dir wav2vec2-ks跑完日志里会输出评测准确率模型保存在--output_dir指向的目录。换成自己的场景把--dataset_name换成--train_file指向本地 CSV 即可。最容易踩的 3 个坑1. 类别数不匹配直接报错。预训练模型的分类头对应 5 个类别你的数据集类别数不同时加载阶段就会报 size 不匹配。加一个--ignore_mismatched_sizes参数分类头会按你指定的数量重建错误消失。2. 采样率没对齐。wav2vec2-base 只认 16kHz 的音频示例用cast_column对音频列统一重采样如果你绕过它直接喂其他采样率的原始音频音调会整体偏移识别准确率随之下降。3. 长音频直接塞进去。训练时每条音频会被随机裁到max_length_seconds默认 20 秒这既是数据增强也划定了模型单次听的窗口。如果你的录音动辄一分钟且需要实时处理把这个值调小或自己做滑窗切分否则单条推理耗时会成倍拉长。想更进一步换 2 层结构的ntu-spml/distilhubert做骨干官方示例约 11 分钟跑完准确率只降约 1 个百分点。数据量充足时取消冻结特征编码器让全网络一起训练通常还能再涨一点精度。做量化或导出 ONNX 压缩模型体积部署到边缘设备。用 FastAPI 把 pipeline 包成 HTTP 接口对外服务模型侧代码零改动。--output_dir里保存的就是可用的环境音识别模型推理时一行pipeline(audio-classification)调用即可拿到标签与置信度家里的门铃、街边的施工声只要有带标签的录音同一套脚本都能复用。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表