分享

音乐推荐系统源码[度学习Keras和TensorFlow]


实现过程
实现这一目标需要采集大量数据、处理和模型训练等步骤。下面是所有涉及的步骤:

下载MP3文件
首先要做的第一件事就是下载大量样本的MP3文件。
该网站上有超过400000的音乐文件可供销售,随意挑选了9种不同的音乐流派,然后从每种流派中都随机选择1000首。
9种流派:

  • 碎拍
  • 舞厅
  • 慢摇
  • 鼓与贝斯
  • 经典电音
  • 嘻哈/ RB
  • 微声舞曲
  • 摇滚/独立音乐
  • 迷幻舞曲

在接下来的几天日子里,我下载了这些流派总共9000个MP3文件。
转换音频频谱图
一个音频文件包含的数据太多,所以在这部分的整个过程中的很大一部分本质上是试图将信息从音乐中浓缩、提取主要特征并消除所有的“噪音”。它本质上是一个降维的预处理,这第一阶段是将音频转换成图像格式。
利用离散傅里叶变换将音频信号转换到频域上,处理收集的9000个MP3音频文件,每首歌保存为光谱图像。光谱图是一种表示声音的频谱随时间变化的可视化,图片上颜色的强度代表该频率的声音振幅。
本文选择创建成单色光谱图,如下图所示:
1.jpeg

上图是20秒左右的嘻哈音乐产生的声音。X轴表示时间,Y轴表示声音的频率。

分割图像为256×256
为了对这些数据训练一个模型,需要将所有的图像统一为相同的尺寸,所以将所有的光谱图分割为256×256大小。

2.png

切割完图片后,总共得到185000多张图片,每一张图像都标记与它所代表的音乐流派的标签。

下面将数据集分为训练集120000张、验证集45000张和测试集20000张。

训练一个卷积神经网络
利用上部分中的图像数据训练一个卷积神经网络,该网络要学习不同类型的音乐对应的频谱图像,所以使用类型标签并训练该网络能从图像中识别出音乐的类型。
3.jpeg

上图是本文搭建的卷积神经网络模型,可以看到,左上边的光谱图像将图像转换成一个表示每个像素的颜色的数字矩阵;之后数据经过卷积层、池化层以及全连接层等处理后送入到右下角的softmax分类器,分类器给出一个9位数的矢量,其中每位分别对应着9种音乐流派的概率,最后选择其中最大概率位置的流派为最终识别流派。


作者信息

Matthew Murray:数据科学家和分析师

个人主页:http://mattmurray.net/

Linkedin:https://www.linkedin.com/in/mattsrm/

Github: https://github.com/mattmurray
源码下载:

源码1:
juno_crawler-master.zip (9.67 KB, 下载次数: 2, 售价: 5 云币)

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条