音频课程文档

音频分类架构

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

音频分类架构

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

使用频谱图进行分类

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

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

这就是 音频频谱图 Transformer 所做的事情。它使用 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: 音频频谱图 Transformer

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

任何 Transformer 都可以作为分类器

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

例如,HF Transformers 有一个 Wav2Vec2ForCTC 模型,还有 Wav2Vec2ForSequenceClassificationWav2Vec2ForAudioFrameClassification。 这些模型的架构之间唯一的区别是分类层的大小和使用的损失函数。

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

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

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

< > 在 GitHub 上更新