首页 > 乐器声学 专利正文
一种基于音频识别被弹奏琴键的方法及系统与流程

时间:2022-02-24 阅读: 作者:专利查询

一种基于音频识别被弹奏琴键的方法及系统与流程

1.本发明涉及智能钢琴领域,具体来说,涉及钢琴调音以及弹奏评价领域,更具体地说,涉及一种基于音频识别被弹奏琴键的方法及系统。


背景技术:

2.目前对钢琴调音的好坏评价以及钢琴弹奏的评价大多基于个人经验进行,例如,有调音师对钢琴完成调较后,用户通过弹奏每一个琴键,并根据个人经验来判断调音效果,由于个人经验参差不齐,对调音效果的判断也参差不齐。在钢琴教学以及钢琴学习过程中经常要对弹奏者的钢琴弹奏进行评价,现有技术下在钢琴教学或者演奏中对钢琴弹奏的评价,大多基于人工听,通过听弹奏者弹奏的音符来判断弹奏的好坏,无法准确定位好坏的等级和具体指标,在这个过程中,如果经验不足或者调音效果不好,会直接影响弹奏音符的判断。
3.具体来说,当钢琴的按键被弹奏时,琴锤撞击相应的一根或多根琴弦,此时琴弦震动可以简单的建模为刚性材料的受迫振动,此敲击可以激发出弦的不同频率的波,该频率具有明显的比例关系,例如弹奏标准钢琴的a4按键,会激发出诸如440hz、880hz、1320hz、1760hz
……
的波。该震动频率的最小值定义为该琴键的基频。比基频高整数倍的震动称为该基频的泛音或谐波,多个谐波组成谐波列或称为泛音列,这样就形成了明显的谐波结构。钢琴的每个琴键都有属于自己的基频和谐波结构。但是能产生整数倍谐波的前提是琴弦被建模为简单的刚性震动,而实际上琴弦是由两端被固定在琴腔共振板上粗细不同的金属组成。因为两端的固定,实际振动的弦长被缩短,导致谐波频率和基频的频率不满足严格整数倍关系,使得不同琴键的谐波会有重叠,且由于钢琴调音没有严格的定性和定量基准,导致对弹奏进行评价时基于音符对被弹奏琴键的估计会不准确。这会使得音符识别过程中八度错误较多,例如,需要弹奏a4琴键,但是同时弹奏a3和a5琴键,由于谐波的重叠,被判断为仅弹奏了a4按键。
4.此外,现有技术下,对弹奏音符的识别过程中缺乏对噪声的处理,使得噪声影响大,音符识别准确度不高。现有技术下也没有对每架钢琴建模,也没有对模型进行实时校准,使得钢琴的频谱参数不够精准。
5.此外,依靠人工进行调音评价以及弹奏评价费时费力,无法智能的获取钢琴调音情况,会因操作者的不同会出现很大的偏差,此外,现有技术下也没有能够准确识别弹奏曲目节拍的方法,尤其是弹奏曲库中没有的曲目时,无法获得准确的节拍,不利于智能钢琴教学的应用。


技术实现要素:

