CLAP文本-音频基础模型: LEARNING AUDIO CONCEPTS FROM NATURAL LANGUAGE SUPERVISION

一、TL;DR

  1. 现在的做法有什么问题?主流范式是 "一个类别标签对应多个录音",需要**提前标注+预测预先定义的类别,**只能做闭集理解,失去灵活性
  2. 我们怎么做?通过两个编码器和对比学习机制建立语言与音频的关联,将音频和文本描述映射到一个联合的多模态空间进行对齐
  3. 做得怎么样?12.8 万对音频 - 文本训练,在8 个领域的 16 项下游任务中评估,即使训练数据小于CV模型,Zero-Shot上达到了SoTA。finetune后在5项评估任务中也是SOTA
  4. 能做什么?消除了对类别标签训练的依赖,在推理时灵活预测类别,并能泛化到多个下游任务
  5. 对应的链接:
    1. paper:https://arxiv.org/pdf/2206.04769v1

    2. code:https://github.com/LAION-AI/CLAP

    3. code:https://github.com/microsoft/CLAP

二、方法

CLAP 的结构如图 1 所示:

  1. 输入为音频和文本对,分别传入音频编码器和文本编码器。两种表示通过线性投影映射到联合多模态空间中,
  2. 该空间通过batch中音频 - 文本对的(不)相似性,利用对比学习进行学习。
  3. 预训练的编码器及其MLP层可用于计算音频和文本embedding,从而实现zero-shot分类。

2.1 对比语言 - 音频预训练

2.1.1 特征提取

2.1.2 线性变化

2.1.3 计算相似性

2.2 zero-shot线性分类

对于零样本分类,利用 CLAP 判断音频与文本相似性的能力。考虑一个包含C个类别标签和N个测试音频的目标数据集:

  1. 首先,使用预训练的编码器及其投影层,计算N个音频的音频嵌入和C个类别的文本嵌入;
  2. 由于两种嵌入处于同一空间,计算每个测试音频与所有类别标签的余弦相似度,每个音频将获得与类别标签数量相同的 logits;
  3. 对 logits 应用 softmax 函数(适用于二分类或多分类任务)或 sigmoid 函数(适用于多标签分类任务),将其转换为概率分布。

三、Experiments

3.1 数据集

训练数据:从4 个数据集中选取了12.8万对音频 - 文本数据对构建 CLAP 的训练集,具体包括:

  1. 从 FSD50k 中提取 36,796 对,从 ClothoV2 中提取 29,646 对,从 AudioCaps 中提取 44,292 对,从 MACS中提取 17,276 对。数据集详细信息见附录 A 和表 4。

下游任务:我们选取了 8 个领域的 16 个数据集作为下游任务,包括:

  • 5 项声音事件分类任务;
  • 5 项音乐相关任务(音乐与语音分类、音乐流派分类、音乐节拍与调性分类等);
  • 1 项声学场景分类任务;
  • 4 项语音相关任务(情感识别、关键词识别、人声分类(如咳嗽、喷嚏、笑声等));
  • 1 项说话人计数任务(统计录音中 0-10 人的说话人数)。

数据集信息见表 1,详细说明见附录 B 和表 5。

3.2 实验设置

预处理:音频采用对数梅尔频谱表示,采样率为 44.1 kHz,跳步大小为 320 秒,窗口大小为 1024 秒,梅尔 bins 数量为 64,频率范围为 50-8000 Hz。训练时,每个音频片段随机截断为 5 秒的连续片段,若长度不足则进行填充。文本描述未做修改,训练时音频 - 文本对按批次随机采样。

编码器

  • 音频编码器选用 CNN14 ,以便与现有最优模型公平对比。该模型含 8080 万参数,嵌入维度为 2048,已在 AudioSet 的 200 万音频片段上预训练。
  • 文本编码器选用 BERT,采用 HuggingFace实现的 BERT-base-uncased 版本,含 1.1 亿参数。为提高计算效率,文本序列最大长度限制为 100 字符,取 BERT 最后一层的 [CLS] token 作为文本嵌入(维度 768)。

音频嵌入和文本嵌入通过两个可学习的投影矩阵映射到维度为 1024 的多模态空间中。温度参数 τ 为可学习参数,初始值设为 0.007;为避免训练不稳定,经 τ 缩放后的 logits 最大值被限制为 100。

微调时候固定text/audio encoder参数对表现的影响:

3.3 CLAP 的评估设置

零样本评估:验证 CLAP 对未见过的类别和音频的泛化能力,具体设置见 2.2 节。评估时不直接使用类别标签,而是构建自然语言提示模板:"This is a sound of [class label]"。除 3 个任务外,所有领域均使用统一模板:

  • 情感识别任务使用:"this person is feeling [class label]";
  • 关键词识别任务直接使用关键词作为文本;
  • 说话人计数任务使用:"[number between 0-10] persons speaking"。

有监督特征提取评估:验证 CLAP 学习的音频表示质量。针对下游任务,将 CLAP 作为特征提取器,后续接 1 层或 3 层全连接分类器(分别记为 Freeze L1 和 Freeze L3),参考 [23] 的设置。训练采用 Adam 优化器,学习率 10⁻³,训练 30 个 epoch。受计算资源限制,未进行超参数网格搜索。

有监督微调评估:对比 CLAP 与文献中各任务的最优性能。针对下游任务,解冻音频编码器并与附加的 1 层或 3 层全连接分类器共同微调,优化器为 Adam,学习率 10⁻⁴,训练 30 个 epoch。受计算资源限制,未进行超参数网格搜索。

相关推荐
liuhaikang9 小时前
【鸿蒙HarmonyOS Next App实战开发】视频提取音频
华为·音视频·harmonyos
开开心心_Every14 小时前
多线程语音识别工具
javascript·人工智能·ocr·excel·语音识别·symfony
go546315846517 小时前
基于分组规则的Excel数据分组优化系统设计与实现
人工智能·学习·生成对抗网络·数学建模·语音识别
音元系统20 小时前
五度标调法调域统计分析工具
语言模型·自然语言处理·语音识别·输入法·语音分类
源码_V_saaskw1 天前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
go54631584651 天前
中文语音识别与偏误检测系统开发
开发语言·人工智能·学习·生成对抗网络·数学建模·语音识别
肥or胖2 天前
【音视频协议篇】WebRTC 快速入门
ffmpeg·音视频·webrtc
aqi002 天前
FFmpeg开发笔记(七十八)采用Kotlin+Compose的NextPlayer播放器
android·ffmpeg·音视频·直播·流媒体
tang_jian_dong2 天前
springboot + vue3 拉取海康视频点位及播放
spring boot·后端·音视频