前言#
在當今,大模型技術發展飛速,除了廣為人所知的 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 音效庫管理軟件介紹》。