颤音识别方法及装置与流程

文档序号:11628132研发日期:2017年阅读:658来源:国知局
技术简介:
本专利针对传统音频分析难以识别颤音的问题,提出基于基频数据与周期性音符序列分析的识别方法。通过提取目标音频中标识音符对应的基频数据,划分音符序列分段并计算周期音符距离,以目标周期是否低于阈值判定是否存在颤音,实现了对音频中颤音特征的精准识别。
关键词:颤音识别,基频数据,周期音符距离

本发明涉及互联网技术领域,尤其涉及一种颤音识别方法及装置。



背景技术:

随着终端技术的不断开发和完善,手机、平板电脑等终端设备已经成为了人们生活中不可或缺的一部分,用户可以通过在终端上安装各种应用程序来实现各种应用功能,从而满足用户在日常生活中不同的需求,例如,音乐软件或k歌软件。在现有的音乐软件或者k歌软件中,除了常用的下载或播放音乐文件之外,用户还可以演唱歌曲并将演唱的歌曲进行分享。例如,用户在通过终端录制了自己的清唱作品或者包含有相应的歌曲的背景音乐伴奏的演唱作品之后,可以将相应的作品进行上传,从而使得自己以及其他用户可以进行查看。

在部分歌曲中,因为演唱者(例如原唱)的个人音域、音色以及演唱技巧的原因,使得其在演绎歌曲时在某些段落展示了颤音。对于原唱歌手在演绎歌曲时因为歌曲需要或者个人的演唱技巧展示了颤音特色时,其他用户在演唱该歌曲时,也会去模仿或还原相应的颤音来提高与原唱之间的相似度。在现有的音乐软件或者k歌软件中,对用户所演绎的作品进行评价主要是评价音准,而不会考虑是否还原了歌曲本身的颤音特色;而是否展现出颤音特色还只能通过后台服务人员或者其他用户在试听时人工进行辨识。

也就是说,现有技术中针对歌曲的评价方法或识别方法并不能对颤音进行识别。



技术实现要素:

基于此,为解决现有技术中无法识别出歌曲的演绎作品中是否展示出颤音的技术问题,在本发明实施例中,提供了一种颤音识别方法。

一种颤音识别方法,包括:

获取与目标歌曲对应的目标音频数据,所述目标歌曲包括至少一个标识音符;

提取所述目标音频数据中与所述标识音符对应的音频数据片段,提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列;

按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段,针对每一个预设的周期值,计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离;

确定所述周期音符距离中的最小值,获取与所述最小值对应的周期值作为目标周期;

在所述目标周期小于预设的周期阈值的情况下,将所述目标音频数据判定为颤音音频数据。

可选的,在其中一个实施例中,所述获取与所述第一基频数据对应的第一音符值序列之后,还包括:计算所述第一音符值序列包含的所有音符值的标准差,在所述标准差大于预设的标准差阈值时,执行所述按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段。

可选的,在其中一个实施例中,所述提取所述目标音频数据中与所述标识音符对应的音频数据片段之前,还包括:提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列;获取与所述目标歌曲对应的参考音频数据,提取与所述参考音频数据对一个的参考基频数据,获取与所述参考基频数据对应的参考音符值序列;计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离,在所述音准音符距离小于预设的音准阈值时,执行所述提取所述目标音频数据中与所述标识音符对应的音频数据片段。

可选的,在其中一个实施例中,所述提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列包括:按照预设的第一帧长和预设的第一帧移提取所述音频数据片段的基频数据作为第一基频数据,以生成与所述音频数据片段对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第一基频数据对应的第一音符值序列。

可选的,在其中一个实施例中,所述对所述至少一个基频点中各基频点的基频值进行调整包括:对所述至少一个基频点中的奇异基频点的基频值进行置零处理;对所述各基频点进行中值滤波处理。

可选的,在其中一个实施例中,所述计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离具体为:遍历所述至少两个音符值序列分段;计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离;确定所述计算得到的分段音符距离的最大值,作为与该周期值对应的周期音符距离。

可选的,在其中一个实施例中,所述计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离具体为:计算所述遍历到的音符序列分段与所述后相邻的音符值序列分段中包含的每一个音符值之间的距离值的和/平均值,作为所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离。

可选的,在其中一个实施例中,所述获取与所述第一基频数据对应的第一音符值序列之后还包括:截取所述第一音符值序列中预设区域的音符值子序列作为所述第一音符值序列。

可选的,在其中一个实施例中,所述提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列包括:按照预设的第二帧长和预设的第二帧移提取所述目标音频数据的基频数据作为第二基频数据,以生成与所述目标音频数据对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第二基频数据对应的第二音符值序列;其中,所述第二帧长大于或等于所述第一帧长,所述第二帧移大于所述第一帧移。

可选的,在其中一个实施例中,所述计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离具体为:遍历所述第二音符值序列所包含的第二音符值,在所述参考音符值序列中确定与所述遍历到的第二音符值对应的参考音符值;计算所述遍历到的第二音符值与所述对应的参考音符值之间的音符值差值;统计大于预设的差值阈值的音符值差值数量,计算所述统计的数量与所述第二音符值序列的长度之间的比值,在所述比值小于预设的比值阈值时,判定所述音准音符距离小于预设的音准阈值。

