音频分类革命:如何用Hugging Face实现前沿的音频频谱图变换器

本文介绍了音频频谱图变换器(AST)模型,该模型利用视觉变换器处理音频数据,打破传统音频分类依赖CNN的局面。AST在AudioSet、ESC-50和Speech Commands V2上取得最佳性能。文章详细解析了ASTConfig、ASTFeatureExtractor、ASTModel和ASTForAudioClassification的参数、方法及应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

引言

ASTConfig

参数解释

示例代码及注释

ASTFeatureExtractor

参数解释

call 方法参数

ASTModel

参数

forward 方法参数

返回值

返回的主要元素

示例代码及说明

ASTForAudioClassification

参数

forward 方法参数

返回值

主要返回元素

示例代码及解释


引言

音频频谱图变换器(Audio Spectrogram Transformer,简称AST)是由Yuan Gong, Yu-An Chung, James Glass提出的一个模型。它通过将音频转换为图像(即频谱图)的方式,使用视觉变换器(Vision Transformer)来处理音频数据,并在音频分类任务上取得了最先进的结果。

在过去的十年里,卷积神经网络(CNN)被广泛应用于端到端的音频分类模型中,这类模型旨在学习从音频频谱图到对应标签的直接映射。为了更好地捕捉长距离的全局上下文信息,最近的趋势是在CNN的基础上添加自注意力机制,形成一个CNN-注意力机制混合模型。然而,这种方法是否必须依赖于CNN尚不清楚,而且使用纯基于注意力的神经网络是否足以在音频分类中获得良好性能也是一个问题。在这篇论文中,我们通过引入AST来回答这个问题,这是第一个用于音频分类的纯粹基于注意力、无需卷积的模型。我们在不同的音频分类基准测试中对AST进行了评估,它在AudioSet上达到了0.485的平均精度(mAP),在ESC-50上的准确率为95.6%,在Speech Commands V2上的准确率为98.1%,均刷新了记录。

ASTConfig

ASTConfig 类是用来存储音频频谱图变换器(Audio Spectrogram Transformer, 简称AST)模型配置的类。这个类通过指定的参数定义了模型的架构。使用默认配置实例化一个配置对象将产生一个与AST MIT/ast-finetuned-audioset-10-10-0.4593架构相似的配置。

下面是ASTConfig参数的详细解释,以及如何使用这些参数来初始化AST模型的示例代码,并包含中文代码注释。

参数解释

  • hidden_size (int, 可选, 默认为 768) — 编码器层和池化层的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer编码器中隐藏层的数量。
  • num_attention_heads (int, 可选, 默认为 12) — Transformer编码器中每个注意力层的注意力头数量。
  • intermediate_size (int, 可选, 默认为 3072) — Transformer编码器中“中间”(即前馈)层的维度。
  • hidden_act (str 或 function, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu", "relu", "selu" 和 "gelu_new"。
  • hidden_dropout_prob (float, 可选, 默认为 0.0) — 嵌入层、编码器和池化器中所有全连接层的dropout概率。
  • attention_probs_dropout_prob (float, 可选, 默认为 0.0) — 注意力概率的dropout比率。
  • initializer_range (float, 可选, 默认为 0.02) — 初始化所有权重矩阵的truncated_normal_initializer的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-12) — 层归一化层使用的epsilon值。
  • patch_size (int, 可选, 默认为 16) — 每个补丁的大小(分辨率)。
  • qkv_bias (bool, 可选, 默认为 True) — 是否给查询、键和值添加偏差。
  • frequency_stride (int, 可选, 默认为 10) — 在对频谱图进行补丁化时使用的频率步幅。
  • time_stride (int, 可选, 默认为 10) — 在对频谱图进行补丁化时使用的时间步幅。
  • max_length (int, 可选, 默认为 1024) — 频谱图的时间维度。
  • num_mel_bins (int, 可选, 默认为 128) — 频谱图的频率维度(Mel频率窗口的数量)。

配置对象继承自PretrainedConfig,可以用来控制模型输出。更多信息请阅读PretrainedConfig的文档。

示例代码及注释

from transformers import ASTConfig, ASTModel

# 初始化一个AST MIT/ast-finetuned-audioset-10-10-0.4593风格的配置
configuration = ASTConfig()

# 使用MIT/ast-finetuned-audioset-10-10-0.4593
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E寻数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值