ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

30分钟搭好环境音识别:Transformers音频分类完整实践

30分钟搭好环境音识别:Transformers音频分类完整实践 30分钟搭好环境音识别Transformers音频分类完整实践【免费下载链接】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门开了、吸尘器响了、楼下又在施工——如果你要把这类日常声音自动分门别类环境音识别Environmental Sound Recognition就是干这个的。过去你得自己写梅尔频谱、对齐采样率、搭训练循环现在用 Transformers 的AutoModelForAudioClassification配一个预训练的 Wav2Vec2基本是读配置 跑脚本的活。本文从零装环境到一条命令训出分类器再给三种典型改法读完你能拿到一套本地可直接运行的环境音识别训练流程含完整依赖清单三个可复制的命令行实战自建标注表、公开数据集、长音频多卡一份调参避坑清单采样率、随机裁剪、冻结编码器这些坑一次说清一条命令装好环境先克隆仓库并装基础依赖git clone https://gitcode.com/GitHub_Trending/tra/transformers cd transformers pip install . pip install .[audio] datasets[audio] evaluate.[audio]这个附加包对应setup.py里的extras[audio] deps_list(torchaudio, librosa, pyctcdecode, phonemizer)也就是音频 I/O 和特征处理的核心库datasets[audio]负责读取音频文件并自动重采样evaluate用来在训练后算准确率。装完跑一下python -c import transformers, torchaudio; print(transformers.__version__)确认版本号 ≥ 4.57.0训练脚本头部有check_min_version(4.57.0.dev0)的校验低了会直接报错。原理一屏拆完Wav2Vec2 是在海量无标注音频上预训练出来的声学编码器它懂声音长什么样但不懂你的类别标签。训练脚本做的事很简单在它顶上换一个num_labels类别数的小分类头再用你的标注数据微调。数据侧有两件事值得留意。第一脚本用datasets.features.Audio(sampling_rate16000)把音频统一重采样到特征提取器要求的 16kHz你不用手动转。第二训练时每条长音频会被random_subsample随机裁出一段默认最长 20 秒这既是数据增强也统一了输入长度验证集则整条送入、不裁剪。脚本的四个关键旋钮run_audio_classification.py参数很多真正影响结果的就这几个--max_length_seconds默认 20决定裁剪窗口。门铃、关键词这类短事件调成 1长场景音保持 10~20。窗口太长会把稀疏事件稀释掉是准确率低时第一个要查的。--freeze_feature_encoder默认 True冻结声学编码器只训分类头。标注数据少几千条以内就保持默认数据充足且想改变声学特征表示时再放开。--ignore_mismatched_sizes预训练模型自带的分类头维度对不上你的类别数时会报错加这个参数让它重建。--learning_rate冻结编码器时 3e-5 起步即可放开编码器后建议降到 1e-5 附近配合--warmup_steps观察前几百步 loss。场景一自己的标注表CSV训家电事件智能家居场景的典型做法录一批开门关门吸尘器洗衣机的片段整理成两列 CSV——音频路径列如path和类别列如category训练/验证各一份。然后python examples/pytorch/audio-classification/run_audio_classification.py \ --model_name_or_path facebook/wav2vec2-base \ --train_file ./data/train.csv \ --eval_file ./data/eval.csv \ --audio_column_name path \ --label_column_name category \ --output_dir env-sound-model \ --max_length_seconds 10 \ --learning_rate 3e-5 \ --num_train_epochs 5注意--audio_column_name/--label_column_name必须和 CSV 表头一字不差写错脚本会直接抛列名不存在的错误并列出可用列名照着改就行。场景二公开数据集14 分钟跑到 98%没有自己的数据时先用 SUPERB 的关键词检测子集keyword spotting验证环境是否通。示例 README 给出的配方在单张 V100 上约 14 分钟准确率 98.26%python examples/pytorch/audio-classification/run_audio_classification.py \ --model_name_or_path facebook/wav2vec2-base \ --dataset_name superb \ --dataset_config_name ks \ --output_dir wav2vec2-base-ft-ks \ --remove_unused_columns False \ --max_length_seconds 1 \ --learning_rate 3e-5 \ --per_device_train_batch_size 32 \ --gradient_accumulation_steps 4 \ --num_train_epochs 5 \ --do_train --do_eval关键词都是亚秒级事件所以--max_length_seconds直接给 1。这套命令也是排查环境问题的最好探针跑通它说明音频加载、特征提取、训练、评估全链路没问题。场景三长音频、多卡的场景/语言识别处理几十秒级别的长音频如语言识别、场景判定时同一个脚本换数据集和裁剪窗口即可示例 README 里用 common_language 数据集在 4 张 V100 上约 1 小时准确率 79.45%。相比场景二的差异点--dataset_name common_language、--label_column_name language、--max_length_seconds 16、学习率提到 3e-4并在训练参数里加--load_best_model_at_end --metric_for_best_model accuracy保证保存的是验证集最优的权重。多卡启动方式见示例目录下的 README这里不展开。训完怎么用训练结束后--output_dir里就是完整模型推理两行搞定from transformers import pipeline clf pipeline(audio-classification, model./env-sound-model) print(clf(./test.wav))要集成进自己的服务也可以AutoModelForAudioClassification.from_pretrained(./env-sound-model)加载后配合AutoFeatureExtractor手动前向方便加批量处理和阈值逻辑。想进一步压推理成本可以在导出前做量化或剪枝tests/quantization/下有现成的量化测试可参考思路。避坑清单按实际踩坑频率排列名报错CSV 表头和--audio_column_name、--label_column_name不一致错误信息里会列出实际列名改参数别改数据。分类头维度不匹配加--ignore_mismatched_sizes这是换num_labels时的标配。短事件准确率低先缩小--max_length_seconds再考虑数据量事件在 20 秒窗口里只占 0.2 秒模型自然学不动。类别不平衡给少数类过采样或在数据加载层做加权比调学习率有效。放开编码器后 loss 抖动降学习率并补 warmup而不是继续调 batch size。下一步把compute_metrics从单一 accuracy 扩展出逐类的 precision/recall能直接定位是哪一类没学明白源码见 examples/pytorch/audio-classification/run_audio_classification.py。换 HuBERT、XLSR-Wav2Vec2 等同类预训练编码器做基线对比命令只改--model_name_or_path即可。多卡训练与模型分享的完整流程在 examples/pytorch/audio-classification/README.md更多背景看 docs/source/en/index.md。【免费下载链接】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),仅供参考
返回列表