此外,基于此,为解决现有技术中无法识别出歌曲的演绎作品中是否展示出颤音的技术问题,在本发明实施例中,提供了一种颤音识别装置。

一种颤音识别装置,包括:

目标音频数据确定模块,用于获取与目标歌曲对应的目标音频数据,所述目标歌曲包括至少一个标识音符;

音频数据片段处理模块,用于提取所述目标音频数据中与所述标识音符对应的音频数据片段,提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列;

周期音符距离计算模块,用于按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段,针对每一个预设的周期值,计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离;

目标周期确定模块,用于确定所述周期音符距离中的最小值,获取与所述最小值对应的周期值作为目标周期;

颤音判定模块,用于在所述目标周期小于预设的周期阈值的情况下,将所述目标音频数据判定为颤音音频数据。

可选的,在其中一个实施例中,所述装置还包括标准差检测模块,用于计算所述第一音符值序列包含的所有音符值的标准差,在所述标准差大于预设的标准差阈值时,调用所述周期音符距离计算模块。

可选的,在其中一个实施例中,所述装置还包括音准判断模块,用于提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列;获取与所述目标歌曲对应的参考音频数据,提取与所述参考音频数据对一个的参考基频数据,获取与所述参考基频数据对应的参考音符值序列;计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离,在所述音准音符距离小于预设的音准阈值时,调用所述音频数据片段处理模块。

可选的,在其中一个实施例中,所述音频数据片段处理模块还用于按照预设的第一帧长和预设的第一帧移提取所述音频数据片段的基频数据作为第一基频数据,以生成与所述音频数据片段对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第一基频数据对应的第一音符值序列。

可选的,在其中一个实施例中,所述音频数据片段处理模块还用于对所述至少一个基频点中的奇异基频点的基频值进行置零处理;对所述各基频点进行中值滤波处理。

可选的,在其中一个实施例中,所述周期音符距离计算模块还用于遍历所述至少两个音符值序列分段;计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离;确定所述计算得到的分段音符距离的最大值,作为与该周期值对应的周期音符距离。

可选的,在其中一个实施例中,所述周期音符距离计算模块还用于计算所述遍历到的音符序列分段与所述后相邻的音符值序列分段中包含的每一个音符值之间的距离值的和/平均值,作为所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离。

可选的,在其中一个实施例中,所述音频数据片段处理模块还用于截取所述第一音符值序列中预设区域的音符值子序列作为所述第一音符值序列。

可选的,在其中一个实施例中,所述音准判断模块还用于按照预设的第二帧长和预设的第二帧移提取所述目标音频数据的基频数据作为第二基频数据,以生成与所述目标音频数据对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第二基频数据对应的第二音符值序列;其中,所述第二帧长大于或等于所述第一帧长,所述第二帧移大于所述第一帧移。

可选的,在其中一个实施例中,所述音准判断模块还用于遍历所述第二音符值序列所包含的第二音符值,在所述参考音符值序列中确定与所述遍历到的第二音符值对应的参考音符值;计算所述遍历到的第二音符值与所述对应的参考音符值之间的音符值差值;统计大于预设的差值阈值的音符值差值数量,计算所述统计的数量与所述第二音符值序列的长度之间的比值,在所述比值小于预设的比值阈值时,判定所述音准音符距离小于预设的音准阈值。

实施本发明实施例,将具有如下有益效果:

采用了上述颤音识别方法和装置之后,对于包含了被标识为颤音的标识音符的目标歌曲的音频数据,针对与标识音符对应的音频数据片段进行特征分析,获取与音频数据片段对应的基频数据以及音符值序列,然后通过音符值序列是否呈现了周期性的音高的变化来判断用户在演绎标识音符时是否呈现了颤音特色,从而提供了一种呈现出颤音的音频数据的识别方法,提高了音频数据评价的多样性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

其中:

图1为一个实施例中一种midi文件的可视化格式示意图;

图2为一个实施例中一种midi文件的可视化格式示意图;

图3为一个实施例中一种颤音识别方法的流程示意图;

图4为一个实施例中一种颤音识别装置的结构示意图;

图5为一个实施例中运行前述颤音识别方法的计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为解决现有技术中无法识别出歌曲的演绎作品中是否展示出颤音的技术问题,在本发明实施例中,提供了一种颤音识别方法。具体的,该方法的实现可依赖于计算机程序,该计算机程序可运行于基于冯诺依曼体系的计算机系统之上,该计算机程序可以是音乐播放应用、k歌应用等包含了颤音识别功能的音乐应用程序,例如,全民k歌应用,并且,上述计算机程序还可以是单独的音频数据颤音识别的应用程序。该计算机系统可以是运行上述计算机程序的例如智能手机、平板电脑、个人电脑等服务器或终端设备。

