隨著機器學習的發展,很多「歷史遺留」問題有了新的解決方案。這些遺留問題中,有一個是音頻標籤化,即如何智能地給一段音頻打上標籤的問題,標籤包括「吉他」、「男中音」、「流水聲」、「嘻哈」、「節奏慢」、「重低音」等等,可以是多個標籤。

一旦能正確的打上標籤,特別是多個標籤時,就能有效地應用於很多場景,比如分離出純樂器的音頻、聚合有男中音的音頻、區分出有鳥叫的音頻,等等。

本文從機器學習的思路,簡單講解如何解決音頻標籤化的問題。

如果想通過機器學習的辦法來解決音頻標籤化的問題,那就跟其它問題的解決一樣,需要考慮訓練的模型,以及訓練的樣本。

(一)訓練樣本

這裡的訓練樣本就是音頻特徵的數據集合。

音頻特徵有很多,比如頻率、節拍、mfcc、過零率、短時能量、響度等等,其中的mfcc,是標籤化的有效特徵。那如何得到mfcc特徵的數據集,是解決樣本問題的關鍵。對於mfcc的概念,以及提取mfcc的辦法,小程之前有介紹過,這裡不再細說,讀者可以關注「廣州小程」微信公眾號,並在相應的菜單項中查閱。

以下講的音頻特徵都包括mfcc特徵(也可以包括其它特徵)。

為了得到音頻特徵的數據集(即訓練樣本),這裡介紹兩個辦法,一個是自己找音頻文件再提取出音頻特徵,另一個是使用google的audioset,這兩個辦法可以同時使用。當然,還有其它數據集可以使用,這個後續再介紹。

如果是自己找音頻文件,則需要考慮找哪些音頻文件。比如根據需要覆蓋的種類,找一批有這個種類的音頻文件,比如想提取「鋼琴」的特徵,就需要找一批鋼琴曲(甚至對各個文件進行裁剪,剪切出有鋼琴的片段)。根據機器學習的模型,選擇是否需要同時疊加其它種類的特徵。

在拿到音頻文件後,可以使用VGGish模型來提取音頻特徵。大體的思路是,先把音頻文件轉換成mfcc圖片,這時問題就變成了圖片識別,跟音頻已經沒有關係,然後,圖片需要進行切片,以960ms為一個切片,一個切片包括96個圖片幀,一幀10ms,不重疊。每一幀都包括了64個mel頻帶。經過這個切片的處理後,就得到了音頻特徵的數據集。當然,對於96*64的切片,還可以用VGGish進一步處理,演變成適合自己模型的特徵格式。

對應於VGG模型,有一個開源項目,地址是: github.com/tensorflow/m

對於音頻特徵的提取,除了VGG,還有其它的項目或模型也可以做到,這個小程另找機會來介紹。

另一個辦法,是使用google的audioset。注意,google的audioset 是音頻特徵而非音頻文件

audioset是google在2017年開放的大規模的人工標籤的音頻數據集,包括人、動物、環境音、樂器與音樂流派等音頻特徵,一共有632個音頻分類,超200萬個樣本(支持擴充),這些樣本來源於YouTube的視頻,當然經過了人工編輯。google這樣描述這些樣本分類,參考這個截圖:

那具體有哪些分類標籤呢,可參照這個文檔的說明:github.com/audioset/ont,比如其中部分內容:

audioset的首頁: research.google.com/aud

audioset的下載頁面: research.google.com/aud

audioset數據集,包括兩部分內容,一個是特徵文件(超2G),這樣下載:

下載後的特徵文件,是這個樣子的(都是record file):

audioset的音頻特徵,是通過VGG模型生成的,是128維的特徵值(是上面提到的96*64的向量的進一步的處理)。

audioset的另一部分內容,是樣本的描述文件,內容包括每個樣本對應的視頻ID、起始與結束時間、標籤ID(若干個),共有三個描述文件,如下面的截圖說明:

那描述文件中的標籤ID是怎麼關聯到具體的含義的呢?下面的截圖能說明其中的關聯:

圖中的標籤含義,就是上面提到的「標籤文檔」,即: github.com/audioset/ont

以上,介紹瞭如何獲取音頻特徵數據集的問題,接下來,就是訓練模型的事情。

(二)訓練模型

對於不同的樣本格式,選擇不同的訓練模型。

比如對於audioset,可以選擇YouTube-8M訓練模型,對應的開源的啟動項目是: github.com/google/youtu

這個youtube-8m項目,訓練樣本可以包括audioset跟youtube-8m的數據集。而對於自定義的樣本格式,就需要在開源項目的基礎上自行修改。youtube-8m基於tersorflow,而自行修改的項目一般也是基於tensorflow或更抽象的tflearn。

在訓練模型與訓練樣本準備好後,就可以開始訓練的工作,訓練的過程會產生系列的checkpoint,也就是一系列的預測模型,這時應該用測試樣本就行檢測,尋找到最佳的預測模型,這個預測模型就是最終實用的機器。

機器學習的實現過程,包括特徵提取、數據集生成、訓練模型生成與調整、分類樣本的收集,等等,涉及到很多處理細節,這裡不作展開了。


總結一下,本文簡單介紹了音頻標籤化的實現,包括訓練樣本的準備與訓練模型的確定這兩部分的內容,這裡提供了一個實現的思路,但未提及更多相關細節的處理。

推薦閱讀:

相關文章