6.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种能够根据弹奏的音频智能识别弹奏琴键的方法及系统,以及计算弹奏节拍和评价弹奏的方法。
7.根据本发明的第一方面,提供一种基于音频识别被弹奏琴键的方法,所述方法包
括获取弹奏钢琴的音频并对所述音频进行分帧处理以得到多个分帧信号,以及对每一个分帧信号执行如下步骤:t1、对当前分帧信号进行频域分析,获得该分帧信号的频谱;t2、对步骤t1获得的频谱进行噪声水平估计以获得多个乐音谱峰形成乐音谱峰集合;t3、根据噪声水平估计获得的乐音谱峰集合、所有琴键频谱参数集构成的谐波频率查找可能被弹奏的第一候选琴键集合,其中第一候选琴键集合是谐波频率与所述乐音谱峰集合中的一个或多个乐音谱峰相同的琴键的集合。
8.优选的,所述方法还包括对每一个分帧信号执行如下步骤:t4、取该分帧信号对应时间段采用摄像头捕获的手和琴键图像获取手的位置下方的琴键集合与第一候选琴键集合的交集,得到第二候选琴键集合;t5、基于第二候选琴键集合中每个琴键的谐波列,以第二候选琴键集合中谐波与所述乐音谱峰集合中的一个或多个乐音谱峰相同的琴键构成第三候选琴键集合;t6、对第三候选琴键集合进行筛选,留下高八度按键或者低八度按键被弹奏的琴键以形成第四候选琴键集合。
9.优选的,在本发明的一些实施例中,所述方法还包括:t7、将第四候选琴键集合作为单个分帧信号的多基频估计结果,采用hmm和维特比方法对其进行音符事件的帧间平滑,获得该分帧信号对应的被弹奏琴键的综合估计结果。通过考虑和弦在时间上的连续性,通过音符事件的多基频估计,使估计结果更接近于听感,提高多基频估计的准确度。
10.在本发明的一些实施例中,对获取的音频依次进行降噪、语音分离处理后进行分帧处理。根据本发明的一个实施例,采用多麦克风降噪技术或多麦克风阵列波束形成技术对音频进行降噪处理以消除音频中的环境噪声,以及采用多麦克风降噪技术或多麦克风阵列波束形成技术对音频进行语音分离以分离音频中的人物语音,优选的,采用多麦克风降噪技术消除环境噪音,采用多麦克风阵列波束形成技术进行语音分离。其中,根据本发明的一个实施例,多麦克风降噪技术通过如下步骤实现:将多个麦克风分别指向需要拾音的方向,包括钢琴共振腔和环境噪声方向;采用谱减法将采集到的乐音含量高的声音频谱减去环境噪声含量高的声音频谱以消除环境噪声。根据本发明的一个实施例,采用多麦克风阵列波束形成技术时通过如下方式布置采集音频的麦克风:以钢琴键盘的俯视图所在的长方形平面的中心点以及长方形外的两个最远声源点为三角形顶点,将多个麦克风布置在以平行于两个最远声源点连线且穿过三角形中心的直线为切线、以三角形中心为切点、包围长方形平面中心点或两个最远声源点的弧线上。
11.在发明的一些实施例中,采用离线校准或在线校准的方法获取或更新琴键频谱参数集,所述琴键频谱参数集中包含每一个琴键对应的频谱参数。其中,每一个琴键频谱参数用于表示该琴键的谐波结构:
12.f
k
=k*(a*f0)*sqrt(1+b*k^2)
13.其中,a、b是琴键频谱参数,f
k
是该琴键的k次谐波,f0是该琴键的基频。优选的,所述离线校准方法包括如下步骤:l1、按照要求的力度手动弹奏琴键,并获取弹奏该琴键的音频;l2、采用静音抑制技术分析步骤l1中的音频,获得弹奏琴键的初始时间段和结束时间段;l3、根据步骤l2获得的初始时间段和结束时间段对初始时间段和结束时间段中间的时域数据做频域分析获得琴键声音的频谱谐波结构,频谱上不同的峰值对应该琴键的不同次谐波,采用线性拟合技术并结合f
k
=k*(a*f0)*sqrt(1+b*k^2)计算该琴键的频谱参数。所述在线校准方法包括如下步骤:在钢琴使用过程中多次采集琴键弹奏音频,并对其进行频
域分析获得琴键的真实频谱谐波,基于谐波结构f
k
=k*(a*f0)*sqrt(1+b*k∧2)计算该琴键的频谱参数,比较多次采集的音频中计算的参数是否一致,如果一致则更新该琴键的频谱参数。
14.根据本发明的第二方面,提供一种基于音频计算弹奏节拍的方法,所述方法包括如下步骤:a1、采用如本发明第一方面所述的方法获取当前分帧信号被弹奏琴键集合;a2、基于被弹奏琴键集合判断每个琴键被弹奏的起始时间和结束时间并以此计算节拍。
15.根据本发明的第三方面,提供一种基于音频进行弹奏评价的方法,所述方法包括如下步骤:p1、采用如本发明第一方面所述的方法获取当前分帧信号被弹奏琴键集合;p2、基于被弹奏琴键集合判断每个琴键被弹奏的起始时间和结束时间并以此计算节拍;以及基于被弹奏琴键集合和当前帧的乐音谱峰,计算被弹奏琴键集合中每个琴键谐波列的功率值和作为该琴键的强度值;p3、按照预设的评价指标,评价弹奏的音高、节拍、节奏、力度踏板、弹奏感情信息。
16.根据本发明的第四方面,提供一种基于音频识别被弹奏琴键的系统,所述系统包括:声音采集模块,用于采集弹奏钢琴的音频;计算机存储管理模块,用于存储采集到的音频数据并执行如下操作:b1、对分帧信号进行频域分析,获得信号的频谱;b2、对步骤b1获得的频谱进行噪声水平估计以划分出频谱中的多个乐音谱峰形成乐音谱峰集合;b3、根据乐音谱峰集合、所有琴键频谱参数集构成的谐波频率综合查找可能被弹奏的第一候选琴键集合,其中第一候选琴键集合是谐波与所述乐音谱峰集合中的一个或多个乐音谱峰相同的琴键的集合。
17.在本发明的一些实施例中,所述计算机存储管理模块还被配置为执行如下操作:b4、根据当前分帧对应时间段采用摄像头捕获的手和琴键图像获取的手的位置下方的琴键集合对第一候选琴键集合进行精简获得第二候选琴键集合,其中,第二琴键集合是当前帧对应时间段的手的位置下方的琴键集合与第一候选琴键集合的交集;b5、基于第二候选琴键集合中每个琴键的谐波列,以第二琴键集合中谐波与所述乐音谱峰集合中的一个或多个乐音谱峰相同的琴键构成第三候选琴键集合;b6、对第三候选琴键集合进行筛选,留下高八度按键或者低八度按键被弹奏的琴键以形成第四候选琴键集合。
18.优选的,所述计算机存储管理模块还被配置为执行如下操作:b7、将第四候选琴键集合作为单个分帧信号的多基频估计结果,采用hmm和维特比方法对其进行音符事件的帧间平滑,获得该分帧信号对应的被弹奏琴键的综合估计结果。
19.在本发明的一些实施例中,所述系统还包括:噪声抑制模块,用于采用多麦克风降噪技术对音频进行降噪处理以消除音频中的环境噪声;声源分离模块,用于采用多麦克风阵列波束形成技术对音频进行语音分离以分离音频中的人物语音。
20.在本发明的一些实施例中,所述系统还包括:频谱校准模块,用于采用离线校准或在线校准的方法获取或更新琴键频谱参数集。
21.在本发明的一些实施例中,所述系统还包括:弹奏评价模块,用于按照预设的评价指标评价弹奏的音高、节拍、节奏、力度踏板、弹奏感情信息。
22.在本发明的一些实施例中,所述系统还包括:人机交互模块,用于实现用户和系统的交互。
23.与现有技术相比,本发明的优点在于:本发明将环境噪声、人物语音从乐音中分离
出来,有效降低了噪声和语音对多基频估计和强度估计准确度的影响;多琴键频谱同时校准,用户感知度低,及时捕获钢琴声音特征的变化;校准后的参数可以综合评价用户钢琴的调音情况;适用于传统钢琴,不需要对每个琴键安装诸如压力传感器、距离传感器的硬件,使得传统钢琴也能成为智能钢琴;。可以由用户自由弹奏而不局限于曲库中已有的曲子。
附图说明
24.以下参照附图对本发明实施例作进一步说明,其中:
25.图1为根据本发明实施例的多麦克风阵列波束形成技术的麦克风布置示意图。
具体实施方式
26.为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
27.首先介绍本技术的难点,本发明基于音频识别被弹奏琴键的核心在于多基频估计任务,估计出精确的基频频率值和个数以及起始时间段,从而准确的估计单帧中被弹奏的具体琴键。要实现这个目的,具有很大的难点,具体表现在以下几个方面:
28.·
分辨率限制:音频数据的时频分析受时间分辨率和频率分辨率的限制。具体表现为频域分析必须要加载一定时间段的数据,根据采样频率和采样长度,频域分析结果是频率离散的谱线,谱线间隔恒定(cqt和vqt除外)。而时间上变化很快的音符,比如32分音符,持续时间极短,它可能被某一段频域分析数据捕获,也可能被拆分到相邻的两个数据段,这要导致对该短时音符的分析带来困难。
29.·
谐波重叠:对于实际构建的乐谱而言,基频整数比值越小,音乐听上去越和谐悦耳。但是整数比值越小,琴键彼此之间的谐波共享相同谱线的现象越严重。比如标准钢琴a4琴键被弹奏时理论上将会产生440hz、880hz、1320hz、1760hz
……
的泛音列,若同时按下的还有a5琴键,它将产生880hz、1760hz、3520hz
……
的泛音列,则a4的偶次谐波将与a5的各泛音列重合。乐器的调音不严格一致,以及环境中温度、湿度等因素的影响会造成的泛音列频率偏差,因此实际上很难出现精确的谐波重叠现象,但是由于频率分辨率的限制,很难辨别这些谐波频率差。由上述分析可知,谐波重叠问题是多基频估计的一个难点。
30.·
拍:多琴弦琴键的每根琴弦的频率不可能完全一致,当弹奏时,每个琴弦根据各自的张紧程度激发出各自琴弦的基频及其泛音列,频率相差较少的两列波会产生“拍”的现象,表现为两列波合成之后的幅值被调制:合成后的峰值为两列波幅值的和,谷值为两列波的幅值差的绝对值,周期为两列波频率差值的绝对值,当频率差值较低时,比如10hz以内,听感上有“哇~呜~”的感觉,声音不稳定,频域分析中表现为对应的频谱峰值上下波动。当然,不同琴键的不同谐波列间也存在相互影响,并形成“拍”的现象,该现象在钢琴中广泛存在,影响琴键识别的准确性。
31.·
谐波丢失:一个琴键的谐波包括基频和它的高次谐波,谐波丢失主要包括基频丢失和高次谐波丢失,二者产生的原因不同。其中,基频丢失是指某一琴键被弹奏时,对采集声音进行频域分析,分析的频谱中不存在基频成分或者基频成分远远小于它的谐波成分。产生的原因是低频信号的共振性不好,以至于其振动幅度小或能量很低。所以基频丢失
主要发生在低音区的音符中,影响低音音符识别的准确度。而大部分高频信号可以通过乐器的共振腔有效地增强震动幅度,所以中高音符没有基频丢失现象。大部分算法是无法识别或感知丢失的基频。谐波丢失是指频谱中的高次谐波成分占比很小,当琴锤以一定的速度或能量撞击高音琴弦时,琴弦发生受迫振动,更高频的振动模态衰减更快或难以被激发,该现象影响着高音按键识别的准确度。
32.·
语音干扰:语音中的元音发音与钢琴琴键的泛音列结构一致,影响多基频估计的准确度。
33.·
噪声干扰:噪声和语音中的辅音发音会影响某些频段或者全频域的频率分析结果,表现为抬高该频段内所有频谱值,淹没本该有的峰值,大大影响多基频估计的准确度。
34.·
需要在一定程度上平衡计算复杂度与准确度之间的矛盾。
35.由此,本发明从上述各个方面的问题出发,提供一种基于音频识别被弹奏琴键的方法。
36.根据本发明的一个实施例,提供一种基于音频识别被弹奏琴键的方法,包括:步骤1