本发明实施例适用于任何歌曲,以下仅以一首歌曲(即目标歌曲)作为参考进行详细说明,其中,目标歌曲中包含了至少一个被标识为颤音的音符。例如,在一个可选的实施例中,如图1展示的midi(musicalinstrumentdigitalinterface,乐器数字接口的一种标准值)文件的可视化格式中,可以预先对可展示颤音的音符进行标注,例如,在歌曲的原唱歌手在某一个音符表现出颤音时,在相应的midi文件的每一个音符对应的数据中,添加一个参数用来标注原唱各种是否在对应的音符展示了颤音。例如,在图2所示的midi文件的可视化格式中,编号a所示的区域即标识了对应的音符是否被标识为颤音,并且用0标识没有颤音,1标识有颤音。从图2中可以知道,在图2展示的8个音符中,编号b所示的区域所对应的音符被标识为颤音,而其他音符并没有被标识为颤音。

如图3所示,上述颤音识别方法至少包括如下步骤s102-s110:

步骤s102:获取与目标歌曲对应的目标音频数据,所述目标歌曲包括至少一个标识音符。

具体的,在本发明实施例中,目标音频数据与目标歌曲是对应的,并且,目标音频数据可以是用户演唱目标歌曲时通过具有录音功能的终端设备录制(并上传至相应的服务器)的音频数据,该演绎音频数据可以是只有用户演唱的清唱音频数据,也可以是包括用户演唱的清唱音频数据以及目标歌曲的伴奏混音等背景音乐的音频数据,这里不作具体限定。

在本实施例中,目标歌曲中包括了多个音符,并且,其中至少有一个音符被标识为颤音,即目标歌曲包括了至少一个标识音符。例如,在图2所示的应用场景中,图2展示了目标歌曲中的部分音符,而编号b所对应的音符被标识为颤音。

步骤s104:提取所述目标音频数据中与所述标识音符对应的音频数据片段,提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列。

具体的,针对上述与目标歌曲对应的目标音频数据,首先从该目标音频数据中提取与标识音符对应的音频数据片段。例如,目标歌曲中包括了被标记为颤音的音符(记为标识符n1),而每个音符在相应的音频数据中对应了相应时长以及对应的位置的音频数据,即为与该标识音符对应的音频数据片段。在本实施例中,针对目标歌曲中包括的每一个标识音符,分别提取与该标识音符对应的音符数据片段,并分别执行接下来的操作步骤。

针对提取到的目标音频数据中与至少一个标识音符分别对应的音频数据片段,分别提取与该音频数据片段对应的基频数据(即第一基频数据),然后根据这个基频数据获取与之对应的音符值序列(即第一音符值序列)。其中,基频数据可以是音频数据片段的基音,用于决定音频数据片段中各个音频的高音,其中,音符值指的是针对midi(musicalinstrumentdigitalinterface)乐器数字接口的一种标准值。

在一个具体的实施例中,上述提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列包括:按照预设的第一帧长和预设的第一帧移提取所述音频数据片段的基频数据作为第一基频数据,以生成与所述音频数据片段对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第一基频数据对应的第一音符值序列。

在本实施例中,因为需要针对一个音符在整首目标歌曲的音频数据中所占的音频数据片段来进行分析,找出其对应的颤音特征;而在本实施例中,是否具备颤音特征是通过音符值是否具备周期性来判断的。因此,在本实施例中,因为音频较短、处理需要精细,且为避免过大的帧移会跨越周期边界,导致基频周期无法准确确定,因为,在本实施中,在提取与标识音符对应的音频数据片段的基频数据时,采用的较短的帧长以及较小的帧移,以提高颤音识别的准确度。

例如,可以预设第一帧长为30ms,帧移为1ms,采集音频数据片段的基频数据,音频数据片段包括多个基频点,每一个基频点对应了一个与之对应的基频值。对上述基频点的基频值进行除噪、平滑等处理,然后将调整后的各基频点的基频值转换为各基频点对应的音符值,则上述与多个基频值对应的音符值就构成了相应的音符值序列,从而就获取到了各个分句的不用用户的音频数据片段的基频数据所对应的音符值序列。

在一种可能的实施场景中,可以采用预设音符转换公式,并根据调整后的所述各基频点的基频值,计算各基频点的音符值。其中,预设音符转换公式可以为:

其中,mi表示为当前基频点的音符值,xi表示为当前基频点的基频值,p表示音符值序列的长度。

另外,设m表示为音符值序列,x表示为基频数据中由基频点的基频值构成的基频值序列时,上述预设的音符转换公式可以标识为:

需要说明的是,对音频数据片段中提取的基频数据中包含的多个基频点的基频值进行调整时,可以是对各个基频点中的奇异基频点的基频值进行置零处理。例如,如果一个非0基频点的前后基频值均为0,则将此基频点记为0;还可以是对连续的几个基频点进行中值滤波处理,通过中值滤波处理(例如,5点中值滤波),可以使得基频段曲线平滑,避免噪点的出现。

可选的,在一个实施例中,在提取音频数据片段之前,还可以先对目标音频数据按照预设的格式进行规整,例如,可以规整为16k16bit的pcm格式。

在一个具体的实施例中,以目标歌曲中被标识为颤音的标识音符为第k个音符为例,设第k个音符的长度为p,则可以记第k个音符的音符值序列为mk=(mk1,mk2,…,mkp)。

