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

获取数据集可能是这项工作中最耗时的部分。寻找音乐数据是一件很痛苦的事,每个文件通常是几MB,有各种各样的质量和录音参数(频率数,每秒比特数等)。但最大的痛苦是版权,没有合法的着名歌曲数据集,因为它们会花钱。目前使用的开源数据集是GTZAN的数据集。这个数据集很小(每种类型100首歌曲X 10种类型=总共1,000首歌曲),版权许可是有问题的。从我的角度来看,这是阻碍他取得更好成绩的原因之一。所以我想要生成更多数据来学习。最终我找到了MSD数据集(Million Song Dataset)。它是一个免费提供的音频功能数据的集合,共收集一百万当代流行音乐曲目。大约280GB的纯元数据。在MSD之上有一个名为tagtraum的项目,它将MSD歌曲分类为流派。现在的问题是获得声音本身,这里是我有点创意的地方。我发现每首歌在数据集中都有一个标签是来自名为7Digital的提供商的id。7Digital是音乐应用程序的SaaS提供商,它基本上可以让您流式传输音乐。所以我编写了“previewDownloader.py”,为MSD数据集中的每首歌下载30秒预览。我将其分为以下几类:蓝调

古典

国家

迪斯科

嘻哈

爵士乐

金属

流行的

雷鬼

rock

数据预处理拥有大数据集是不够的,与图像任务相反,我不能直接在原始声音样本上工作,快速计算: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并没有带来效果上的太大提升,主要原因是特征提取过少,所以在后续的工作中将在特征提取上做适当的改进。通过提取更多特征信息来提高模型效果。

深度学习 音乐分类_基于神经网络的音乐流派分类相关推荐

  1. Keras深度学习使用VGG16预训练神经网络实现猫狗分类

    Keras深度学习使用VGG16预训练神经网络实现猫狗分类 最近刚刚接触深度学习不久,而Keras呢,是在众多的深度学习框架中,最适合上手的,而猫狗的图像分类呢,也算是计算机视觉中的一个经典案例,下面 ...

  2. 深度学习 相机标定_基于深度学习的多传感器标定

    标定是确定不同坐标系的相互转换关系,是传感器数据融合的前提,特别是激光雷达和图像数据.这里以深度学习的方法训练CNN模型去回归坐标系转换的参数. 主要是两个CNN模型:RegNet和CalibNet. ...

  3. 深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】

    因PDF资源在微信公众号关注公众号:人工智能前沿讲习回复"超分辨"获取文章PDF 1.主题简介 图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题,在医疗图像分析.生物特 ...

  4. python音乐编程_基于python实现音乐播放器代码实例

    核心播放模块(pygame内核) import time import pygame import easygui as gui file = r'D:\CloudMusic\G.E.M.邓紫棋,艾热 ...

  5. python鸢尾花分类_基于python的鸢尾花二分类

    前言 也算是自己接触的第一个实例化的完整实现的小项目了吧(以前的的作业之类的都是没完全弄懂就交了不算哈),本此分享为简易鸢尾花的分类,实现语言是python 3.7,实现环境就是jupyter not ...

  6. 深度学习笔记(2) 神经网络基础

    深度学习笔记(2) 神经网络基础 1. 二分类 2. 逻辑回归 3. 逻辑回归的代价函数 4. 梯度下降法 5. 逻辑回归中的梯度下降 6. 简化的代价函数 1. 二分类 逻辑回归是一个用于二分类(b ...

  7. 为什么深层神经网络难以训练_深度学习与统计力学(III) :神经网络的误差曲面...

    谷歌和斯坦福最新合作综述报告,发表在物理学的顶级期刊"凝聚态物理年鉴"(Annual Review of Condensed Matter Physics).作者Yasaman B ...

  8. 深度学习 数码管_创新研发基于深度学习的可见光智能检测技术

    "随着国家智能电网战略布局的不断实施,依托于巡检机器人的变电站智能巡检技术必将逐步取代人力,成为电网巡检的主流.国电瑞源智能巡检机器人搭载基于可见光的智能检测技术实现输电设备异物检测.变电站 ...

  9. 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类

    文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...

最新文章

  1. 注册界面的设计与实现
  2. 计算机技能训练B会学什么,计算机入门及操作技能训练模拟试题.pdf
  3. 抖音上测试年龄星座的软件,抖音年龄计算器
  4. day28 socketserver
  5. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件_06)
  6. 在html5中 空标签可以不写,HTML5中标签之间尽量不要加enter或者空格
  7. 使用QHttp与C#编写的服务端交互(编译环境mingw)
  8. chainmaker 交易执行失败也会打包到区块 落盘
  9. 关于app跳转vueh5页面时获取url附带的参数_h5唤起app技术deeplink方案总结
  10. 【CS229机器学习】作业 Problem Set #1 有监督学习
  11. 初级面试常见sql练习
  12. unittest用例封装
  13. OpenCL设备存储形式
  14. 12种编程语言训练,开源的AI “程序员”来了,CMU出品
  15. About MyBatis——有关Mybatis,自问自答系列
  16. 对random.seed()的理解
  17. matlab dfe 仿真,Matlab Simulink
  18. [转]SpringMVC常见面试题总结
  19. 本地缓存之王-Caffeine
  20. C语言之对char*与char[]的理解

热门文章

  1. 计算机vb期末试题及答案,VB期末考试题库及答案
  2. nordic timeslot实现radio和ble一起工作
  3. CompactPCI连接器
  4. 微信公众号文章同步攻略
  5. AVG杀毒软件成功卸载
  6. mysql实战:左表数据全部展示,关联表有关联数据返回1,没有关联数据返回0
  7. 短视频如何做好内容付费
  8. Android 4.x Gallery2分析
  9. “雷曼事件”雷到我了?
  10. 立创开源丨基于CH340C的STC三口双电压自动冷启动自动下载器