1. 程式人生 > >文章學習《使用深度學習Keras和TensorFlow打造一款音樂推薦系統》

文章學習《使用深度學習Keras和TensorFlow打造一款音樂推薦系統》

本文僅是博主自己用來用來整理留存的摘錄,如對題目感興趣,請閱讀原文。

國內做得好的音樂APP網易雲、蝦米音樂和QQ音樂都會推薦喜歡的音樂。
推薦演算法是計算機專業中的一種演算法,通過一些數學演算法,推測出使用者可能喜歡的東西。

實現過程
採集大量資料、處理和模型訓練

1、下載MP3檔案
首先要做的就是下載大量樣本的MP3檔案。9種流派,每種隨機選擇1000首。碎拍、舞廳、慢搖、鼓與貝斯、經典電音、嘻哈、微聲舞曲、搖滾、迷幻。

2、轉換音訊頻域圖
這部分是試圖將資訊從音樂中濃縮、提取主要特徵並消除所有的“噪音”,本質上是一個降維的預處理,第一階段是將音訊轉換成影象格式。
利用離散傅立葉變換將音訊訊號轉換到頻域上,處理收集的9000個MP3音訊檔案,每首歌儲存為光譜影象。光譜圖是一種表示聲音的頻譜隨時間變化的視覺化,圖片上顏色的強度代表該頻率的聲音振幅。
這裡寫圖片描述


上圖是20秒左右的嘻哈音樂產生的聲音。X軸表示時間,Y軸表示聲音的頻率。

3 分割影象為256x256
為了將資料進行訓練,需要將所有影象統一為相同的尺寸,將所有光譜圖分割為256x256大小。
切割完得到185000多張圖片,對每一張影象進行標記。資料集分為訓練集120000張、驗證集45000張和測試集20000張。

4 訓練一個卷積神經網路
該網路學習不同型別的音樂對應的頻譜影象,使用型別標籤並訓練該網路能從影象中識別出音樂的型別。
這裡寫圖片描述
上圖是文章搭建的卷積神經網路模型,左上邊的光譜影象將影象轉換成一個表示每個畫素的顏色的數字矩陣;之後資料經過卷積層、池化層以及全連線層等處理後送入到右下角的softmax分類器,分類器給出一個9位數的向量,其中每位分別對應著9種音樂流派的概率,最後選擇其中最大概率位置的流派為最終識別流派。

5 卷積神經網路的表現
文章搭建的卷積神經網路模型能夠以75%的精度分類出歌曲的音樂流派
下面是每種型別歌曲的分類精度的詳細情況:

迷幻舞曲:91%
鼓與貝斯:90%
舞廳:79%
碎拍:78%
經典電音:71 %
慢搖:71 %
搖滾/獨立音樂:70%
微聲舞曲:63%
嘻哈/ RB:61 %
從結果中可以看到在 分類迷幻電音時候表現優異 ,而分 類嘻哈/ RB音樂時效果不是很好 ,可能的原因是 資料集之間有一些交叉可能導致分類精度較低 ,比如嘻哈、碎拍和舞廳比較類似。而 迷幻電音完全不同於其他8個型別的音樂 ,這可能是其表現優異的原因吧。