音频片段的匹配方法、装置、计算机可读介质及电子设备与流程
本申请涉及计算机及通信技术领域,具体而言,涉及一种音频片段的匹配方法、装置、计算机可读介质及电子设备。
背景技术:
在音频片段的匹配场景中,比如哼唱式音乐检索或哼唱评分场景,通常是通过比较哼唱旋律的音频特征序列与待检索音频的特征序列之间的差异程度来衡量两个音频片段之间的相似度。但是,如何能够提高音频片段匹配的准确性是亟待解决的技术问题。
技术实现要素:
本申请的实施例提供了一种音频片段的匹配方法、装置、计算机可读介质及电子设备,进而至少在一定程度上可以提高音频片段的匹配准确性。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种音频片段的匹配方法,包括:获取第一音频片段对应的第一特征序列和第二音频片段对应的第二特征序列;根据所述第一特征序列的长度和所述第二特征序列的长度构建所述第一特征序列与所述第二特征序列之间的距离矩阵,所述距离矩阵中的各个位置表示所述第一特征序列上的一个点与所述第二特征序列上的一个点之间的距离;计算所述距离矩阵中的起始位置到所述距离矩阵中的目标位置之间的第一累加距离,并计算所述距离矩阵中的终止位置到所述目标位置之间的第二累加距离;基于所述第一累加距离和所述第二累加距离计算所述第一特征序列与所述第二特征序列之间的最小距离,并根据所述最小距离确定所述第一音频片段与所述第二音频片段之间的匹配度。
根据本申请实施例的一个方面,提供了一种音频片段的匹配装置,包括:获取单元,用于获取第一音频片段对应的第一特征序列和第二音频片段对应的第二特征序列;构建单元,用于根据所述第一特征序列的长度和所述第二特征序列的长度构建所述第一特征序列与所述第二特征序列之间的距离矩阵,所述距离矩阵中的各个位置表示所述第一特征序列上的一个点与所述第二特征序列上的一个点之间的距离;第一处理单元,用于计算所述距离矩阵中的起始位置到所述距离矩阵中的目标位置之间的第一累加距离,并计算所述距离矩阵中的终止位置到所述目标位置之间的第二累加距离;第二处理单元,用于基于所述第一累加距离和所述第二累加距离计算所述第一特征序列与所述第二特征序列之间的最小距离,并根据所述最小距离确定所述第一音频片段与所述第二音频片段之间的匹配度。
在本申请的一些实施例中,基于前述方案,所述第一处理单元包括:第一计算单元,用于分别计算所述起始位置到所述距离矩阵中与所述目标位置关联的多个第一候选位置之间的累加距离,所述多个第一候选位置位于所述起始位置与所述目标位置之间;第二计算单元,用于根据所述起始位置到各个所述第一候选位置之间的累加距离,以及各个所述第一候选位置所表示的距离值,计算所述起始位置到所述目标位置之间的多个第一候选累加距离;第一确定单元,用于将所述多个第一候选累加距离中的最小值作为所述第一累加距离。
在本申请的一些实施例中,基于前述方案,所述第二计算单元配置为:对所述起始位置到各个所述第一候选位置之间的累加距离与各个所述第一候选位置所表示的距离值进行求和,得到各个所述第一候选位置对应的距离和值,将各个所述第一候选位置对应的距离和值分别作为一个所述第一候选累加距离。
在本申请的一些实施例中,基于前述方案,所述第二计算单元配置为:根据各个所述第一候选位置所表示的距离值,以及各个所述第一候选位置对应的权重值,对各个所述第一候选位置所表示的距离值进行加权计算,得到各个所述第一候选位置对应的加权距离值;对所述起始位置到各个所述第一候选位置之间的累加距离与各个所述第一候选位置对应的加权距离值进行求和,得到各个所述第一候选位置对应的距离和值,将各个所述第一候选位置对应的距离和值分别作为一个所述第一候选累加距离。
在本申请的一些实施例中,基于前述方案,所述的音频片段的匹配装置还包括:第三计算单元,用于计算各个所述第一候选位置与所述距离矩阵的对角线之间的距离,所述对角线是由所述起始位置与所述终止位置形成的直线;根据各个所述第一候选位置与所述对角线之间的距离,计算各个所述第一候选位置对应的权重值。
在本申请的一些实施例中,基于前述方案,若所述目标位置的坐标为(i,j),则所述多个第一候选位置的坐标包括:(i-1,j-1)、(i-1,j-x)、(i-x,j-1),其中,x为小于i或j的自然数。
在本申请的一些实施例中,基于前述方案,所述第一处理单元包括:第四计算单元,用于分别计算所述终止位置到所述距离矩阵中与所述目标位置关联的多个第二候选位置之间的累加距离,所述多个第二候选位置位于所述目标位置与所述终止位置之间;第五计算单元,用于根据所述终止位置到各个所述第二候选位置之间的累加距离,以及各个所述第二候选位置所表示的距离值,计算所述终止位置到所述目标位置之间的多个第二候选累加距离;第二确定单元,用于将所述多个第二候选累加距离中的最小值作为所述第二累加距离。
在本申请的一些实施例中,基于前述方案,若所述目标位置的坐标为(i,j),则所述多个第二候选位置的坐标包括:(i+1,j+1)、(i+1,j+x)、(i+x,j+1),其中,x为自然数。
在本申请的一些实施例中,基于前述方案,所述x的值为2。
在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:基于所述第一累加距离、所述第二累加距离和所述目标位置所表示的距离值,计算所述目标位置对应的最小累加距离;从多个所述目标位置对应的最小累加距离中选择最小值作为所述第一特征序列与所述第二特征序列之间的最小距离。
在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:对所述目标位置所表示的距离值、所述第一累加距离和所述第二累加距离进行求和,得到所述目标位置对应的最小累加距离;或
根据所述目标位置所表示的距离值和所述目标位置对应的权重值进行加权计算,得到所述目标位置对应的加权距离值,对所述目标位置对应的加权距离值、所述第一累加距离和所述第二累加距离进行求和,得到所述目标位置对应的最小累加距离。
在本申请的一些实施例中,基于前述方案,所述第二处理单元配置为:获取所述第一音频片段与所述第二音频片段的多种特征分别对应的所述第一特征序列和所述第二特征序列之间的最小距离;根据各种所述特征对应的权重和各种所述特征对应的所述第一特征序列和所述第二特征序列之间的最小距离进行加权求和计算,得到所述第一音频片段和所述第二音频片段之间的加权距离值;根据所述第一音频片段和所述第二音频片段之间的加权距离值确定所述第一音频片段和所述第二音频片段之间的匹配度。
在本申请的一些实施例中,基于前述方案,所述多种特征包括:音频片段的音高特征、乐音能量、频率倒谱系数、每帧的均方根能量值。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的音频片段的匹配方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的音频片段的匹配方法。
在本申请的一些实施例所提供的技术方案中,通过计算距离矩阵中的起始位置到距离矩阵中的目标位置之间的第一累加距离,并计算距离矩阵中的终止位置到该目标位置之间的第二累加距离,以基于该第一累加距离和该第二累加距离计算第一特征序列与第二特征序列之间的最小距离,使得在计算两个特征序列之间的最小距离时,可以从两个方向(即距离矩阵的起始位置到目标位置、距离矩阵的终止位置到目标位置)来综合计算,进而能够兼顾特征序列在两个方向上的匹配关系,因此能够保证计算得到的两个特征序列之间的最小距离更加准确,从而有利于提高音频片段匹配的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
图2示出了根据本申请的一个实施例的音频片段的匹配方法的流程图;
图3示出了根据本申请的一个实施例的构建的距离矩阵的示意图;
图4示出了根据本申请的一个实施例的计算距离矩阵中的起始位置到目标位置之间的第一累加距离的流程图;
图5示出了根据本申请的一个实施例的从距离矩阵的起始位置开始计算累加距离的计算方向示意图;
图6示出了根据本申请的一个实施例的计算距离矩阵中的终止位置到目标位置之间的第二累加距离的流程图;
图7示出了根据本申请的一个实施例的从距离矩阵的终止位置开始计算累加距离的计算方向示意图;
图8示出了根据本申请的一个实施例的计算第一特征序列与第二特征序列之间的最小距离的流程图;
图9示出了根据本申请的一个实施例的确定第一音频片段与第二音频片段之间的匹配度的流程图;
图10示出了根据本申请的一个实施例的哼唱评分方法的流程图;
图11示出了根据本申请的一个实施例的计算得到的全局最佳路径的示意图;
图12示出了根据本申请的一个实施例的音频片段的匹配装置的框图;
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
如图1所示,系统架构可以包括终端设备(如图1中所示智能手机101、平板电脑102和便携式计算机103中的一种或多种,当然也可以是台式计算机等等)、网络104和服务器105。网络104用以在终端设备和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
在本申请的一个实施例中,用户可以利用终端设备向服务器105上传第一音频片段(比如可以是用户清唱的一段音频),服务器105在获取到终端设备上传的第一音频片段之后,可以提取第一音频片段对应的第一特征序列,并且获取到需要与第一音频片段进行匹配的第二音频片段对应的第二特征序列。然后可以根据第一特征序列的长度和第二特征序列的长度构建第一特征序列与第二特征序列之间的距离矩阵,该距离矩阵中的各个位置表示第一特征序列上的一个点与第二特征序列上的一个点之间的距离。
在本申请的一个实施例中,当构建距离矩阵之后,服务器105可以计算该距离矩阵中的起始位置到距离矩阵中的目标位置之间的第一累加距离,并计算距离矩阵中的终止位置到目标位置之间的第二累加距离,然后基于第一累加距离和第二累加距离计算第一特征序列与第二特征序列之间的最小距离,并根据该最小距离确定第一音频片段与第二音频片段之间的匹配度。可见,由于本申请实施例的技术方案可以从两个方向(即距离矩阵的起始位置到目标位置、距离矩阵的终止位置到目标位置)来综合计算音频片段的特征序列之间的最小距离,进而能够兼顾特征序列在两个方向上的匹配关系,因此能够保证计算得到的两个特征序列之间的最小距离更加准确,从而有利于提高音频片段匹配的准确性。
需要说明的是,本申请实施例所提供的音频片段的匹配方法一般由服务器105执行,相应地,音频片段的匹配装置一般设置于服务器105中。但是,在本申请的其它实施例中,终端设备也可以与服务器具有相似的功能,从而执行本申请实施例所提供的音频片段的匹配方案。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示出了根据本申请的一个实施例的音频片段的匹配方法的流程图,该音频片段的匹配方法可以由具有计算处理功能的设备来执行,比如可以由图1中所示的服务器105来执行。参照图2所示,该音频片段的匹配方法至少包括步骤s210至步骤s240,详细介绍如下:
在步骤s210中,获取第一音频片段对应的第一特征序列和第二音频片段对应的第二特征序列。
在本申请的一个实施例中,第一音频片段和第二音频片段可以是需要进行对比,以确定匹配度的音频片段,比如第一音频片段可以是用户输入的音频片段(如用户清唱的音频片段、用户录制的音频片段等),第二音频片段可以是数据库中已存储的音频片段。
在本申请的一个实施例中,第一特征序列和第二特征序列是针对同一个音频特征的序列,音频特征可以是音高特征、乐音能量、频率倒谱系数、每帧的均方根能量值等。
在本申请的一个实施例中,可以通过自相关函数算法、yin算法、pyin算法等来提取第一音频片段和第二音频片段的特征序列。
在步骤s220中,根据所述第一特征序列的长度和所述第二特征序列的长度构建所述第一特征序列与所述第二特征序列之间的距离矩阵,所述距离矩阵中的各个位置表示所述第一特征序列上的一个点与所述第二特征序列上的一个点之间的距离。
在本申请的一个实施例中,如果第一特征序列的长度为m,第二特征序列的长度为n,那么根据第一特征序列的长度和第二特征序列的长度构建的距离矩阵的大小为m×n。具体地,如图3所示,假设第一特征序列为301,第二特征序列为302,那么可以构建一个大小为m×n的距离矩阵303,距离矩阵中的各个位置表示第一特征序列301上的一个点与第二特征序列302上的一个点之间的距离,比如距离矩阵中的(i,j)表示第一特征序列301上的第i个点与第二特征序列302上的第j个点之间的距离,该距离可以是欧氏距离。
继续参照图2所示,在步骤s230中,计算所述距离矩阵中的起始位置到所述距离矩阵中的目标位置之间的第一累加距离,并计算所述距离矩阵中的终止位置到所述目标位置之间的第二累加距离。
在本申请的一个实施例中,距离矩阵中的起始位置即第一特征序列上的第一个点与第二特征序列上的第一个点在距离矩阵中所对应的位置;距离矩阵中的终止位置即第一特征序列上的最后一个点与第二特征序列上的最后一个点在距离矩阵中所对应的位置;距离矩阵中的目标位置可以是距离矩阵中除起始位置和终止位置之外的位置。
在本申请的一个实施例中,如图4所示,步骤s230中计算距离矩阵中的起始位置到距离矩阵中的目标位置之间的第一累加距离的过程,可以包括如下步骤s410至步骤s430,详细说明如下:
在步骤s410中,分别计算起始位置到距离矩阵中与目标位置关联的多个第一候选位置之间的累加距离,所述多个第一候选位置位于所述起始位置与所述目标位置之间。
在本申请的一个实施例中,在从距离矩阵的起始位置开始计算累加距离时,可以从矩阵上的三个方向来逐个位置进行距离累加计算,即图5中所示的上、右和右上斜对角。比如,若目标位置的坐标为(i,j),则多个第一候选位置的坐标可以包括:(i-1,j-1)、(i-1,j-x)、(i-x,j-1),其中,x为小于i或j的自然数,比如x可以为0、2、3等。
在本申请的一个实施例中,上述实施例中的x可以大于1,在这种情况下,在计算累加距离时可以间隔(x-1)一个位置进行累加,进而可以加速累加距离的计算过程,有利于提高计算速率。但是,为了保证计算结果的准确性,x的值又不便于取过大的值,因此可以根据实际需要进行设定,比如可以设置为2。
在本申请的一个实施例中,计算起始位置到第一候选位置之间的累加距离的过程与计算起始位置到目标位置的累加距离的过程类似。
继续参照图4所示,在步骤s420中,根据所述起始位置到各个所述第一候选位置之间的累加距离,以及各个所述第一候选位置所表示的距离值,计算所述起始位置到所述目标位置之间的多个第一候选累加距离。
在本申请的一个实施例中,步骤s420中计算起始位置到目标位置之间的多个第一候选累加距离的过程可以是:对起始位置到各个第一候选位置之间的累加距离与各个第一候选位置所表示的距离值进行求和,得到各个第一候选位置对应的距离和值,将各个第一候选位置对应的距离和值分别作为一个第一候选累加距离。
比如,若某个第一候选位置为(i-1,j-1),该第一候选位置所表示的距离值为d(i-1,j-1),那么该第一候选位置对应的距离和值可以表示为:d_forward(i-1,j-1)+d(i-1,j-1),其中的d_forward(i-1,j-1)表示距离矩阵中的起始位置到该第一候选位置之间的累加距离。
在本申请的一个实施例中,步骤s420中计算起始位置到目标位置之间的多个第一候选累加距离的过程可以是:根据各个第一候选位置所表示的距离值,以及各个第一候选位置对应的权重值,对各个第一候选位置所表示的距离值进行加权计算,得到各个第一候选位置对应的加权距离值;对所述起始位置到各个第一候选位置之间的累加距离与各个第一候选位置对应的加权距离值进行求和,得到各个第一候选位置对应的距离和值,将各个第一候选位置对应的距离和值分别作为一个第一候选累加距离。比如,若某个第一候选位置为(i-1,j-1),该第一候选位置所表示的距离值为d(i-1,j-1),该第一候选位置对应的权重值为w,那么该第一候选位置对应的距离和值可以表示为:d_forward(i-1,j-1)+d(i-1,j-1)×w,其中的d_forward(i-1,j-1)表示距离矩阵中的起始位置到该第一候选位置之间的累加距离。
即在上述实施例中,考虑到了各个第一候选位置对应的权重值,这是由于各个第一候选位置与距离矩阵的对角线之间的距离可能不同,为了避免最后从各个第一候选位置中选择的位置偏离距离矩阵的对角线过远,则可以根据各个第一候选位置与距离矩阵的对角线之间的距离来设置各个第一候选位置对应的权重。比如,若某个位置距离对角线越近,则该位置对应的权重越接近1;若某个位置距离对角线越远,则该位置对应的权重越大。其中,距离矩阵的对角线是由距离矩阵的起始位置与终止位置形成的直线。
继续参照图4所示,在步骤s430中,将所述多个第一候选累加距离中的最小值作为所述第一累加距离。
图4所示实施例的技术方案使得能够计算得到从距离矩阵的起始位置到距离矩阵中的目标位置之间的第一累加距离。以下结合图6介绍本申请实施例中计算距离矩阵中的终止位置到目标位置之间的第二累加距离,具体可以包括如下步骤s610至步骤s630,详细说明如下:
在步骤s610中,分别计算距离矩阵中的终止位置到距离矩阵中与目标位置关联的多个第二候选位置之间的累加距离,所述多个第二候选位置位于所述目标位置与所述终止位置之间。
在本申请的一个实施例中,在从距离矩阵的终止位置开始计算累加距离时,可以从矩阵上的三个方向来逐个位置进行距离累加计算,即图7中所示的下、左和左下斜对角。比如,若目标位置的坐标为(i,j),则多个第二候选位置的坐标可以包括:(i+1,j+1)、(i+1,j+y)、(i+y,j+1),其中,y为自然数,比如y可以为0,2、3等。
在本申请的一个实施例中,上述实施例中的y可以大于1,在这种情况下,在计算累加距离时可以间隔(y-1)一个位置进行累加,进而可以加速累加距离的计算过程,有利于提高计算速率。但是,为了保证计算结果的准确性,y的值又不便于取过大的值,因此可以根据实际需要进行设定,比如可以设置为2。
在本申请的一个实施例中,计算终止位置到第二候选位置之间的累加距离的过程与计算终止位置到目标位置的累加距离的过程类似。
在步骤s620中,根据所述终止位置到各个所述第二候选位置之间的累加距离,以及各个所述第二候选位置所表示的距离值,计算所述终止位置到所述目标位置之间的多个第二候选累加距离。
在本申请的一个实施例中,步骤s620中计算终止位置到目标位置之间的多个第二候选累加距离的过程可以是:对终止位置到各个第二候选位置之间的累加距离与各个第二候选位置所表示的距离值进行求和,得到各个第二候选位置对应的距离和值,将各个第二候选位置对应的距离和值分别作为一个第二候选累加距离。
比如,若某个第二候选位置为(i+1,j+1),该第二候选位置所表示的距离值为d(i+1,j+1),那么该第二候选位置对应的距离和值可以表示为:d_backward(i+1,j+1)+d(i+1,j+1),其中的d_backward(i+1,j+1)表示距离矩阵中的终止位置到该第二候选位置之间的累加距离。
在本申请的一个实施例中,步骤s620中计算终止位置到目标位置之间的多个第二候选累加距离的过程可以是:根据各个第二候选位置所表示的距离值,以及各个第二候选位置对应的权重值,对各个第二候选位置所表示的距离值进行加权计算,得到各个第二候选位置对应的加权距离值;对所述终止位置到各个第二候选位置之间的累加距离与各个第二候选位置对应的加权距离值进行求和,得到各个第二候选位置对应的距离和值,将各个第二候选位置对应的距离和值分别作为一个第二候选累加距离。比如,若某个第二候选位置为(i+1,j+1),该第二候选位置所表示的距离值为d(i+1,j+1),该第二候选位置对应的权重值为w,那么该第二候选位置对应的距离和值可以表示为:d_backward(i+1,j+1)+d(i+1,j+1)×w,其中的d_backward(i+1,j+1)表示距离矩阵中的终止位置到该第二候选位置之间的累加距离。
即在上述实施例中,考虑到了各个第二候选位置对应的权重值,这是由于各个第二候选位置与距离矩阵的对角线之间的距离可能不同,为了避免最后从各个第二候选位置中选择的位置偏离距离矩阵的对角线过远,则可以根据各个第二候选位置与距离矩阵的对角线之间的距离来设置各个第二候选位置对应的权重。比如,若某个位置距离对角线越近,则该位置对应的权重越接近1;若某个位置距离对角线越远,则该位置对应的权重越大。其中,距离矩阵的对角线是由距离矩阵的起始位置与终止位置形成的直线。
继续参照图6所示,在步骤s630中,将所述多个第二候选累加距离中的最小值作为所述第二累加距离。
图6所示实施例的技术方案使得能够计算得到从距离矩阵的终止位置到距离矩阵中的目标位置之间的第二累加距离。
继续参照图2所示,在步骤s240中,基于所述第一累加距离和所述第二累加距离计算所述第一特征序列与所述第二特征序列之间的最小距离,并根据所述最小距离确定所述第一音频片段与所述第二音频片段之间的匹配度。
在本申请的一个实施例中,如图8所示,步骤s240中基于第一累加距离和第二累加距离计算第一特征序列与第二特征序列之间的最小距离的过程,可以包括如下步骤s810至步骤s820:
在步骤s810中,基于第一累加距离、第二累加距离和目标位置所表示的距离值,计算所述目标位置对应的最小累加距离。
在本申请的一个实施例中,可以对目标位置所表示的距离值、第一累加距离和第二累加距离进行求和,得到目标位置对应的最小累加距离。比如,若目标位置为(i,j)、目标位置所表示的距离值为d(i,j)、第一累加距离为d_forward(i,j)、第二累加距离为d_backward(i,j),那么目标位置对应的最小累加距离为d_total(i,j)=d_forward(i,j)+d_backward(i,j)+d(i,j)。
在本申请的一个实施例中,可以根据目标位置所表示的距离值和目标位置对应的权重值进行加权计算,得到目标位置对应的加权距离值,然后对目标位置对应的加权距离值、第一累加距离和第二累加距离进行求和,得到目标位置对应的最小累加距离。比如,若目标位置为(i,j)、目标位置所表示的距离值为d(i,j)、目标位置对应的权重值为w、第一累加距离为d_forward(i,j)、第二累加距离为d_backward(i,j),那么目标位置对应的最小累加距离为d_total(i,j)=d_forward(i,j)+d_backward(i,j)+d(i,j)×w。其中,目标位置对应的权重值也可以根据目标位置与距离矩阵的对角线之间的距离来确定。
继续参照图8所示,在步骤s820中,从多个所述目标位置对应的最小累加距离中选择最小值作为所述第一特征序列与所述第二特征序列之间的最小距离。
在本申请的一个实施例中,第一特征序列与第二特征序列之间的最小距离即为
在本申请的一个实施例中,如图9所示,步骤s240中根据第一特征序列与第二特征序列之间的最小距离确定第一音频片段与第二音频片段之间的匹配度的过程,可以包括如下步骤s910至步骤s930:
在步骤s910中,获取第一音频片段与第二音频片段的多种特征分别对应的第一特征序列和第二特征序列之间的最小距离。
在本申请的一个实施例中,音频片段的多种特征可以包括:音频片段的音高特征、乐音能量、频率倒谱系数、每帧的均方根能量值等。步骤s910中即为针对音频片段的每种特征,都分别获取到第一音频片段的特征序列与第二音频片段的特征序列,并据此计算两特征序列之间的最小距离,进而可以得到多种特征分别对应的第一特征序列和第二特征序列之间的最小距离。
在步骤s920中,根据各种所述特征对应的权重和各种所述特征对应的所述第一特征序列和所述第二特征序列之间的最小距离进行加权求和计算,得到所述第一音频片段和所述第二音频片段之间的加权距离值。
在本申请的一个实施例中,特征对应的权重可以根据特征的重要程度来设定,比如若某个特征比较重要,那么可以将该特征对应的权重设置为较大的值;若某个特征相对不是太重要,那么可以将该特征对应的权重设置为较小的值,进而可以突出重要特征对加权距离值的影响,并弱化非重要特征对加权距离值的影响。
在步骤s930中,根据所述第一音频片段和所述第二音频片段之间的加权距离值确定所述第一音频片段和所述第二音频片段之间的匹配度。
在本申请的一个实施例中,在计算得到第一音频片段和第二音频片段之间的加权距离值之后,可以将该加权距离值除以一个参考值(如可以是第一特征序列的长度或第二特征序列的长度)来计算得到匹配分数,进而根据匹配分数来确定第一音频片段和第二音频片段之间的匹配度。比如,若匹配分数较大,则可以确定第一音频片段和第二音频片段之间的匹配度较强;相反地,若匹配分数较小,则可以确定第一音频片段和第二音频片段之间的匹配度较弱。
在本申请的一个实施例中,步骤s240中根据第一特征序列与第二特征序列之间的最小距离确定第一音频片段与第二音频片段之间的匹配度的过程,也可以是直接将一个特征对应的第一特征序列与第二特征序列之间的最小距离作为第一音频片段与第二音频片段之间的距离,进而来确定第一音频片段与第二音频片段之间的匹配度。
本申请上述实施例的技术方案由于可以从两个方向(即距离矩阵的起始位置到目标位置、距离矩阵的终止位置到目标位置)来综合计算音频片段的特征序列之间的最小距离,因此能够兼顾特征序列在两个方向上的匹配关系,进而能够保证计算得到的两个特征序列之间的最小距离更加准确,从而有利于提高音频片段匹配的准确性。
以下以哼唱评分场景为例,对本申请实施例的技术方案进行详细阐述:
如图10所示,根据本申请实施例的哼唱评分方法,包括如下步骤:
步骤s1001,采集用户清唱的音频片段。
在本申请的一个实施例中,用户可以清唱一小段指定歌曲,终端采集用户的音频片段,并记录音频片段的开始和结束时间,进而得到音频时长。可选地,当终端采集到的音频片段的音频时长小于预设时间长度时,则可以过滤掉该段音频片段,并且可以返回评分失败的信息。
步骤s1002,提取音频片段的音高序列。
在本申请的一个实施例中,可以采用自相关函数法、yin算法或pyin算法按照指定的采样率来提取音频片段的音高序列。
步骤s1003,提取目标歌曲片段midi(musicalinstrumentdigitalinterface,乐器数字接口)的音高序列。
在本申请的一个实施例中,哼唱评分底层依赖于音乐midi库,它是评分标准的来源。其中,用户清唱的音频片段对应有开始时间戳和结束时间戳,可精确对应至midi库中的一段音符序列,然后根据midi音符与音高的换算公式得出音高序列。可选地,目标歌曲片段midi的音高序列可以预先生成在midi库中。
需要说明的是,步骤s1003与步骤s1001和步骤s1002之间并没有绝对的先后顺序。
步骤s1004,采用本申请实施例的音频信息匹配算法计算两个音高序列的最小距离。
步骤s1005,将最小距离的结果经过换算公式转换为标准得分。
在本申请的一个实施例中,由于步骤s1004中的最小距离是通过累加得到的,因此音高序列越长,计算得到的最小距离的值越大,为了消除这个影响,可以将步骤s1004计算得到的最小距离除以用户音频片段的音高序列长度得到标准得分,进而可以将该标准得分反馈给用户。
在上述步骤s1004中,假设两个音高序列分别为序列p和序列q,其中序列p的长度为m,序列q的长度为n,即p=(p1,p2,...,pi,...,pm);q=(q1,q2,...,qj,...,qn)。那么采用本申请实施例的音频信息匹配算法计算两个音高序列的最小距离的方案如下所述,主要包括下述步骤(1)、步骤(2)和步骤(3):
在步骤(1)中,计算序列p和序列q的距离矩阵和权重矩阵。
在本申请的一个实施例中,距离矩阵中的位置(i,j)表示pi与qj之间的距离d(i,j),若该距离是欧式距离,那么d(i,j)=(pi-qj)2。
在本申请的一个实施例中,权重矩阵是考虑距离矩阵中的元素位置(i,j)与距离矩阵的对角线(即点(1,1)与点(m,n)形成的直线)之间的距离,如果序列p和序列q越接近,则最后计算出的从距离矩阵的起始位置(即点(1,1))到终止位置(即点(m,n))之间的最优路径越靠近对角线,因此对于远离对角线的元素位置,可考虑设置惩罚权重,即元素位置越接近对角线,则对应的权重越接近1,元素位置越远离对角线,则对应的权重越大。
在本申请的一个实施例中,距离矩阵中的位置(i,j)与距离矩阵的对角线之间的距离t(i,j)可以近似为:
在本申请的一个实施例中,权重矩阵中位置(i,j)的计算公式是t(i,j)的平滑修正,即距离矩阵中的位置(i,j)对应的权重w(i,j)可以通过如下公式1来计算:
w(i,j)=[1+t(i,j)×0.025]×[1+log(1+t(i,j)×0.025)]公式1
其中,上述公式1中的数值仅为示例。
在步骤(2)中:根据上述步骤(1)计算得到的距离矩阵和权重矩阵,计算向前累加距离矩阵、向前来源节点矩阵、向后累加距离矩阵和向后来源节点矩阵。
在本申请的一个实施例中,可以从距离矩阵的起始位置和终止位置分别向中间位置回溯来找出最短距离。即本申请实施例中提出了改进的dtw(dynamictimewarping,动态时间归整)算法,可以进行双向计算,以兼顾考虑序列头部匹配和尾部匹配,使得匹配情况更加全面。
在本申请的一个实施例中,在从距离矩阵的起始位置向前计算的过程中,为了加速距离累加的过程并考虑距离矩阵中的元素位置与对角线的偏离程度(即元素位置对应的权重),位置(i,j)的累加距离可以从(i-1,j-1)、(i-1,j-2)和(i-2,j-1)三个位置开始,并且可以定义如下述公式2所示的向前局部判决函数d_forward(i,j),用于表示从距离矩阵的起始位置到距离矩阵中的位置(i,j)的累加距离,并以此得到向前累加距离矩阵。
在本申请的一个实施例中,为了优化计算结果,可以对公式2进行调整,得到如下公式3:
在上述实施例中,从距离矩阵的起始位置向前计算是从距离矩阵的左下角(1,1)开始,每一行从左到右计算,在计算向前累加距离d_forward(i,j)的同时,将d_forward(i,j)的来源节点下标,即(i-1,j-1)、(i-1,j-2)和(i-2,j-1)中的一个,存入向前来源节点矩阵中的(i,j)位置。
在本申请的一个实施例中,在从距离矩阵的终止位置向后计算的过程与前述实施例中向前计算的方案类似,只是计算方向是从距离矩阵的终止位置开始,即从距离矩阵的右上角(m,n)位置开始,(i,j)位置的累加距离可以从(i+1,j+1)、(i+1,j+2)和(i+2,j+1)三个位置开始。并且可以定义如下述公式4所示的向后局部判决函数d_backward(i,j),用于表示从距离矩阵的终止位置到距离矩阵中的位置(i,j)的累加距离,并以此得到向后累加距离矩阵。
在本申请的一个实施例中,为了优化计算结果,可以对公式4进行调整,得到如下公式5:
在上述实施例中,从距离矩阵的终止位置向后计算是从距离矩阵的右上角(m,n)开始,每一行从右到左计算,在计算向后累加距离d_backward(i,j)的同时,将d_backward(i,j)的来源节点下标,即(i+1,j+1)、(i+1,j+2)和(i+2,j+1)中的一个,存入向后来源节点矩阵中的(i,j)位置。
在步骤(3)中:从向前累加距离矩阵和向后累加距离矩阵中获取最小距离和最短路径。
在本申请的一个实施例中,距离矩阵中的任何一个位置(i,j)均可从左下角和右上角开始找到连接到(i,j)的最短路径,其中最短距离计算公式如下述公式6所示:
d_total(i,j)=d(i,j)×w(i,j)+d_forward(i,j)+d_backward(i,j)公式6
基于上述公式6,可以通过如下公式7计算得到最小距离min_dist:
在最小距离对应的位置查找向前来源节点矩阵和向后来源节点矩阵,获取上一个节点的下标,并依次遍历得到向前(从(1,1)到(i,j))和向后(从(m,n)到(i,j))两条路径,合起来即为全局最佳路径。具体地,如图11所示,两个音高序列分别为1101和1102,根据本申请上述实施例的技术方案最终得到的全局最佳路径为1103。
本申请上述实施例的技术方案兼顾考虑了音高序列的头部优先匹配和尾部优先匹配,因此匹配情况更加全面;同时,在计算累积距离时考虑了位置与距离矩阵对角线的偏移量,避免了最后得到的最佳路径大幅偏离距离矩阵的对角线,因此使得序列匹配更具鲁棒性。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的音频片段的匹配方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的音频片段的匹配方法的实施例。
图12示出了根据本申请的一个实施例的音频片段的匹配装置的框图。
参照图12所示,根据本申请的一个实施例的音频片段的匹配装置1200,包括:获取单元1202、构建单元1204、第一处理单元1206和第二处理单元1208。
其中,获取单元1202用于获取第一音频片段对应的第一特征序列和第二音频片段对应的第二特征序列;构建单元1204用于根据所述第一特征序列的长度和所述第二特征序列的长度构建所述第一特征序列与所述第二特征序列之间的距离矩阵,所述距离矩阵中的各个位置表示所述第一特征序列上的一个点与所述第二特征序列上的一个点之间的距离;第一处理单元1206用于计算所述距离矩阵中的起始位置到所述距离矩阵中的目标位置之间的第一累加距离,并计算所述距离矩阵中的终止位置到所述目标位置之间的第二累加距离;第二处理单元1208用于基于所述第一累加距离和所述第二累加距离计算所述第一特征序列与所述第二特征序列之间的最小距离,并根据所述最小距离确定所述第一音频片段与所述第二音频片段之间的匹配度。
在本申请的一些实施例中,第一处理单元1206包括:第一计算单元,用于分别计算所述起始位置到所述距离矩阵中与所述目标位置关联的多个第一候选位置之间的累加距离,所述多个第一候选位置位于所述起始位置与所述目标位置之间;第二计算单元,用于根据所述起始位置到各个所述第一候选位置之间的累加距离,以及各个所述第一候选位置所表示的距离值,计算所述起始位置到所述目标位置之间的多个第一候选累加距离;第一确定单元,用于将所述多个第一候选累加距离中的最小值作为所述第一累加距离。
在本申请的一些实施例中,所述第二计算单元配置为:对所述起始位置到各个所述第一候选位置之间的累加距离与各个所述第一候选位置所表示的距离值进行求和,得到各个所述第一候选位置对应的距离和值,将各个所述第一候选位置对应的距离和值分别作为一个所述第一候选累加距离。
在本申请的一些实施例中,所述第二计算单元配置为:根据各个所述第一候选位置所表示的距离值,以及各个所述第一候选位置对应的权重值,对各个所述第一候选位置所表示的距离值进行加权计算,得到各个所述第一候选位置对应的加权距离值;对所述起始位置到各个所述第一候选位置之间的累加距离与各个所述第一候选位置对应的加权距离值进行求和,得到各个所述第一候选位置对应的距离和值,将各个所述第一候选位置对应的距离和值分别作为一个所述第一候选累加距离。
在本申请的一些实施例中,所述的音频片段的匹配装置1200还包括:第三计算单元,用于计算各个所述第一候选位置与所述距离矩阵的对角线之间的距离,所述对角线是由所述起始位置与所述终止位置形成的直线;根据各个所述第一候选位置与所述对角线之间的距离,计算各个所述第一候选位置对应的权重值。
在本申请的一些实施例中,若所述目标位置的坐标为(i,j),则所述多个第一候选位置的坐标包括:(i-1,j-1)、(i-1,j-x)、(i-x,j-1),其中,x为小于i或j的自然数。
在本申请的一些实施例中,第一处理单元1206包括:第四计算单元,用于分别计算所述终止位置到所述距离矩阵中与所述目标位置关联的多个第二候选位置之间的累加距离,所述多个第二候选位置位于所述目标位置与所述终止位置之间;第五计算单元,用于根据所述终止位置到各个所述第二候选位置之间的累加距离,以及各个所述第二候选位置所表示的距离值,计算所述终止位置到所述目标位置之间的多个第二候选累加距离;第二确定单元,用于将所述多个第二候选累加距离中的最小值作为所述第二累加距离。
在本申请的一些实施例中,若所述目标位置的坐标为(i,j),则所述多个第二候选位置的坐标包括:(i+1,j+1)、(i+1,j+x)、(i+x,j+1),其中,x为自然数。
在本申请的一些实施例中,所述x的值为2。
在本申请的一些实施例中,第二处理单元1208配置为:基于所述第一累加距离、所述第二累加距离和所述目标位置所表示的距离值,计算所述目标位置对应的最小累加距离;从多个所述目标位置对应的最小累加距离中选择最小值作为所述第一特征序列与所述第二特征序列之间的最小距离。
在本申请的一些实施例中,第二处理单元1208配置为:对所述目标位置所表示的距离值、所述第一累加距离和所述第二累加距离进行求和,得到所述目标位置对应的最小累加距离;或
根据所述目标位置所表示的距离值和所述目标位置对应的权重值进行加权计算,得到所述目标位置对应的加权距离值,对所述目标位置对应的加权距离值、所述第一累加距离和所述第二累加距离进行求和,得到所述目标位置对应的最小累加距离。
在本申请的一些实施例中,第二处理单元1208配置为:获取所述第一音频片段与所述第二音频片段的多种特征分别对应的所述第一特征序列和所述第二特征序列之间的最小距离;根据各种所述特征对应的权重和各种所述特征对应的所述第一特征序列和所述第二特征序列之间的最小距离进行加权求和计算,得到所述第一音频片段和所述第二音频片段之间的加权距离值;根据所述第一音频片段和所述第二音频片段之间的加权距离值确定所述第一音频片段和所述第二音频片段之间的匹配度。
在本申请的一些实施例中,基于前述方案,所述多种特征包括:音频片段的音高特征、乐音能量、频率倒谱系数、每帧的均方根能量值。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机系统1300包括中央处理单元(centralprocessingunit,cpu)1301,其可以根据存储在只读存储器(read-onlymemory,rom)1302中的程序或者从存储部分1308加载到随机访问存储器(randomaccessmemory,ram)1303中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在ram1303中,还存储有系统操作所需的各种程序和数据。cpu1301、rom1302以及ram1303通过总线1304彼此相连。输入/输出(input/output,i/o)接口1305也连接至总线1304。
以下部件连接至i/o接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(cathoderaytube,crt)、液晶显示器(liquidcrystaldisplay,lcd)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如lan(localareanetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至i/o接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(cpu)1301执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compactdiscread-onlymemory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除