步骤s106:按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段,针对每一个预设的周期值,计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离。

在本实施例中,在确定了截取到的音频数据片段对应的第一音符值序列之后,即可根据第一音符值序列中包含的具体的音符值来确定该音符值薛烈是否呈现出周期特征。

预设的至少一个周期值为所有的呈现颤音特征的周期值的可能的取值,在本实施例中,周期值跟提取音频数据的基频数据时采用的帧移有关,例如,帧移为1ms与10ms时,其周期值可能的取值就不同。

在本实施例中,预设的多个周期值中可能存在某一个周期值能表示当前的第一音符值序列的周期性的声音变化中的周期性,为了找到这个最合适的周期值,对于周期值所有的可能的取值(即预设的至少一个周期值中的每一个周期值),分别计算与该周期值对应的周期音符距离,然后再根据周期音符距离来确定最优的周期值。

具体的,对于第一音符值序列,按照预设的周期值对该音符值序列进行划分,即划分成若干个周期分段。

例如,对于长度为p的音符值序列m=(m1,m2,…,mp)而言,周期值的取值为q∈[a,b],(a,b为常数),则根据该周期值对第一音符值序列进行周期性的划分得到的音符值序列分段为:

m1,m2,…,mq;mq+1,mq+2,…,m2q;……;mp-q+1,mp-q+2,…,mp。

然后计算两个相邻的音符值序列片段之间的音符距离,作为与周期值q对应的周期音符值距离sq。

具体实施中,在计算上述音符值序列分段中两个相邻的音符值序列分段之间的音符值距离值时,可以是通过计算两个音符值序列分段中对应位置的音符值之间的距离的和得到的。

例如,在计算序列{m1,m2,…,mq}与{mq+1,mq+2,…,m2q}之间的音符距离时,是通过如下公式

来计算的。

需要说明的是,在本实施例中,与周期值q对应的周期音符值距离sq时可以是在划分得到的至少两个音符值序列分段中任意的两个相邻的音符值序列的音符距离,也可以预设的两个音符值序列分段之间的音符序列(例如,排在最前的两个音符值序列分段),又或者是所有的相邻的音符值序列分段之间的音符距离的最大值或者最小值,具体可以根据需要来确定,在本实施例中,不做限定。

在一个具体的实施例中,上述计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离具体为:遍历所述至少两个音符值序列分段;计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离;确定所述计算得到的分段音符距离的最大值,作为与该周期值对应的周期音符距离。

也就是说,针对与音符数据片段对应的音符值序列划分得到的所有的音符值序列分段,分别计算所有的相邻的两个音符值序列分段之间的音符距离,然后在所有的音符距离中取最大值来表示上述音符值序列分段对应的周期音符距离。

进一步的,计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离具体为:计算所述遍历到的音符序列分段与所述后相邻的音符值序列分段中包含的每一个音符值之间的距离值的和/平均值,作为所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离。

需要说明的是,一般用户在演绎目标歌曲时,呈现出的颤音一般为歌曲的分句的最后一个音符,并且,在该音符的持续时间中,开始以及最后,颤音的表现可能不明显,而在持续时间的中间,颤音的表现一般是最明显的。因此,在本实施例中,为了提高颤音识别的准确度,在寻找基频周期时使用的基频数据或者音符值序列,仅为该音符的持续时间中的居中位置的部分数据。

例如,在一个具体的实施例中,获取与所述第一基频数据对应的第一音符值序列之后还包括:截取所述第一音符值序列中预设区域的音符值子序列作为所述第一音符值序列。

例如,在第一音符值序列的长度为p时,截取段的音符值组成新的音符值子序列作为新的第一音符值序列。

在另一个可选的实施例中,还可以在步骤s102中获取的与标识音符对应的音符数据片段中,截取音符数据片段中预设位置的数据作为新的音符数据片段,并提取新的音符数据片段对应的第一基频数据。

步骤s108:确定所述周期音符距离中的最小值,获取与所述最小值对应的周期值作为目标周期。

在步骤s106中,针对周期值的每一个可能的取值,计算了与该周期值对应的周期音符距离。周期音符距离标识的是两个周期之间的相同位置的音符值之间的距离。也就是说,周期音符距离越大,则说明两个周期之间相同位置上的音符值之间的距离越大,而一般表现出周期性的数据中相同位置上的音符值的大小是一致的。因此,在本实施例中,希望周期音符距离是越小越好;也就是说,周期音符距离越小,对应的音符值序列表现出越强的周期性变化规律。

在本实施例中,在周期值的每一个取值所对应计算得到的周期音符距离中,查找最小的周期音符距离,并确定与该周期音符距离对应的周期值,即为目标周期。

在本实施例中,目标周期所对应的周期值下,第一音符值序列表现出了一定的周期性变化,并且,该周期性变化是以目标周期为周期的。

步骤s110:在所述目标周期小于预设的周期阈值的情况下,将所述目标音频数据判定为颤音音频数据。

