一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于深度学习的两阶段琴音和弦识别方法与流程

2022-08-13 14:58:49 来源:中国专利 TAG:


1.本发明涉及琴音和弦识别技术领域,具体为一种基于深度学习的两阶段琴音和弦识别方法。


背景技术:

2.随着物质生活的逐渐富足,人们对于精神生活的品质也开始有更高的追求,学习乐器逐渐成为了一件普遍的趋势,过去学习乐器的方式往往需要依赖专业老师的现场指导,随着互联网时代人工智能的兴起,各种在线学习课程日益普遍,在线学习乐器也不例外,除了线上的视频课程内容外,乐器练习过程中的评价反馈同样十分重要,为了帮助乐器练习者实时正确评价当前的演奏水平,一套演奏评价系统显得十分重要,而为了正确评价,首先必不可少的一步是识别演奏者的演奏过程中的音符和和弦。
3.以钢琴为例,在钢琴里不同的音符具有相对应的音高,传统算法是基于自相关函数来提取音频段的基频,通过基频的高低和音符一一进行对应,来完成音符识别,随着深度学习的兴起,训练深层神经网络作为分类器来识别音符,基于神经网络的算法在识别率和噪声鲁棒性两方面都要优于传统算法,逐渐成为音符识别这一任务的主流,但除了单一音符的演奏,更多时候是演奏具有音程关系的多个音符组成的和弦。
4.目前基于单音符的算法往往对于和弦类型的识别不能取得很好的效果,主要原因有:1)多个音符弹奏的情况下,不同的音符互相干扰,使得单音符识别模型难以识别出正确的音符类别;2)为了正确的得到和弦识别结果,现有的方法常常根据单音符模型的输出结果进行设定判定规则,来判断音频段对应的和弦,但是这种方法对于和弦的识别率往往不高;3)单独针对和弦进行识别的和弦识别模型,无法同时考虑到单音符层面的信息,也无法同时输出单音符结果,故而提出了一种基于深度学习的两阶段琴音和弦识别方法来解决上述问题。


技术实现要素:

