文章学习《使用深度学习Keras和TensorFlow打造一款音乐推荐系统》

时间:2022-08-08 13:58:02

本文仅是博主自己用来用来整理留存的摘录,如对题目感兴趣,请阅读原文。

原文地址
https://zhuanlan.zhihu.com/p/28310437

国内做得好的音乐APP网易云、虾米音乐和QQ音乐都会推荐喜欢的音乐。
推荐算法是计算机专业中的一种算法,通过一些数学算法,推测出用户可能喜欢的东西。

实现过程
采集大量数据、处理和模型训练

1、下载MP3文件
首先要做的就是下载大量样本的MP3文件。9种流派,每种随机选择1000首。碎拍、舞厅、慢摇、鼓与贝斯、经典电音、嘻哈、微声舞曲、摇滚、迷幻。

2、转换音频频域图
这部分是试图将信息从音乐中浓缩、提取主要特征并消除所有的“噪音”,本质上是一个降维的预处理,第一阶段是将音频转换成图像格式。
利用离散傅里叶变换将音频信号转换到频域上,处理收集的9000个MP3音频文件,每首歌保存为光谱图像。光谱图是一种表示声音的频谱随时间变化的可视化,图片上颜色的强度代表该频率的声音振幅。
文章学习《使用深度学习Keras和TensorFlow打造一款音乐推荐系统》
上图是20秒左右的嘻哈音乐产生的声音。X轴表示时间,Y轴表示声音的频率。

3 分割图像为256x256
为了将数据进行训练,需要将所有图像统一为相同的尺寸,将所有光谱图分割为256x256大小。
切割完得到185000多张图片,对每一张图像进行标记。数据集分为训练集120000张、验证集45000张和测试集20000张。

4 训练一个卷积神经网络
该网络学习不同类型的音乐对应的频谱图像,使用类型标签并训练该网络能从图像中识别出音乐的类型。
文章学习《使用深度学习Keras和TensorFlow打造一款音乐推荐系统》
上图是文章搭建的卷积神经网络模型,左上边的光谱图像将图像转换成一个表示每个像素的颜色的数字矩阵;之后数据经过卷积层、池化层以及全连接层等处理后送入到右下角的softmax分类器,分类器给出一个9位数的矢量,其中每位分别对应着9种音乐流派的概率,最后选择其中最大概率位置的流派为最终识别流派。

5 卷积神经网络的表现
文章搭建的卷积神经网络模型能够以75%的精度分类出歌曲的音乐流派
下面是每种类型歌曲的分类精度的详细情况:

迷幻舞曲:91%
鼓与贝斯:90%
舞厅:79%
碎拍:78%
经典电音:71 %
慢摇:71 %
摇滚/独立音乐:70%
微声舞曲:63%
嘻哈/ RB:61 %
从结果中可以看到在 分类迷幻电音时候表现优异 ,而分 类嘻哈/ RB音乐时效果不是很好 ,可能的原因是 数据集之间有一些交叉可能导致分类精度较低 ,比如嘻哈、碎拍和舞厅比较类似。而 迷幻电音完全不同于其他8个类型的音乐 ,这可能是其表现优异的原因吧。