在本实施例中,并不是第一音符值序列呈现出周期性的变化其对应的音频数据片段就一定呈现除了颤音特征。例如,过大的目标周期就不被认为是颤音特征的表现,因为用户在演唱歌曲时表现出颤音,音符的音高会出现抖动型的变化,让听者感觉到似乎在颤音,而过于大的目标周期表现的周期性变化不再是颤音的表现。

因此,在本实施例中,在目标周期确定之后,还需要确定目标周期是否小于预设的目标阈值,并且,在目标周期小于预设的周期阈值时,将相应的音频数据判定为颤音特征,即标识音符对应的音符数据片段为颤音音符数据片段,目标音频数据为表现出颤音特征的音频数据,对应的演唱者能演绎颤音,可以将该演唱者标识为颤音达人。另外,在目标周期大于预设的周期阈值时,相应的音符数据片段并没有呈现出颤音特征,对应的用户也没有还原原唱歌手在演绎标识为颤音的标识音符时的颤音特征。

需要说明的是,在本实施例中,呈现出颤音的音频不仅需要呈现出周期性的音高变化,还需要具备一定的起伏性,例如,在整个标识音符的演绎中,对应的音符值不变,其音符值序列分段之间的音符距离为0,这种情况不能被判定为颤音。因此,在一个具体的实施例中获取与所述第一基频数据对应的第一音符值序列之后,还包括:计算所述第一音符值序列包含的所有音符值的标准差,在所述标准差大于预设的标准差阈值时,执行所述按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段。

也就是说,在获取标识音符对应的音符数据片段对应的第一基频数据以及第一基频数据对应的第一音符值序列之后,通过计算第一音符值序列中包含的所有的音符值的标准差,从而来判断对应的音频数据片段是否呈现出音高的起伏性。

例如,第一音符值序列为m=(m1,m2,…,mp),则可以根据如下标准差计算公式计算与第一音符值序列对应的标准差:

如前所述,若在第一音符值序列的长度为p时,截取段的音符值组成新的音符值子序列作为新的第一音符值序列,在确定对应的音符值片段是否呈现出颤音特征,则在本实施例中,其对应的标准差计算公式为:

若上述音符值序列对应的标准差过小,说明对应的音高没有起伏性,因此,不符合颤音的特征。也就是说,只有在音符值序列对应的标准差超过一定值的情况下,对应的音高存在一定的起伏性的情况下,才符合颤音的特征。因此,在本实施例中,只有在所述标准差大于预设的标准差阈值时,才执行音符值序列是否存在周期性特征的判断,即执行所述按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段的步骤。

进一步的,在本实施例中,在判断音频数据是否具备颤音的相关特征之前,还需要判断相应的音频数据是否具备一定的音准,也就是说,在用户演绎目标歌曲得到的目标音频数据的音准较差时,判断其是否为颤音不具备实际意义,只有在目标音频数据对应的音准较好时,才判断其是否具备颤音的特征,从而避免对于不具备参考意义的音准过差的音频数据进行颤音的识别,从而提高资源的有效利用率。

具体的,在一个可选的实施例中,提取所述目标音频数据中与所述标识音符对应的音频数据片段之前,还包括:提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列;获取与所述目标歌曲对应的参考音频数据,提取与所述参考音频数据对一个的参考基频数据,获取与所述参考基频数据对应的参考音符值序列;计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离,在所述音准音符距离小于预设的音准阈值时,执行所述提取所述目标音频数据中与所述标识音符对应的音频数据片段。

在本实施例中,判断目标音频数据的音准是否达到预设条件的过程,是判断与目标音频数据对应的音符值序列是否满足预设条件的过程。

具体的,针对确定的与目标歌曲对应的目标音频数据,提取与该目标音频数据的基频数据,然后根据这个基频数据获取与之对应的音符值序列。其中,基频数据可以是音频数据片段的基音,用于决定音频数据片段中各个音频的高音,其中,音符值指的是针对midi(musicalinstrumentdigitalinterface)乐器数字接口的一种标准值。

在一个具体的实施例中,上述提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列包括:按照预设的第二帧长和预设的第二帧移提取所述目标音频数据的基频数据作为第二基频数据,以生成与所述目标音频数据对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第二基频数据对应的第二音符值序列;其中,所述第二帧长大于或等于所述第一帧长,所述第二帧移大于所述第一帧移。

例如,可以预设帧长为30ms,帧移为10ms,采集木笔爱音频数据的基频数据,从而生成与所述目标音频数据对应的至少一个基频点。对上述至少一个基频点进行除噪、平滑等处理,然后将调整后的各基频点的基频值转换为各基频点对应的音符值,则至少一个基频点对应了至少一个音符值,上述至少一个音符值就构成了相应的音符值序列,从而就获取到了目标音频数据的基频数据所对应的音符值序列。

需要说明的是,在本实施例中第二帧移大于第一帧移,因为第一帧移是为了对于标识音符对应的音频数据片段做即为精细的特征分析,而是本步骤中,第二帧移仅为了判断整首歌曲的目标音频数据是否具备一定的音准,不需要进行极为精细的特征分析。

在一种可能的实施场景中,可以采用预设音符转换公式,并根据调整后的所述各基频点的基频值,计算各基频点的音符值。其中,预设音符转换公式可以为:

其中,mi表示为当前基频点的音符值,xi表示为当前基频点的基频值,p表示音符值序列的长度。

另外,设m表示为音符值序列,x表示为基频数据中由基频点的基频值构成的基频值序列时,上述预设的音符转换公式可以标识为:

需要说明的是,对至少一个基频点中各基频点的基频值进行调整时,可以是对至少一个基频点中的奇异基频点的基频值进行置零处理。例如,如果一个非0基频点的前后基频值均为0,则将此基频点记为0;还可以是对连续的几个基频点进行中值滤波处理,通过中值滤波处理(例如,5点中值滤波),可以使得基频段曲线平滑,避免噪点的出现。

可选的,在一个实施例中,在提取目标音频数据的基频数据之前,还可以先对目标音频数据按照预设的格式进行规整,例如,可以规整为16k16bit的pcm格式。

在确定了与目标音频数据对应的第二音符值序列之后,还需要获取与目标歌曲对应的参考音频数据对应的音符值序列。需要说明的是,在本实施例中,参考音频数据可以是与目标歌曲对应的原唱歌手演绎的清唱音频数据,也可以是与目标歌曲对应的伴奏音频数据。

在本实施例中,按照获取上述目标音频数据的第二音符值序列的方式,获取与参考音频数据对应的参考基频数据,然后获取与参考基频数据对应的参考音符值序列。

在确定了目标歌曲对应的目标音频数据对应的第二音符值序列以及参考音频数据对应的参考音符值序列之后,即可计算二者之间的音符距离,计算得到的音符距离即为第二音符值序列与参考音符值序列之间的音准音符距离。

具体的,因为第二音符值序列和参考音符值序列均来源于目标歌曲,因此,二者的音符值序列的长度是一样的,以第二音符值序列的长度为g为例,计算第二音符值序列m2=(m21,m22,…,m2g)与参考音符值序列m0=(m01,m02,…,m0g)之间的音符距离s20。

在一个实施例中,音符距离的计算可以是通过计算m0与m2的每个音符值分量之间的差值的绝对值的和得到的,即预设的音符距离计算公式如下:

其中s20表示第二音符序列m2与参考音符序列m0之间的音符差值。

再例如,在另一个可选的实施例中,上述音符距离的计算可以是通过计算m0与m2的每个音符值分量之间的差值的绝对值的平均值得到的,即预设的音符距离计算公式如下:

需要说明的是,音符距离表示的是两个音符值序列对应的音调的差异情况,并且,音符距离越小,说明相应的两个音频数据之间的音调差异越小,反之,音符距离越大,说明相应的两个音频数据之间的音调差异越大。

在与目标音频数据对应的第二音符值序列与参考音频数据对应的参考音符值序列之间的音符距离(即音准音符距离)得到之后,即可根据音准音符距离来判断目标音频数据是否满足预设的音准要求,即音准音符距离是否小于预设的音准阈值。也就是说,在音准音符距离足够小的情况下,才对目标音频数据是否具备颤音特征进行判断,反之,在音准音符距离过大的情况下,说明目标音频数据的音准不满足条件,对其是否具备颤音特征的判断不具备实际意义,因此,不执行颤音识别的相关操作。

在另一个可选的实施例中,在判断目标音频数据对应的音符值序列是否满足预设的音准条件时,不仅可以从上述的音准音符距离的计算来进行。具体的,在一个可选的实施例中,上述计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离具体为:遍历所述第二音符值序列所包含的第二音符值,在所述参考音符值序列中确定与所述遍历到的第二音符值对应的参考音符值;计算所述遍历到的第二音符值与所述对应的参考音符值之间的音符值差值;统计大于预设的差值阈值的音符值差值数量,计算所述统计的数量与所述第二音符值序列的长度之间的比值,在所述比值小于预设的比值阈值时,判定所述音准音符距离小于预设的音准阈值。

也就是说,针对第二音符值序列m2=(m21,m22,…,m2g)x以及参考音符值序列m0=(m01,m02,…,m0g),分别计算每一个对应的音符值之间的音符值差值的绝对值,即:

s0i=|m0i-m2i|,i=1,…,g。

然后针对计算得到的所有的s0i,统计大于预设的差值阈值的s0i的数量t1,然后计算t1占所有的音符值的数量t0=g的比值,在该比值大于预设的比值阈值时,判定目标音频数据满足预设的音准条件。

在另一个实施例中,针对上述第二音符值序列m2=(m21,m22,…,m2g)x以及参考音符值序列m0=(m01,m02,…,m0g)中的每一个m0i和m2i,并计算m0i和m2i之间的差值s0i小于或等于预设值的s0i的数量x2,m0i和m2i之间的差值s0i大于于预设值的s0i的数量x3,以及m0i和m2i中一个为0而另外一个不为0的数量x1。

即对参数x1、x2、x3进行初始化,即x1=0,x2=0,x3=0,并执行如下操作1-3:

1、若m0i≠0且m2i=0,或m0i=0且m2i≠0,则x1=x1+1;