5.(一)解决的技术问题
6.针对现有技术的不足,本发明提供了一种基于深度学习的两阶段琴音和弦识别方法,具备在单音节识别模型基础上,另外添加一个利用神经网络进行和弦识别的阶段,与手动设计和弦判定规则的做法相比,提出的神经网络和弦识别算法能更好的对于上一阶段的单音节输出结果进行拟合建模,从而提高对于和弦的分类效果等优点;
7.解决了以下问题:
8.1、多个音符弹奏的情况下,不同的音符互相干扰,使得单音符识别模型难以识别出正确的音符类别;
9.2、为了正确的得到和弦识别结果,现有的方法常常根据单音符模型的输出结果进行设定判定规则,来判断音频段对应的和弦,但是这种方法对于和弦的识别率往往不高;
10.3、单独针对和弦进行识别的和弦识别模型,无法同时考虑到单音符层面的信息,
也无法同时输出单音符结果。
11.(二)技术方案
12.为实现上述在单音节识别模型基础上,另外添加一个利用神经网络进行和弦识别的阶段,与手动设计和弦判定规则的做法相比,提出的神经网络和弦识别算法能更好的对于上一阶段的单音节输出结果进行拟合建模,从而提高对于和弦的分类效果的目的,本发明提供如下技术方案,第一阶段为训练单音节识别模型,第二阶段包含训练音节识别模型,具体描述如下:
13.第一阶段:
14.步骤一、准备训练数据:准备用于训练的干净单音符音频数据,为了提升噪声下的识别效果,还需进行数据增强,这里将单音符音频数据和不同类型的噪声,以不同信噪比进行加噪处理,得到增强后的带有噪声的音频数据,将这些数据集混合一起按照8:1:1分为训练集、验证集和测试集;
15.步骤二、特征提取:对数据集数据进行加窗、分帧、短时傅里叶变换、并进行梅尔三角滤波,得到音频段的梅尔域频谱特征fbank特征;
16.步骤三、模型训练:将提取的音频特征,按照一定的拼接规则输入到单音符识别模型的训练脚本中进行训练,得到能够识别单音符的神经网络模型。
17.第二阶段:
18.步骤一、和弦数据准备:准备用于和弦训练的音频数据,每个时间段需要有对应的和弦类型/非和弦的标签,同样需要对训练数据进行加噪扩增;
19.步骤二、特征提取:将干净音频和带噪音频进行加窗、分帧、短时傅里叶变换,并进行梅尔三角滤波,得到和弦音频段的fbank特征;
20.步骤三、前向推理:将和弦音频段的fbank特征数据输入到阶段一训练的单音节识别模型中,每个输入帧得到一个输出分数,将相邻帧的输出结果进行拼接,并以一定的标准进行挑选,得到拼接分数的数据集;
21.步骤四、模型训练:将上一步经过挑选的拼接分数的数据集输入到第二阶段的和弦识别网络进行训练,由于每一个拼接分数段都有对应的和弦标签,因此可以训练出第二阶段所使用的和弦识别网络。
22.优选的,在第一阶段的步骤一中的训练数据,除带有正确音符文本的干净训练数据之外,还需要加入一定量非钢琴弹奏音的声音作为负样本,例如交谈声、电视声和街道噪声等,采用加噪的方式,加入不同信噪比的不同的噪声,扩充了不同噪声环境下的训练集,信噪比用用snr来衡量,具体计算公式如下:
[0023][0024]
其中,ps和pn分别表示干净音频和噪声音频的有效功率,在进行数据增强时,可供参考的信噪比等级在5-20db之间,噪声音频噪声集(噪声集包含多种类型噪声如交谈声、电视噪声、街道噪声等的)中随机选取。
[0025]
优选的,在第一阶段的步骤二中,每一帧的音频信号提取到40维的fbank特征,供参考的设置为加窗时选用汉明窗,设置单位帧长度为25ms,每一帧帧移10ms,使用此步骤的特征提取过程对全部训练样本对进行特征提取。
[0026]
优选的,在第一阶段的步骤三中,由于单音符识别任务中需要识别的对象是带有明显时序关系的音频段特征,因此这里考虑使用能够对这种时序关系进行建模的循环神经网络作为单音符识别网络的主干。
[0027]
优选的,在第二阶段的步骤一中,准备好干净的和弦音频数据后,对其进行数据增强和特征提取,并且对齐得到每一帧特征对应的和弦标签。
[0028]
优选的,在第二阶段的步骤三中,将提取后的特征,进行拼接后输入到单音符识别模型中,即可得到当前帧单音符识别分数,输出分数前后拼接30帧,即一个样本的矩阵形状为(61,89),由于输入特征进入单音符识别模型时已经经过拼帧,识别结果带有相邻帧的信息,对样本矩阵进行跨度为3帧的下采样,下采样后的样本矩阵形状为(20,89)。
[0029]
优选的,在第二阶段的步骤三中,和弦识别模型可以参照一阶段的单音节识别模型,设计为带有时序建模能力的,以gru为模型主干的网络,在完成数据准备,并且确定第二阶段模型结构后,使用交叉熵损失函数作为loss,迭代训练和弦识别模型。
[0030]
优选的,经过第一阶段和第二阶段,得到一个单音节识别模型和一个和弦识别模型,首次推理时,第一阶段起始音频段的特征输入到单音节识别模型后,输出音节识别的分数,当输入帧累计61帧时进行第二阶段的和弦识别过程,将61帧的分数下采样拼接到一起,输入到和弦识别模型中,为了连续进行推理,每3帧拼接分数样本将会剔除最先进入的分数,即样本矩阵第一行的分数,然后在最后一行后添加最新一帧的分数,来进行连续的样本生成和推理。
[0031]
(三)有益效果
[0032]
与现有技术相比,本发明提供了一种基于深度学习的两阶段琴音和弦识别方法,具备以下有益效果:
[0033]
1、用一个神经网络模型代替人为决策,以单音节识别模型输出的分数段作为输入,直接输出和弦识别的结果,简化了决策过程,同时更准确的对单音节的输出分数段进行建模,提高了和弦识别的准确率。
[0034]
2、第二阶段和弦识别模型在训练时,能够对训练数据进行挑选,手动划分难易样本的比例,这样既能够不改变第一阶段模型的参数,又能提高第二阶段和弦识别模型的识别准确率。
[0035]
3、与直接对和弦单元进行建模识别的方法相比,本发明提出的两阶段和弦识别方法不但能够在和弦识别时对音符层面的信息进行更细粒度的建模,提升识别表现,而且能够同时输出音符识别结果。
(四)附图说明
[0036]
图1为单音符识别模型和和弦识别模型训练流程图;
[0037]
图2为单音节识别模型结构示意图;
[0038]
图3为和弦识别流程图;
[0039]
图4为和弦识别流程说明图;
[0040]
图5为单音节识别模型结构实施例示意图;
[0041]
图6为和弦识别模型结构实施例示意图。
(五)具体实施方式
[0042]
下面将结合本发明的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]
本发明提出一种两阶段和弦识别方法,即第一阶段利用单音节识别模型输出音频段的单音节识别分数,并在第二阶段将一定长度的单音节识别分数进行拼接,送入到另一个训练好的和弦识别模型中,从而得到音频段的和弦识别结果,本发明具体的实施步骤如下:
[0044]
步骤一,准备用于训练单音节识别模型的钢琴音符训练数据,在没有弹奏音符的时候音节识别模型会正确输出当前时刻为非音符的标签,使得钢琴音的单音节识别模型在噪声下具有良好的鲁棒性,还需要对干净的钢琴音符训练数据进行数据增强。
[0045]
步骤二,对训练集的音频信号进行特征提取,在完成预加重、分帧、加窗、离散傅里叶变换、梅尔三角滤波器滤波后,每一帧的音频信号提取到40维的fbank特征。
[0046]
步骤三,构建音符标签,音符识别模型是典型的有监督学习,因此正确的音符标签对于模型训练的效果至关重要,为了获取训练集每一帧正确的音符标签,采用kaldi中的force-align工具,根据所有训练音频的文本文件,对音频的每一帧进行对齐,最后得到每一帧语音的分类标签,此处为了说明,假设使用到的单音符标签包含88个琴键标签和一个非音符标签,共计89个。
[0047]
步骤四,构建单音符识别模型,由于单音符识别任务中需要识别的对象是带有明显时序关系的音频段特征,因此这里考虑使用能够对这种时序关系进行建模的循环神经网络作为单音符识别网络的主干,gru网络是循环神经网络rnn的变种,在更好的保留了之前时刻信息的基础上,具有更少的计算复杂度,每一层的gru网络之间进行批归一化操作保证每一层输入的分布合理,加快模型收敛,在最后一层gru网络的最后一个gru单元与一个全连接层相连接,在经过全连接层后,经过softmax操作后输出最后的分类结果,之所以只使用最后一个gru单元与全连接层相连,是因为最后一个gru单元不仅包含了同层的全部gru单元的信息,而且可以节省计算量。
[0048]
步骤五,迭代训练单音符模型,将训练音频片段提取的音频特征,进行前后七帧的拼接后作为输入送入到单音符识别的模型中进行训练,其中,fc1层的输出结果再经过softmax操作后,与输入音频特征的分类标签之间进行相似度计算,得到损失函数的loss,采用的损失函数是多分类问题最常用的交叉熵损失函数ce,具体计算公式如下:
[0049][0050]
利用损失函数loss对语音唤醒模型的网络参数利用梯度下降法,进行不断迭代更新,直到模型达到预期的收敛效果,最终训练步数和是否收敛的判定由训练人员根据训练数据的复杂程度,经过多次尝试后自行判定。
[0051]
步骤六,准备第二阶段和弦识别模型的训练数据,与一般的以音频段频域特征作为输入特征来进行和弦识别的思路不同,本发明使用的和弦识别模型的输入来自于第一阶段单音符识别模型的输出分数,这也是本发明与常规的和弦识别思路最大的不同,这样做
不仅可以充分利用第一阶段单音符识别模型输出信息,而且可以手动选择困难和弦样本,而不影响单音符模型的结果,此处参考常见和弦识别系统的做法,将和弦标签划为22个和弦标签和一个非和弦标签,共计23个标签。
[0052]
步骤七,训练第二阶段和弦识别模型,和弦识别模型可以参照一阶段的单音节识别模型,设计为带有时序建模能力的,以gru为模型主干的网络。
[0053]
综上所述,该基于深度学习的两阶段琴音和弦识别方法,相较于传统单音节识别模型并手动解码为和弦的方法来说,本发明采取神经网络对单音节输出分数对应的和弦类型进行建模,能够更准确的拟合数据,取得更准确的和弦识别结果;与直接对和弦特征进行建模的方式相比,本发明剔除的方法不但能够同时输出当前帧单音节和和弦识别的结果,而且和弦识别模型充分利用了单音节层次的信息,因此能够取得更准确的效果;本发明提出的和弦识别模型能够控制难易样本的比例,使得和弦识别效果进一步的提升。
[0054]
此外,本发明在阐述过程时以钢琴为例,但是并不仅限于钢琴,本发明提出的方法也容易推广到吉他,木笛等乐器上去。
[0055]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献