首页
学习
活动
专区
工具
TVP
发布

基于神经网络的音乐流派分类

15

介绍

本文讨论神经网络对声音样本的音乐类型进行分类的任务。当我决定在声音处理领域工作时,我认为声音类型分类和图像分类是相同的问题。但是图像非常火热,我并没有找到太多关于深度学习来解决这个问题的相关资料。直到最近我找到一个关于使用深度学习技术的基于内容的音乐推荐。他们获取数据集的方式以及他们对声音所做的预处理确实启发了我,所以我决定用深度学习来对音乐流派进行分类。这个项目的一个子任务是学习一个新的深度学习SDK,该项目在Python中实现,机器学习部分使用TensorFlow。

数据集

数据预处理

拥有大数据集是不够的,与图像任务相反,我不能直接在原始声音样本上工作,快速计算:30秒×22050采样/秒= 661500矢量长度,这将是重载常规机器学习方法。

根据我阅读的所有论文并对声学分析进行了一些研究,业界正在使用Mel频率倒谱系数(MFCC)作为声音样本的特征向量,所以我使用了librosa来提取MFCC特征。

MFCC的推导如下:

对信号进行傅立叶变换(窗口摘录)。

使用三角形重叠窗口将上面获得的光谱的功率映射到梅尔尺度上。

记录每个梅尔频率的功率记录。

采用mel对数列表的离散余弦变换,就像它是一个信号一样。

MFCC是所得光谱的幅度。

我尝试了几个窗口大小和步幅值,我得到的最好结果是100毫秒的大小和40毫秒的步幅。

我尝试了两种方法,发现只使用mel频率我得到了非常好的结果,但权衡是当然的训练时间。在继续构建网络之前,我希望可视化预处理数据集,我通过t-SNE [10]算法实现了这一点。您可以看到MFCC的t-SNE图(步骤5)和Mel-Frequencies(步骤2)

网络结构

我采用卷积神经网络实现。该网络接收599个mea-frequency bean矢量,每个bean包含128个描述其窗口的频率。网络由3个隐藏层组成,在它们之间我正在进行最大池化。最后是一个完全连接的层,最终通过softmax得到了10个类型的10维向量。

结果

我发现了一篇题为“用于音频分类和聚类的基准数据集”的论文。并将其中一个非常类似的任务作为我的基准,它分类的类型:蓝调,电子,爵士,流行,嘻哈,摇滚,民谣,另类,恐怖。

我的结果

可以看到,使用CNN并没有带来效果上的太大提升,主要原因是特征提取过少,所以在后续的工作中将在特征提取上做适当的改进。通过提取更多特征信息来提高模型效果。

参考地址

github地址:https://github.com/mlachmish/MusicGenreClassification

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190104A06RZO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券