2、若m0i≠0且m2i≠0,且s0i=|m0i-m2i|≤a1,则x2=x2+1;

3、若m0i≠0且m2i≠0,且s0i=|m0i-m2i|>a1,则x3=x3+1;

从而得到参数x1、x2、x3的取值。

也就是说,x1表示用户在演唱目标歌曲的目标音频数据时在该唱的地方没唱或者在不该唱的地方唱了的音符值的数量,x2表示用户在演唱目标歌曲的目标音频数据时的音高与参考音频数据的音高之间的差距较小(例如a1=1)的音符值的数量,x3表示用户在演唱目标歌曲的目标音频数据时的音高与参考音频数据的音高之间的差距较大的音符值的数量。一般来讲,x1和x3越小表示目标音频数据的音准越差,x1和x3越大表示目标音频数据的音准越好;而x2越小表示目标音频数据的音准越好,x2越大表示目标音频数据的音准越差。

因此,判断音准是否满足条件的标准可以是判断

是否成立,或者判断

是否成立,或者判断

是否成立的过程,其中,k1,k2,k3,k4为预设的常数阈值。

也就是说,只有满足预设的判断音准的条件的目标音频数据才进入到颤音识别的操作中。

此外,为解决现有技术中无法识别出歌曲的演绎作品中是否展示出颤音的技术问题,在本发明实施例中,还提供了一种颤音识别装置。

具体的,如图4所示,上述颤音识别装置包括目标音频数据确定模块102、音频数据片段处理模块104、周期音符距离计算模块106、目标周期确定模块108以及颤音判定模块110,其中:

目标音频数据确定模块102,用于获取与目标歌曲对应的目标音频数据,所述目标歌曲包括至少一个标识音符;

音频数据片段处理模块104,用于提取所述目标音频数据中与所述标识音符对应的音频数据片段,提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列;

周期音符距离计算模块106,用于按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段,针对每一个预设的周期值,计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离;

目标周期确定模块108,用于确定所述周期音符距离中的最小值,获取与所述最小值对应的周期值作为目标周期;

颤音判定模块110,用于在所述目标周期小于预设的周期阈值的情况下,将所述目标音频数据判定为颤音音频数据。

可选的,在一个实施例中,如图4所示,上述装置还包括标准差检测模块112,用于计算所述第一音符值序列包含的所有音符值的标准差,在所述标准差大于预设的标准差阈值时,调用所述周期音符距离计算模块106。

可选的,在一个实施例中,如图4所示,上述装置还包括音准判断模块114,用于提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列;获取与所述目标歌曲对应的参考音频数据,提取与所述参考音频数据对一个的参考基频数据,获取与所述参考基频数据对应的参考音符值序列;计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离,在所述音准音符距离小于预设的音准阈值时,调用所述音频数据片段处理模块104。

可选的,在一个实施例中,音频数据片段处理模块104还用于按照预设的第一帧长和预设的第一帧移提取所述音频数据片段的基频数据作为第一基频数据,以生成与所述音频数据片段对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第一基频数据对应的第一音符值序列。

可选的,在一个实施例中,音频数据片段处理模块104还用于对所述至少一个基频点中的奇异基频点的基频值进行置零处理;对所述各基频点进行中值滤波处理。

可选的,在一个实施例中,周期音符距离计算模块106还用于遍历所述至少两个音符值序列分段;计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离;确定所述计算得到的分段音符距离的最大值,作为与该周期值对应的周期音符距离。

可选的,在一个实施例中,周期音符距离计算模块106还用于计算所述遍历到的音符序列分段与所述后相邻的音符值序列分段中包含的每一个音符值之间的距离值的和/平均值,作为所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离。

可选的,在一个实施例中,音频数据片段处理模块还用于截取所述第一音符值序列中预设区域的音符值子序列作为所述第一音符值序列。

可选的,在一个实施例中,音准判断模块114还用于按照预设的第二帧长和预设的第二帧移提取所述目标音频数据的基频数据作为第二基频数据,以生成与所述目标音频数据对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第二基频数据对应的第二音符值序列;其中,所述第二帧长大于或等于所述第一帧长,所述第二帧移大于所述第一帧移。

可选的,在一个实施例中,音准判断模块114还用于遍历所述第二音符值序列所包含的第二音符值,在所述参考音符值序列中确定与所述遍历到的第二音符值对应的参考音符值;计算所述遍历到的第二音符值与所述对应的参考音符值之间的音符值差值;统计大于预设的差值阈值的音符值差值数量,计算所述统计的数量与所述第二音符值序列的长度之间的比值,在所述比值小于预设的比值阈值时,判定所述音准音符距离小于预设的音准阈值。

实施本发明实施例,将具有如下有益效果:

采用了上述颤音识别方法和装置之后,对于包含了被标识为颤音的标识音符的目标歌曲的音频数据,针对与标识音符对应的音频数据片段进行特征分析,获取与音频数据片段对应的基频数据以及音符值序列,然后通过音符值序列是否呈现了周期性的音高的变化来判断用户在演绎标识音符时是否呈现了颤音特色,从而提供了一种呈现出颤音的音频数据的识别方法,提高了音频数据评价的多样性。

