音频分类架构
音频分类的目标是为音频输入预测一个类别标签。该模型可以预测涵盖整个输入序列的单个类别标签,或者可以为每个音频帧(通常为每 20 毫秒的输入音频)预测一个标签,在这种情况下,模型的输出是类别标签概率的序列。前者的一个例子是检测发出特定声音的鸟类;后者的一个例子是说话人识别,其中模型预测在任何给定时刻说话的说话人。
使用频谱图进行分类
执行音频分类的最简单方法之一是假装它是一个图像分类问题!
回想一下,频谱图是一个形状为 (frequencies, sequence length)
的二维张量。在 关于音频数据的章节 中,我们将这些频谱图绘制为图像。猜猜看?我们可以将频谱图视为图像并将其传递到常规 CNN 分类模型(如 ResNet)中,并获得非常好的预测。更棒的是,我们可以使用像 ViT 这样的图像 Transformer 模型。
这就是 **音频频谱图 Transformer** 所做的。它使用 ViT 或 Vision Transformer 模型,并将频谱图作为输入而不是常规图像。由于 Transformer 的自注意力层,该模型比 CNN 更擅长捕捉全局上下文。
与 ViT 一样,AST 模型将音频频谱图分割成一系列 16×16 像素的部分重叠图像块。然后将此块序列投影到嵌入序列中,并将这些嵌入序列作为输入提供给 Transformer 编码器。AST 是一个仅编码器的 Transformer 模型,因此输出是一系列隐藏状态,每个隐藏状态对应于一个 16×16 输入块。在它的顶部是一个简单的分类层,带有 sigmoid 激活函数,用于将隐藏状态映射到分类概率。
来自论文 AST:音频频谱图 Transformer 的图像
任何 Transformer 都可以是分类器
在 上一节 中,您已经了解到 CTC 是一种使用仅编码器 Transformer 执行自动语音识别的有效技术。这种 CTC 模型本身就是分类器,可以从分词器词汇表预测类别标签的概率。我们可以使用 CTC 模型并通过更改标签并使用常规交叉熵损失函数(而不是特殊的 CTC 损失函数)对其进行训练,将其转变为通用音频分类器。
例如,HF Transformers 具有 Wav2Vec2ForCTC
模型,但也有 Wav2Vec2ForSequenceClassification
和 Wav2Vec2ForAudioFrameClassification
。这些模型的架构之间的唯一区别是分类层的尺寸以及使用的损失函数。
事实上,通过在隐藏状态序列之上添加分类层,任何仅编码器的音频 Transformer 模型都可以转变为音频分类器。(分类器通常不需要 Transformer 解码器。)
为了预测整个序列的单个分类分数(Wav2Vec2ForSequenceClassification
),该模型对隐藏状态取平均值,并将其馈送到分类层。输出是一个单一的概率分布。
为了对每个音频帧进行单独分类(Wav2Vec2ForAudioFrameClassification
),分类器将在隐藏状态序列上运行,因此分类器的输出也是一个序列。