前言#
在当今,大模型技术发展飞速,除了广为人所知的 LLM 大模型以外,多模态模型也在工业界占据了一定的地位。其中比较著名的”CLIP“模型,就是为了解决机器在文本 - 视频这个跨领域中理解信息的能力。运用 CLIP,可以使模型 “理解” 视频内容与文本的关系,使得视频生成,图片生成等多模态模型成为可能。
而在音频届,同样基于 CLIP 模型的原理,开发出了文本 - 音频的 CLAP 模型。
模型介绍#
CLAP 作为一个自监督模型,运用对比学习来训练模型。
CLAP 通过文本 Encoder 和音频 Encoder 来使两者映射到同一向量空间,然后通过对比向量相似度即可寻找出相匹配的文本 - 音频对。对于文本 Encoder,模型使用了 BERT,对于音频 Encoder,则使用了从音频获取的梅尔频谱图。
在模型表现上,作者利用了几个经典的 audio event set 来测试,主要测试了音频分类,音乐分类和情感分析,还有 SpeakingCounting,测试结果如下:
这里 ZS 表示 zero-shot 的情况,可以看出来表现也是比较好的。
在游戏音频的应用#
CLAP 模型研发之初主要是用于音频分类,比如说在监控视频里监视是否特定的警报声之类的用途。
但是本文作者在看到其模型特点之后意识到 CLAP 是否适合于用于音效库的搜索。
在本来的音效库管理中,只能通过文件名或者 meta 标签来搜索音效。这样的搜索方法首先十分依赖于音效库本身要有完善的文件名起名规则,meta 标签也要尽可能地全,才能方便设计师搜索到想要的音效。
其次,一些音效是多重音效组合而成的,对于那些子音效来说,可能它本身的音频特点和它的文件名并不相符,这使得设计师在面对类似的场景时,要记忆更多的音效名称。
最后,很多音效名称都是英文的,我们必须得承认,并不是每个设计师都具有相当熟练水平的英文搜索能力。
而 CLAP 模型的介入则有效的避免了这些问题,首先因为所选的文本 Encoder 的存在,多语言都会被归为相同的向量,使得可以零成本的实现多语言搜索功能。
其次,在大量的训练数据中,CLAP 不断地理解文本与其对应的梅尔频谱图,使得模型最后可以被视为真正理解了音效所表达的内容,而不是单单从它的文件名出发,这也使得我们可以通过自然语言来描述我们所需要的音效的内容来搜索音频。
最后,还是基于 CLAP 对于音频内容的 “理解”,还使得我们可以不仅仅通过语言来搜索音频,还可以通过音频来搜索音频。进一步的说,我们可以通过规则的限制,输入一个标杆音效,然后依次根据其低,中,高频的特点来在音效库中搜索对应的音效。可以使我们快速的制作 “对标” 音效。XD
模型微调#
由于原模型是使用通用 audio event 训练集来训练的,因此在尝试之后笔者发现预训练的 CLAP 模型对于游戏音效的检索能力非常差。
因此笔者认为对其在游戏音效领域的微调训练是十分必须的。
于是笔者事先准备了几个 BoomLibrary 的音效库来作为训练数据集,同时也准备了一些作为测试集。
通过观察 CLAP 模型预训练的数据,笔者发现微调 CLAP 模型所需的文本 - 音频对数据中,对于音频的描述最好是使用一个描述性的句子,而不是一些 class label。这样对于其微调效果更好。
其余更具体的数据准备过程和微调过程由于保密原因,笔者就不放在这里了,如果有感兴趣的读者可以和我私下联系讨论。
最终效果#
以下是通过命令行交互小脚本做的一个简单的测试,请忽略一些搜索选项找不到 wav 文件的情况😀。
下一步就是具体的应用,笔者打算以其为基础,开发一款音效库管理检索软件。若想具体了解,可以参考后续更新的文章《“SoundLibraryPro”—AI 音效库管理软件介绍》。