10,下面详细说明每个步骤。
37.在步骤1中,采集弹奏钢琴的音频。根据本发明的一个实施例,通过声音采集模块采集钢琴被弹奏时发出的乐音音频并将其存储在计算机存储管理模块中,声音采集模块可以是麦克风或者其他可采集声音的设备,优选麦克风,因为麦克风只需要设置在钢琴周边即可,无需安装在钢琴琴键内部,而声音传感器需要安装在钢琴琴键内部时采集效果较好。
38.在步骤2中,将采集到的音频进行降噪和语音分离并进行分帧,得到的分帧信号作为后续处理的一个单元,分帧的目的在于在当前帧时间段内认为音频信号是平稳的,有利于后续处理。
39.降噪的目的在于去除乐音音频中的环境噪声,语音分离的目的在于分离乐音音频中的人物语音,降低人物语音对乐音频谱的影响。
40.根据本发明的一个实施例,通过噪声抑制模块来去除环境噪声。众所周知,在不同的环境下,比如嘈杂的商场、室外、琴房等,噪声会混杂在钢琴的乐音中被麦克风一同采集到音频中,采集到的噪声会严重影响后续诸如琴键识别和弹奏评价的正确性和准确性,也影响着人机交互模块中回放效果,同样地,声音采集模块的硬件也会产生底噪。需要一并滤除。为了尽可能降低上述环境和硬件噪声对乐音音频处理的影响,需要对声音采集的前端进行声学结构的优化(例如回放喇叭的共振腔与麦克风隔离等)。本发明利用多麦克风降噪技术消除环境中的大部分噪声,该环节主要消除的是环境噪声。多麦克风降噪技术的原理可以简单理解为:将多个麦克风分别指向需要拾音的方向(钢琴共振腔)和噪声的方向(远处),这样多个麦克风都就会采集到乐音和噪音,但是它们的混合比例不同。例如指向钢琴的麦克风采集到的乐音成分比指向远处的乐音成分含量高,指向远处的麦克风采集到的噪声成分比指向钢琴的麦克风采集到的噪声成分高。这样就可以用谱减法将乐音含量高的声音减去噪声含量高的声音,从而将噪声从采集到的声音中一定程度上消除。
41.根据本发明的一个实施例,通过声源分离模块来分离人物语音。通过上述描述可知,乐音音频中除了环境噪声的影响外,在本发明的应用场景中,另外一个比较重要的干扰就是人物语音,语音(主要是元音音素)的频域结构特征与钢琴发出的乐音的特征比较相似,都具有明显的谐波结构,使得人物语音同样会影响到后续琴键识别和弹奏评价的正确
性和准确性。本发明中对语音和乐音的分离使用麦克风阵列波束形成技术。该技术应用在声源信号的空间域的选择上,对传感器接收到的数据进行加权处理,使其形成一定的波束形状,该波束的作用就是允许感兴趣信号方向的信息通过,对其形成增益,同时抑制掉不感兴趣方向的信号。前一个实施例中,噪声抑制模块中描述的降噪算法难以将人物语音和乐音分离,由于乐音和人物语音的声源位置不一致,所以可以利用声源空间差异性对语音和乐音进行分离。该方案的实现对麦克风的安装位置有要求,要求描述如下:如图1所示,平面上有一个长方形,该长方形代表钢琴的俯视图,钢琴的发声共鸣腔在长方体的内部,长方形周围有若干点声源,代表着若干位说话的人,例如常见的是两位坐在钢琴前面的老师和学生。以长方形中心a和长方形外的两个点声源bc为三角形顶点,绘制平行于边bc的直线l,令直线l穿过三角形的中心o,绘制以o点为切点、以直线l为切线的弧线m,弧线m的方向可以选择包围a点的方向也可以选择包围bc点的方向。多个麦克风的安装方位或位置应该尽量避免都在直线l上,而应该尽量在弧线m上,且弧线m的弧度越大越好,这样也可以保证多个麦克风的拾音差异最大化,这样可以保证算法空间域估计的准确性和鲁棒性。如果所有的麦克风都安装在直线l上或附近,那么对于多个麦克风而言,难以区分哪些声音是由直线l下方(a点代表该方向)方向发出,哪些声音是由直线l上方(b点和c点代表该方向)方向发出(两侧发声相对于l是对称的)。
42.经过上述实施例的声音采集、噪声抑制、语音分离流程后获得的就是比较纯净的乐音信号,基本满足后续处理要求。
43.在步骤3中,对分帧后的每一帧音频信号进行频域分析,获得单帧音频信号的频谱,频谱中有多个谱峰。
44.在步骤4中,对步骤3获得的频谱进行噪声水平估计,并在步骤3获得的频谱中查找邻域内的高于噪声水平估计的极值以获得多个乐音谱峰形成乐音谱峰集合。根据本发明的一个实施例,采用自适应噪声水平估计方法判断单帧音频信号中的子带频域信号的统计量是否满足瑞利分布。通常情况下,被乐音激起的谱峰数量要远小于噪声信号的谱峰数量。如果子带频域信号的统计量满足瑞利分布,则用该分布的q分位数代表当前单帧(子区间)的噪声水平,根据本发明的一个实施例,可以选择97.5%或99%的q分位数,即单帧子带内近似认为97.5%或99%的谱峰是噪声,剩下的是乐音。在频谱中查找极值,高于噪声水平估计的极值就是乐音谱峰,根据本发明的一个实施例,通过如下步骤查找极值:第一,查找频谱中的所有局部极值,;第二,筛选出高于噪声水平估计的局部极值;第三,进一步筛选出高于噪声水平估计的局部极值中满足琴弦震动频率的局部极值,最终筛选出的局部极值即为乐音谱峰。
45.在步骤5中,根据前面步骤4估计的乐音谱峰集合、琴键频谱校准参数集p构成的谐波频率综合查找可能被弹奏的第一候选琴键集合s1。查找的标准是琴键具有与当前单帧信号中的谱峰一致的谐波,则最后获得的第一候选琴键集合是谐波与一个或多个乐音谱峰相同的琴键的集合。
46.所述琴键频谱校准参数集p是经过校准之后的所有琴键的频谱参数的集合,琴键的频谱参数用于表示琴键的谐波结构。根据本发明的一个实施例,采用频谱校准模块实现琴键频谱参数的校准。该模块分为两种应用场景,一种是离线校准,一种是在线校准。所实现的功能是一样的,只是应用场景不一样。
47.首先说明一下琴键频谱参数需要校准的原因:当钢琴的按键被弹奏时,琴锤撞击相应的一根或多跟琴弦,此时琴弦震动可以简单的建模为刚性材料的受迫震动。此撞击可以激发出弦的不同频率的波。该频率具有明显的比例关系,例如弹奏标准钢琴的a4按键,会激发出诸如440hz、880hz、1320hz、1760hz
……
的波,该震动频率的最小值定义为该琴键的基频。比基频高整数倍的震动称为该基频的泛音或谐波,多个谐波组成谐波列或称为泛音列,这样就形成了明显的谐波结构。钢琴的每个琴键都有属于自己的基频和谐波结构,琴键识别的工作前提就是不同琴键对应不同的谐波结构。但是能产生整数倍谐波的前提是琴弦被建模为简单的刚性震动,而实际上琴弦是由两端被固定在琴腔共振板上粗细不同的金属组成。因为两端的固定,实际振动的弦长被缩短,导致谐波频率和基频的频率不满足严格整数倍关系。假设某一琴键的基频为f0,那么它的第k次谐波频率可以近似用非线性函数f
k
=k*f0*sqrt(1+b*k^2)描述,其中k表示谐波编号,b表明非整数倍关系,也称为失谐率。不同的钢琴经过不同的调音师或者一台调好音的钢琴在不同的环境下或者随着时间的推移,每个按键的每根琴弦的基频会发生变化,相应的谐波列也会发生偏移,那么上述公式中的f0也是一个变化的量。假设某一琴键的理论基频是f0,则f
k
=k*(a*f0)*sqrt(1+b*k^2),其中参数a描述的就是基频偏移的情况。现在对于钢琴某一特定的琴键,用两个参数描述该琴键产生的谐波结构,每个琴键的泛音列都有两个参数描述,所有琴键对应的a和b参数形成参数集,频谱校准主要就是根据每台钢琴发出的乐音估计出该钢琴的上述参数集。
48.校准的目的:若要尽可能准确地在和弦中分析出哪些琴键被弹奏,和各自弹奏的强度,弹奏的节奏等信息,需要尽可能的获取钢琴声音的特征,也就是上述的参数集。
49.在校准前本发明会在计算机存储管理模块中存储一组适合大部分钢琴的通用参数集合,该参数集并未针对某一架钢琴,而是基本符合大部分钢琴的通用参数。下面详细说明离线校准和在线校准的实现过程。
50.离线校准:应用人机交互界面进入离线校准程序。该程序让用户在安静的环境中单独地、按顺序地弹奏钢琴所有的88个琴键,声音采集模块的麦克风记录所有采集到的声音。该离线校准所需要的数据只用一个麦克风的一路信号即可,也可以对多路信号做加权平均处理。假设最终采集到的一路信号由数列x表示,理想化地,例如麦克风采样周期为48khz,用户每个按键持续1秒,每个按键的间隔为一秒,则数组x的长度为48000*(88*2-1)=8400000,采集175秒数据。实际上,用户的弹奏强度,弹奏间隔都是未知的,这就需要定位真正弹奏一个琴键时发出的声音。实现该定位的一方法称为语音活动检测(vad),又称为静音抑制,主要用于从声音信号流里识别和消除长时间的静音期,以达到在不降低业务质量的情况下节省话路资源的作用。静音抑制可以节省宝贵的带宽资源,可以有利于减少用户感觉到的端到端的时延。本发明用vad检测弹奏某个琴键发出声音的开始时间段和结束时间段,则对应的中间时间就是某个按键的正常弹奏时间。例如,进入离线校准程序,人机交互界面让用户以中等力度(中等或偏上力度主要是为了提高信噪比)弹奏a0琴键,声音采集同步进行,将采集到的声音数据传递给vad算法,检测出弹奏的初始时间段和结束时间段,对两时间段中间的时域数据做频域分析,频域分析会显示出琴键声音的谐波结构,频谱上不同的峰值对应不同次谐波。将不同的峰值频率结合公式f
k
=k*(a*f0)*sqrt(1+b*k^2)利用线性拟合可以求解出参数a和b,当a和b在合理范围时,保存参数作为琴键a0的频谱参数。人机交互界面提示用户继续以中等强度弹奏b0琴键,重复上述流程直至所有琴键都校准完
毕,否则重新弹奏不符合要求的琴键。但是当钢琴长时间没有使用或者被重新调音后,校准过的参数将不适用于当前钢琴,需要重新运行离线校准以获得最新的钢琴参数。
51.在线校准:该校准与离线校准的主要区别是:离线校准需要用户按照人机交互界面的指示一步一步进行校准操作,而在线校准不需要用户进行该操作,用户对校准程序无感觉。随着用户的正常使用,模块会自动监听采集到的音频,利用琴键识别模块判断该时间段有一个或者几个琴键被弹奏。然后对采集到的数据进行频域分析(与离线校准的频域分析相同)。对于从未校准过的琴键,依据出厂的参数集和琴键识别模块判断出哪些琴键被弹奏,对于曾经校准过的琴键,使用校准过的参数。假设每个音符(编号为r,r∈[1,88])的频谱由前nr个谐波列组成,谐波列的编号为n,n∈[1,15](例如只研究前15次谐波列,nr=15)。每个谐波的幅值和频率为anr和fnr,所以每个音符的谐波组成可以表示为pr={anr,fnr|n∈[1,15],r∈[1,88]},整个琴键的参数集就可以表示为p={pr|r∈[1,88]}。某一个音符真实谐波分布与公式f
k
=k*(a*f0)*sqrt(1+b*k^2)的分布的差异可以量化地表示为wr,wr为r音符前nr次谐波幅值与一个与频率有关的函数的乘积,这个与频率有关的函数可以表示为频域分析中使用的窗函数的傅里叶变换的幅值的主瓣与频率差的积。这样做的好处是可以削弱频域分析中频率分辨率非连续的影响。根据非负矩阵分解,将上述所有被弹奏琴键的wr的和w迭代至最小后,每个被弹奏的琴键的参数ar和br被求解出。利用解析出的参数构建当前时间段被弹奏琴键的所有谐波频率,将频谱对应频率的幅值置零(或进行频域陷波滤波),然后重新计算残余频域的能量或统计频谱系数是否基本满足瑞利分布。如果残余能量小于一定范围或者频谱系数基本满足瑞利分布则表示当前计算的参数ar和br有很高的可信度,保存参数。那么随着用户使用,被弹奏过的琴键的参数将被校准。这样就渐渐地完成整个琴键的校准环节。该环节为了保证校准参数稳定收敛且正确,将每次校准的参数暂时保存,比较相同琴键多次校准的参数,如果多次校准的参数一致,则表示校准参数正确,更新参数集合p,供琴键识别模快使用。在线校准的好处有:即使长时间不使用或者重新调音过的钢琴并不需要用户重新进行繁琐的离线校准,只需用户使用一段时间后,常被弹奏的琴键会被很快的校准,随着钢琴的琴弦的变化和用户的持续使用,在线校准可以默默地、及时地捕获变化并更正上述变化对音频处理系统的影响。在线校准可以同时校准多个按键,效率高。此外,用户钢琴调音状态可以用上述校准后的参数集评价。
[0052]
在步骤6中,对第一候选琴键集合s1进行精简,根据本发明的一个实施例,采用摄像头捕获的手和琴键的位置,计算单帧音频信号对应时间段的手的位置下方的琴键集合sh,设定第二候选琴键集合s2为sh与s1的交集。根据本发明的另一个实施例,采用上一帧被弹奏琴键的综合评估结果对应的被弹奏琴键位置sr估计在当前帧时间段双手所在区域的琴键集合ss,设定第二候选琴键集合s2为ss与s1的交集。
[0053]
在步骤7中,根据第二候选琴键集合s2以及所有被认定为乐音谱峰的幅值,缩小候选琴键集合的范围。具体来说,某一琴键被弹奏,它所激发的所有谐波列的谱峰幅值应该呈现一种规律的变化,比如谐波谱峰连线(谐波包络线)满足多项式函数、指数衰减函数或某一概率密度函数。根据上述假设,重新分配每一个峰值更可能属于哪些琴键的谐波,然后形成候第三候选琴键集合s3,即以第二琴键集合s2中谐波与乐音谱峰集合中一个或多个乐音谱峰相同的琴键构成第三候选琴键集合。
[0054]
在步骤8中,针对第三候选琴键集合s3和乐音频谱峰值,检查第三候选琴键集合s3
中每个琴键高低八度按键(其中,高低八度按键也在第三候选琴键集合s3中)的谐波在频谱峰值中的占比,如果占比高且每次谐波成分占比都高,则证明该按键的高八度按键或低八度的按键被弹奏。否则就说明该琴键没有没弹奏,被误判,应从s3中剔除,最终形成第四候选琴键集合s4。
[0055]
在步骤9中,将第四候选琴键集合s4作为单个分帧信号的多基频估计的结果,然后利用hmm和维特比算法进行音符事件的帧间平滑,将平滑后的结果作为该帧的综合估计结果sr。进行音符事件的帧间平滑的目的时为了对抗声音衰减带来的识别错误,例如,假设用户在第1秒按a4琴键,持续了5秒后松开,在这四秒的过程中,声音会越来越衰减,加上“拍”现象后,可能输出的识别结果是1~3秒是按下a4琴键的,3~3.5秒是没有按下琴键的,3.5~5秒是按下琴键的(按下和松开称为事件)。如果每一帧是10毫秒,那么就相当于100~300帧和351~500帧是按下,301~350帧是松开状态,这和实际情况不符,音符事件的帧间平滑就是指把这301~350帧也修改为按下的状态。根据本发明的一个实施例,也可采用时域滤波器对单个分帧信号的多基频估计结果进行处理以得到综合估计结果。
[0056]
在步骤10中,利用单帧对应的综合估计结果sr和频谱峰值,计算sr集合中每个琴键谐波列的功率和作为该琴键的强度值,用于进行弹奏评价,其中,功率和是幅值平方的和;以及根据当前帧的综合估计结果sr以及当前帧的采集时间段,判断出每一个琴键弹奏的起始时间和结束时间,计算每个音符的持续时间,计算出节拍。
[0057]
根据本发明的一个实施例,本发明通过弹奏评价模块对弹奏进行评价。按照评价的等级(预先根据需要设定),评价的指标包括但不限于音高、节拍、节奏、力度、踏板、弹奏感情等信息。下面详细说明每一个评价指标。
[0058]
音高:当用户按照某一特定曲谱弹奏时,对比已知曲谱进行判断,判断结果可以实时显示在曲谱上,也可以绘制成曲线表示,也可以在弹奏后生成报表,统计出总体正确率,小节正确率等多个统计指标,统计出熟练区间(正确率持续高)和不熟练区间(正确率持续不高)。如果用户是自由发挥,则不对音高进行统计。考虑到用户可能有较多的音高不正确,在和已知曲谱对比时利用动态时间规整算法(dtw)对弹奏的音准和曲谱音准进行动态比对,得出分段或整体的正确率的统计值。
[0059]
节拍:节拍是指乐谱中每一小节的音符总长度,如一首歌曲是4/4拍,说明歌曲以4分音符为一拍,每一小节有四个4分音符。对于节拍的判断,主要是音符初始时间段的判断,相邻音符初始时间段的差即为当前拍子的表现。
[0060]
节奏:表述的是在乐曲层面上长时间的弹奏强度的分布。
[0061]
力度:表现为弹奏的强度,乐谱中的强度有极弱到极强等多种强度。而这些强度没有绝对的评价指标,只有相对的评价,实际应用过程中根据具体应用场景进行设定。
[0062]
踏板:延音踏板和止音踏板的正确使用。
[0063]
弹奏感情:利用音高、节拍、节奏、力度、踏板等信息综合估计出一段时间内乐曲的感情,比如强烈,温柔、激烈、活泼、悲伤等。
[0064]
在步骤11中,根据当前帧的综合估计结果sr以及当前帧的采集时间段,判断出每一个琴键弹奏的起始时间和结束时间,计算每个音符的持续时间,计算出节拍。
[0065]
根据本发明的一个实施例,本发明采用计算机存储管理模块存储所有采集到的音频数据、计算过程的变量、校准参数等,并通过人机交互模块实现离线校准、显示用户弹奏
的评价指标、显示曲谱、声音回放等。
[0066]
本发明的优点在于:将噪声、语音从乐音中分离出来,有效降低了噪声和语音对多基频估计和强度估计准确度的影响;多琴键频谱同时校准,用户感知度低,及时捕获钢琴声音特征的变化;校准后的参数可以综合评价用户钢琴的调音情况;考虑了失谐性,更新琴键谐波参数使得查找谱峰会更准确直接,谐波列功率计算更准确,强度计算更准确;考虑了谐波重叠问题,减少差八度琴键的判断错误;利用强度与谐波列功率关系构建出的强度评价指标,具有普适性,思路清晰,原理简单,计算量小,判断准确度高;根据当前已经估计的按键位置估计手的位置,然后生成候选弹奏区域,该区域是下一时间段优先搜索和重点搜索的区域,可以有效缩小范围,减小计算量,提高计算速度,降低错误率;结合视频信息,可以有效缩小范围,减小计算量,提高计算速度,降低错误率;适用于传统钢琴,不需要对每个琴键安装诸如压力传感器,距离传感器的硬件,使得传统钢琴也能成为智能钢琴;可以由用户自由弹奏而不局限于曲库中已有的曲子。
[0067]
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
[0068]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0069]
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd

rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0070]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。