音频课程文档

音频分类架构

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

音频分类架构

音频分类的目标是预测音频输入的类别标签。模型可以预测覆盖整个输入序列的单个类别标签,也可以预测每个音频帧(通常是每 20 毫秒的输入音频)的标签,在这种情况下,模型的输出是一系列类别标签概率。前者的例子是检测某种鸟发出的声音;后者的例子是说话人分离,模型预测在任何给定时刻是哪个说话人在说话。

使用声谱图进行分类

执行音频分类最简单的方法之一是假装它是一个图像分类问题!

回想一下,声谱图是一个形状为 (频率, 序列长度) 的二维张量。在音频数据章节中,我们将这些声谱图绘制为图像。你猜怎么着?我们可以将声谱图直接视为图像,并将其输入到常规的 CNN 分类器模型(如 ResNet)中,从而获得非常好的预测结果。更好的是,我们可以使用图像 Transformer 模型,如 ViT。

这正是 Audio Spectrogram Transformer (AST) 所做的工作。它使用 ViT 或 Vision Transformer 模型,并将声谱图作为输入而不是常规图像。由于 Transformer 的自注意力层,模型能够比 CNN 更好地捕捉全局上下文。

就像 ViT 一样,AST 模型将音频声谱图分割成一系列部分重叠的 16×16 像素图像块。然后,这些块序列被投影成一个嵌入序列,并像往常一样作为输入提供给 Transformer 编码器。AST 是一个仅包含编码器的 Transformer 模型,因此输出是一系列隐藏状态,每个 16×16 输入块对应一个隐藏状态。在此之上是一个带有 sigmoid 激活的简单分类层,用于将隐藏状态映射到分类概率。

The audio spectrogram transformer works on a sequence of patches taken from the spectrogram

图片来自论文 AST: Audio Spectrogram Transformer

💡 尽管我们在这里假装声谱图与图像相同,但它们之间存在重要差异。例如,向上或向下移动图像内容通常不会改变图像中内容的含义。然而,向上或向下移动声谱图会改变声音中的频率,从而完全改变其特征。图像在平移下是不变的,但声谱图不是。将声谱图视为图像在实践中可能非常有效,但请记住它们并非完全相同。

任何 Transformer 都可以是分类器

上一节中,你已经看到 CTC 是一种使用仅编码器 Transformer 进行自动语音识别的有效技术。这些 CTC 模型本身已经是分类器,可以预测来自分词器词汇表的类别标签概率。我们可以使用 CTC 模型,并通过改变标签并使用常规交叉熵损失函数而不是特殊的 CTC 损失函数对其进行训练,从而将其转换为通用音频分类器。

例如,HF Transformers 包含 Wav2Vec2ForCTC 模型,也包含 Wav2Vec2ForSequenceClassificationWav2Vec2ForAudioFrameClassification。这些模型架构之间的唯一区别在于分类层的大小和所使用的损失函数。

事实上,任何仅编码器的音频 Transformer 模型都可以通过在隐藏状态序列之上添加一个分类层来转换为音频分类器。(分类器通常不需要 Transformer 解码器。)

为了为整个序列预测单个分类分数(Wav2Vec2ForSequenceClassification),模型会取隐藏状态的平均值并将其输入到分类层。输出是单个概率分布。

为了为每个音频帧进行单独分类(Wav2Vec2ForAudioFrameClassification),分类器在隐藏状态序列上运行,因此分类器的输出也是一个序列。

< > 在 GitHub 上更新