音頻標籤化1:audioset與訓練模型 | 音頻特徵樣本
隨著機器學習的發展,很多「歷史遺留」問題有了新的解決方案。這些遺留問題中,有一個是音頻標籤化,即如何智能地給一段音頻打上標籤的問題,標籤包括「吉他」、「男中音」、「流水聲」、「嘻哈」、「節奏慢」、「重低音」等等,可以是多個標籤。
一旦能正確的打上標籤,特別是多個標籤時,就能有效地應用於很多場景,比如分離出純樂器的音頻、聚合有男中音的音頻、區分出有鳥叫的音頻,等等。
本文從機器學習的思路,簡單講解如何解決音頻標籤化的問題。
如果想通過機器學習的辦法來解決音頻標籤化的問題,那就跟其它問題的解決一樣,需要考慮訓練的模型,以及訓練的樣本。
(一)訓練樣本
這裡的訓練樣本就是音頻特徵的數據集合。
音頻特徵有很多,比如頻率、節拍、mfcc、過零率、短時能量、響度等等,其中的mfcc,是標籤化的有效特徵。那如何得到mfcc特徵的數據集,是解決樣本問題的關鍵。對於mfcc的概念,以及提取mfcc的辦法,小程之前有介紹過,這裡不再細說,讀者可以關注「廣州小程」微信公眾號,並在相應的菜單項中查閱。
以下講的音頻特徵都包括mfcc特徵(也可以包括其它特徵)。
為了得到音頻特徵的數據集(即訓練樣本),這裡介紹兩個辦法,一個是自己找音頻文件再提取出音頻特徵,另一個是使用google的audioset,這兩個辦法可以同時使用。當然,還有其它數據集可以使用,這個後續再介紹。
如果是自己找音頻文件,則需要考慮找哪些音頻文件。比如根據需要覆蓋的種類,找一批有這個種類的音頻文件,比如想提取「鋼琴」的特徵,就需要找一批鋼琴曲(甚至對各個文件進行裁剪,剪切出有鋼琴的片段)。根據機器學習的模型,選擇是否需要同時疊加其它種類的特徵。
在拿到音頻文件後,可以使用VGGish模型來提取音頻特徵。大體的思路是,先把音頻文件轉換成mfcc圖片,這時問題就變成了圖片識別,跟音頻已經沒有關係,然後,圖片需要進行切片,以960ms為一個切片,一個切片包括96個圖片幀,一幀10ms,不重疊。每一幀都包括了64個mel頻帶。經過這個切片的處理後,就得到了音頻特徵的數據集。當然,對於96*64的切片,還可以用VGGish進一步處理,演變成適合自己模型的特徵格式。
對應於VGG模型,有一個開源項目,地址是: https://github.com/tensorflow/models/tree/master/research/audioset
對於音頻特徵的提取,除了VGG,還有其它的項目或模型也可以做到,這個小程另找機會來介紹。
另一個辦法,是使用google的audioset。注意,google的audioset 是音頻特徵而非音頻文件。
audioset是google在2017年開放的大規模的人工標籤的音頻數據集,包括人、動物、環境音、樂器與音樂流派等音頻特徵,一共有632個音頻分類,超200萬個樣本(支持擴充),這些樣本來源於YouTube的視頻,當然經過了人工編輯。google這樣描述這些樣本分類,參考這個截圖: