1.本发明设计音频信息检索技术领域,主要设计一种基于深度学习的音乐流派分类方法。
背景技术:2.随着音乐流媒体服务的兴起,数以万计的数字音频被上传到互联网上。这些服务的关键特性是播放列表,通常按流派分组。不同音乐体裁的特点没有严格的界限,但同一体裁的音乐却有着相似的特点。通过对这些特征的分析,人类可以对许多音乐作品进行流派标注。
3.总体上来说,现存的方法只关注目标音频的视觉特征,而忽略了音乐本身的音频信息。这对音乐流派分类任务来说是不合理的。同时,现存的方法对于分类概率结果较低的情况并没有相应的解决的办法。
技术实现要素:4.发明目的:本发明提供了一种基于深度学习的音乐流派分类方法,通过充分利用目标音频的视觉特征和音频特征来有效预测所述目标音频的流派,并对不同分类概率的情况做出了相应的处理办法。
5.为实现上述目的,本发明才用的技术方案为:
6.一种基于深度学习的音乐流派分类方法,包括以下步骤:
7.步骤s1、首先对目标音频进行预处理,得到所述目标音频的视觉特征和音频特征;
8.步骤s2、通过10折交叉验证,将所述目标音频的特征数据一次放入每个模型中进行训练,选取泛化能力最优的模型;
9.步骤s3、对所述最优模型用全部的数据重新进行训练,保留最优参数;
10.步骤s4、将录制音频或原始音频文件进行预处理后投入使用所述最优参数的神经网络进行分类预测,分类器给出最终分类结果。
11.进一步地,所述步骤s1、中首先对目标音频进行预处理,得到所述目标音频的视觉特征和音频特征的具体步骤如下:
12.步骤s1.1、为了增加数据量,将目标音频切割为长度约为3s的片段;
13.步骤s1.2、对所述音频片段应用预加重滤波器来放大高频;
14.步骤s1.3、在预加重之后,将所述音频片段分为短时间帧,在将所述音频片段切片成帧之后,对每一帧应用一个窗口函数,例如hamming窗口;
15.步骤s1.4、在所述每一帧上进行n点快速傅里叶变换(fft)来计算频谱,这也称为短时傅里叶变换(stft),其中n通常是512或256,还要通过相应的公式计算功率谱(周期图)。
16.步骤s1.5、对所述功率谱应用三角形滤波器,通常是40个滤波器,在mel尺度上以提取频带,最终形成(none,128,130,1)的视觉特征数据张量;
17.步骤s1.6、对步骤s1.1获得的所述目标音频片段提取若干个不同音频维度的音频特征,每种特征均保留其均值和方差形式,最终形成(none,m)的音频特征数据张量。
18.进一步地,所述步骤s2、中通10折交叉验证,将所述目标音频的特征数据依次放入每个候选模型中进行训练,候选模型以视觉特征和音频特征两种特征作为输入,兼顾了音乐本身的视觉特征和音频信息。选取泛化能力最优的模型的具体步骤如下:
19.步骤s2.1、将所述目标音频的音频特征数据和视觉特征数据额分为比较均等且不相交的10份,然后取其中一份进行测试,另外的9份用作训练,然后求得error的平均值作为最终的评价指标;
20.步骤s2.2、对若干候选模型应用步骤s2.1、,选取具有最小泛化误差的模型作为最终模型。
21.进一步地,所述步骤s4、将录制音频或原始音频文件进行预处理后投入使用所述最优参数的神经网络进行分类预测,分类器给出最终分类结果的具体步骤如下:
22.步骤s4.1、对要预测的目标音频进行s1步骤的预处理后投入使用最优参数的神经网络进行分类预测;
23.步骤s4.2、所述神经网络的分类器会给出每个流派的可能概率,每个片段经过网络模型后都会“投票”给一个流派(一般情况下,为分类概率最高的那个类),我们会选择投票最多的流派。当top3的概率均很低时,该方法会将所述top3的概率均提供给用户并判定结果为poor。
24.有益效果:
25.本发明充分利用目标音频的视觉特征和音频特征来有效预测所述目标音频的流派,并对不同分类概率的情况做出了相应的处理办法,改善了用户的体验。
附图说明
26.图1是本发明提供的基于深度学习的音乐流派分类方法的总体流程图;
27.图2是本发明提供的深度神经网络结构图;
28.图3是本发明提供的较低分类置信度的结果图;
29.图4是本发明提供的基于dtzan数据集得到的混淆矩阵;
30.图5是本发明提供的三角形滤波器组图;
31.图6是本发明提供的多种流派的梅尔频谱图。
具体实施方式
32.下面结合附图提供具体实施例,对本发明作进一步的说明。
33.一种基于深度学习的音乐流派分类方法,结合图1具体包括以下步骤:
34.步骤s1、首先,加载目标音频作为源数据,将它们分成一个近3秒的窗口。具体来说,每三秒保留66149个采样点,长度不足的片段将被丢弃。这一步可以大大增加数据量,简化变换过程(如mel谱图)。图6所示不同流派的梅尔频谱图,其特征纹理有着明显的差异,使深度学习模型学习不同特征进而进行分类成为可能。同时,为了使模型更好地学习每种流派的特征,在分割数据集之前对数据序列进行置乱。本方法包含两种不同的数据特征,视觉特征和音频特征。对于视觉特征的提取,其具体步骤如下:
35.第一步是对信号应用预加重滤波器来放大高频。预加重滤波器在以下几个方面很有用:(1)平衡频谱,因为高频通常比低频小;(2)避免傅里叶变换操作期间的数值问题;(3)还可以提高信噪比(snr)。可以使用以下等式中的一阶滤波器将预加重滤波器应用于信号x:
36.y(t)=x(t)
‑
αx(t
‑
1)
37.过滤系数(α)的典型值为0.95或0.97。
38.在预加重之后,我们需要将信号分成短时间帧。这一步的基本原理是信号中的频率随时间而变化,因此在大多数情况下,对整个信号进行傅里叶变换是没有意义的,因为我们会随着时间的推移丢失信号的频率轮廓。为了避免这种情况,我们可以安全地假设信号中的频率在很短的时间内是平稳的。因此,通过在这个短时间帧上进行傅里叶变换,我们可以通过连接相邻帧来获得信号频率轮廓的良好近似。一般真的大小范围为20ms到40ms,帧之间的重叠率为50%(+/
‑
10%)。在本实施例中帧大小为23.22ms。
39.在将信号切片成帧之后,我们对每一帧应用一个窗口函数,例如hamming窗口。汉明窗具有以下形式,其中n为窗口长度:
[0040][0041]
在所述每一帧上进行n点快速傅里叶变换(fft)来计算频谱,这也称为短时傅里叶变换(stft),其中n通常是512或256,还要计算功率谱(周期图)。最后,对所述功率谱应用三角形滤波器如图5所示,通常是40个滤波器,在mel尺度上以提取频带,最终形成(none,128,130,1)的视觉特征数据张量。
[0042]
对于音频特征的提取,其具体步骤如下:
[0043]
对步骤s1.1获得的所述目标音频片段提取若干个不同音频维度的音频特征,如音色纹理特征:chroma,spectral centroid,spectral roll
‑
off等,每种特征均保留其均值和方差形式,最终形成(none,m)的音频特征数据张量,这里的m在本实施例中设为55。
[0044]
这样,我们就获得了一个(none,128,130,1)的视觉特征数据张量和一个(none,55)的音频特征数据张量。接下来,我们需要将所述两个特征张量分为大小相等且不相交的10份,每次取1份用作测试集,另外九份用作训练集,这样我们可以得到10种形式不同的数据集来评估模型泛化能力的好坏。根据10次得到的误差求平均作为该模型泛化能力的优劣指标,从而选取最优额模型来进行下一步的操作。上述方法被称为10折交叉验证。考虑到10折交叉验证的目的主要是为了选择模型的层数、神经元的激活函数、每层模型的神经元个数(即所谓的超参数)。因此需要不断地根据最终得到的平均误差来对超参数进行优化改进,从而得到当前最优的模型结构。
[0045]
在本实施例中,采用的模型包括一个音频特征处理模块(afe),一个视觉特征处理模型(vfe)和一个分类器。结合图2,其具体结构如下:
[0046]
为了更好地处理音频的mel谱图,vfe模块采用并行卷积层进行了微调,包括3层二维卷积、1层并行卷积(分别使用最大池和平均池)和2层递归神经网络(rnns)。与只使用一个卷积层然后对第四个卷积层执行池操作相比,本实施例选择使用具有不同池操作的并行卷积层。并行卷积层的主要优点是为后续层提供了更多的统计信息,进一步提高了模型的识别能力。在每个卷积运算过程中,除第一卷积层具有64个大小相等的不同核外,其他卷积
层具有128个核。每个卷积核的大小为3*3,跳长为1,每个卷积核与所有底层特征形成映射关系。卷积核覆盖在输入的相应位置。将卷积核中的每个值与输入中相应像素的值相乘。上述乘积之和是输出中目标像素的值。对输入的所有位置重复此操作。在每次卷积之后,执行批标准化(bn)和校正线性单元(relu)操作。我们还添加了一个最大池操作(仅适用于并行卷积层的一个分支)以减少参数的数量。此外,它有助于扩大感受野,实现非线性。池操作的过滤器大小主要采用2*2带步幅2,3*3带步幅3分别用于第一和第二池操作,4*4带步幅4用于其他池操作。卷积层和归并层的作用是将原始数据映射到隐层特征空间。vfe模块使用门控制单元(gru)的2层rnn来总结二维3层卷积和1层并行卷积的时间模式。然而,并不是所有并行卷积层的输出都放入rnn中,在rnns中只加入了最大池并行卷积的分支输出。考虑到人类在识别音乐体裁时,可能会在短时间内更加注重突出的节奏。最后,将有一个长度为160的向量输出,它由gru的输出和使用平均池运算的并行卷积的分支输出组成。我们不是简单地将输出相加,而是将输出串联起来以避免丢失一些信息。这样,可以获得更多具有低层次信息的特征。
[0047]
afe模块由五个致密层组成,每个致密层的大小分别为1024、512、256、128和64。为了解决实验中的过拟合问题,在每层bn层后增加0.4的dropout层。最后,afe模块将输出一个长度为64的向量。
[0048]
vfe模块、afe模块和分类器构成了整个网络模型。最后,将两个模块的输出连接起来,形成一个长度为224的特征向量。完全连接层(fc)通常在整个神经网络中扮演“分类器”的角色。但为了减少参数的数目,本文只使用一个具有softmax函数的fc层进行分类。与传统的多层完全连接层相比,特征映射和类型之间的对应关系更容易解释,也不容易出现过度拟合。由于最后一层使用了softmax函数,我们将得到每个流派的分类概率。
[0049]
10折交叉验证选择了具有最小泛化误差的模型作为最终模型,并且在整个训练集上再次训练该模型,从而得到最优模型。同时保留模型参数用来实现目标音频的流派分类。
[0050]
在目标音频分类的实现过程中,需要先将录制的音频或原始音频文件执行步骤s1的预处理操作,获得(none,128,130,1)的视觉特征数据张量和(none,55)的音频特征数据张量。将上述数据张量投入到模型中后得到每个流派的分类概率。
[0051]
考虑到我们对目标音频进行了分割,得到若干个连续的片段。为此,我们将使用投票系统。每个片段经过网络模型后都会“投票”给一个流派(一般情况下,为分类概率最高的那个类),我们会选择投票最多的流派,这将提高分类的准确性。
[0052]
我们构建的分类器的最后一层是softmax层。这意味着它不会真正输出检测到的类型,而是输出每个类型的概率。这就是我们所说的分类置信度。例如图3所示,我们可以拒绝来自低分类置信度切片的投票。如果没有明确的胜利者,我们将拒绝投票。如果没有任何一个流派获得超过某一分数(70%),就可以对该歌曲判定为poor,而只给出top3的分类结果供用户选择,这样,可以避免错误的标记歌曲,可以在用户的反馈下进一步对该歌曲进行分类。
[0053]
图4是本实施例的基于dtzan数据集得到的混淆矩阵。在机器学习领域,混淆矩阵(confusion matrix),又称为可能性表格或错误矩阵。它是一种特定的矩阵用来呈现算法性能的可视化效果。其每一列代表预测值,每一行代表的是实际的类别。所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观地看出哪里有错误,因为它们都在对
角线外面。混淆矩阵允许我们做出更多的分析,而不仅仅是局限在正确率上。
[0054]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。