在一个实施例中,如图5所示,图5展示了一种运行上述颤音识别方法的基于冯诺依曼体系的计算机系统的终端。该计算机系统可以是智能手机、平板电脑、掌上电脑、笔记本电脑或个人电脑等终端设备。具体的,可包括通过系统总线连接的外部输入接口1001、处理器1002、存储器1003和输出接口1004。其中,外部输入接口1001可选的可至少包括网络接口10012。存储器1003可包括外存储器10032(例如硬盘、光盘或软盘等)和内存储器10034。输出接口1004可至少包括显示屏10042等设备。

在本实施例中,本方法的运行基于计算机程序,该计算机程序的程序文件存储于前述基于冯诺依曼体系的计算机系统的外存储器10032中,在运行时被加载到内存储器10034中,然后被编译为机器码之后传递至处理器1002中执行,从而使得基于冯诺依曼体系的计算机系统中形成逻辑上的目标音频数据确定模块102、音频数据片段处理模块104、周期音符距离计算模块106、目标周期确定模块108、颤音判定模块110、标准差检测模块112以及音准判断模块114。且在上述颤音识别方法执行过程中,输入的参数均通过外部输入接口1001接收,并传递至存储器1003中缓存,然后输入到处理器1002中进行处理,处理的结果数据或缓存于存储器1003中进行后续地处理,或被传递至输出接口1004进行输出。

具体的,所述处理器1002用于执行如下操作:

获取与目标歌曲对应的目标音频数据,所述目标歌曲包括至少一个标识音符;

提取所述目标音频数据中与所述标识音符对应的音频数据片段,提取所述音频数据片段的第一基频数据,获取与所述第一基频数据对应的第一音符值序列;

按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段,针对每一个预设的周期值,计算所述至少两个音符值序列分段中的两个相邻的音符值序列分段之间的音符距离,作为与该周期值对应的周期音符距离;

确定所述周期音符距离中的最小值,获取与所述最小值对应的周期值作为目标周期;

在所述目标周期小于预设的周期阈值的情况下,将所述目标音频数据判定为颤音音频数据。

可选的,在一个实施例中,处理器1002还用于执行计算所述第一音符值序列包含的所有音符值的标准差,在所述标准差大于预设的标准差阈值时,执行所述按照预设的至少一个周期值分别将所述第一音符值序列划分成至少两个音符值序列分段。

可选的,在一个实施例中,处理器1002还用于执行提取与所述目标音频数据对应的第二基频数据,获取与所述第二基频数据对应的第二音符值序列;获取与所述目标歌曲对应的参考音频数据,提取与所述参考音频数据对一个的参考基频数据,获取与所述参考基频数据对应的参考音符值序列;计算所述第二音符值序列与所述参考音符值序列的音符距离作为音准音符距离,在所述音准音符距离小于预设的音准阈值时,执行所述提取所述目标音频数据中与所述标识音符对应的音频数据片段。

可选的,在一个实施例中,处理器1002还用于执行按照预设的第一帧长和预设的第一帧移提取所述音频数据片段的基频数据作为第一基频数据,以生成与所述音频数据片段对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第一基频数据对应的第一音符值序列。

可选的,在一个实施例中,处理器1002还用于执行对所述至少一个基频点中的奇异基频点的基频值进行置零处理;对所述各基频点进行中值滤波处理。

可选的,在一个实施例中,处理器1002还用于执行遍历所述至少两个音符值序列分段;计算所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离作为分段音符距离;确定所述计算得到的分段音符距离的最大值,作为与该周期值对应的周期音符距离。

可选的,在一个实施例中,处理器1002还用于执行计算所述遍历到的音符序列分段与所述后相邻的音符值序列分段中包含的每一个音符值之间的距离值的和/平均值,作为所述遍历到的音符值序列分段与后相邻的音符值序列分段之间的音符距离。

可选的,在一个实施例中,处理器1002还用于执行截取所述第一音符值序列中预设区域的音符值子序列作为所述第一音符值序列。

可选的,在一个实施例中,处理器1002还用于执行按照预设的第二帧长和预设的第二帧移提取所述目标音频数据的基频数据作为第二基频数据,以生成与所述目标音频数据对应的至少一个基频点,所述每一个基频点包含与该基频点对应的基频值;对所述至少一个基频点中各基频点的基频值进行调整,并将调整后的所述各基频点的基频值转换为所述各基频点对应的音符值,以获取与所述第二基频数据对应的第二音符值序列;其中,所述第二帧长大于或等于所述第一帧长,所述第二帧移大于所述第一帧移。

可选的,在一个实施例中,处理器1002还用于执行遍历所述第二音符值序列所包含的第二音符值,在所述参考音符值序列中确定与所述遍历到的第二音符值对应的参考音符值;计算所述遍历到的第二音符值与所述对应的参考音符值之间的音符值差值;统计大于预设的差值阈值的音符值差值数量,计算所述统计的数量与所述第二音符值序列的长度之间的比值,在所述比值小于预设的比值阈值时,判定所述音准音符距离小于预设的音准阈值。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!