掌桥专利:专业的专利平台
掌桥专利
首页

音乐相似度计算方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:45:49


音乐相似度计算方法、装置、设备及存储介质

技术领域

本发明涉及人工智能领域,尤其涉及一种音乐相似度计算方法、装置、设备及存储介质。

背景技术

随着互联网的发展,网络搜索成为了人们获取信息的关键渠道,现有的网络搜索方式大多是根据关键字匹配来实现的,基于用户已知的目标信息的关键文字,通过搜索引擎,搜索与关键字匹配的目标信息,从而得到与关键字相似的信息。

但当用户已知的信息是一段抽象的音乐时,现有的搜索系统往往难以做到预期的搜索功能,特别是对于一些有特殊风格的音乐,用户更是无处得知音乐的相关信息,现有的搜索系统对此也无能为力。

发明内容

本发明的主要目的在于解决现有音乐的调式和节奏组合变化多样而难以精确搜索的技术问题。

本发明第一方面提供了一种音乐相似度计算方法,所述音乐相似度计算方法包括:

获取基准音乐对应的基准乐谱和待比对音乐对应的目标乐谱;

提取所述基准乐谱中的第一音程序列与第一时值序列,以及提取所述目标乐谱中的第二音程序列与第二时值序列;

对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列,以及对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列;

分别使用不同长度的所述第一音程子序列与所述第二音程序列进行匹配,得到多个第一匹配结果,以及分别使用不同长度的所述第一时值子序列与所述第二时值序列进行匹配,得到多个第二匹配结果,将所述各第一匹配结果保存为音程序列堆栈以及将所述各第二匹配结果保存为时值序列堆栈;

搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列,以及搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列;

根据所述音程匹配子序列和所述时值匹配子序列,计算所述基准乐谱和所述目标乐谱之间的相似度。

可选的,在本发明第一方面的第一种实现方式中,所述对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列包括:

S11、定义所述第一音程序列进行多尺度分割的起点位置与分割长度,其中,初始起点位置为所述第一音程序列的第一位音程,初始分割长度为一个音程长度;

S12、根据所述起点位置、所述分割长度,对所述第一音程序列进行分割;

S13、判断当前多尺度分割的分割长度是否未达到所述第一音程序列的最大分割长度;

S14、若当前多尺度分割的分割长度未达到所述第一音程序列的最大分割长度,则将当前多尺度分割的分割长度增加一个音程长度,并循环执行S12-S13;

S15、若当前多尺度分割的分割长度达到所述第一音程序列的最大分割长度,则判断当前多尺度分割的起点位置是否为所述第一音程序列的非末位音程;

S16、若当前多尺度分割的起点位置为所述第一音程序列的非末位音程,则将当前多尺度分割的起点位置顺位移动一位音程,并循环执行S12-S15。

可选的,在本发明第一方面的第二种实现方式中,所述对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列包括:

S21、定义所述第一时值序列进行多尺度分割的起点位置与分割长度,其中,初始起点位置为所述第一时值序列的第一位时值,初始分割长度为一个时值长度;

S22、根据所述起点位置、所述分割长度,对所述第一时值序列进行分割;

S23、判断当前多尺度分割的分割长度是否未达到所述第一时值序列的最大分割长度;

S24、若当前多尺度分割的分割长度未达到所述第一时值序列的最大分割长度,则将当前多尺度分割的分割长度增加一个时值长度,并循环执行S22-S23;

S25、若当前多尺度分割的分割长度达到所述第一时值序列的最大分割长度,则判断当前多尺度分割的起点位置是否为所述第一时值序列的非末位时值;

S26、若当前多尺度分割的起点位置为所述第一时值序列的非末位时值,则将当前多尺度分割的起点位置顺位移动一位时值,并循环执行S22-S25。

可选的,在本发明第一方面的第三种实现方式中,所述搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列包括:

提取所述音程序列堆栈中所述各第一音程子序列的匹配结果、序列起始点及序列长度,并以序列起始点为横轴、序列长度为纵轴,构建音程匹配堆栈图;

提取所述音程匹配堆栈图中各点的相邻点的所述第一匹配结果,并根据所述第一匹配结果识别所述音程匹配堆栈图的各顶点;

根据所述音程匹配堆栈图的各顶点,确定对应的所述第一音程子序列为不重复的音程匹配子序列。

可选的,在本发明第一方面的第四种实现方式中,所述搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列包括:

提取所述时值序列堆栈中所述各第一时值子序列的匹配结果、序列起始点及序列长度,并以序列起始点为横轴、序列长度为纵轴,构建时值匹配堆栈图;

提取所述时值匹配堆栈图中各点的相邻点的所述第二匹配结果,并根据所述第二匹配结果识别所述时值匹配堆栈图的各顶点;

根据所述时值匹配堆栈图的各顶点,确定对应的所述第一时值子序列为不重复的时值匹配子序列。

可选的,在本发明第一方面的第五种实现方式中,所述根据所述音程匹配子序列和所述时值匹配子序列,计算所述基准乐谱和所述目标乐谱之间的相似度包括:

对所述各时值匹配子序列中的各序列值求和,得到第一和值;

将所述第一和值与所述第一时值序列中各序列值的第一总和值相除,得到第一比例值,并将所述第一比例值作为所述基准乐谱与所述目标乐谱之间的第一相似度;

计算所述各音程匹配子序列的长度之和,作为第二和值;

将所述第二和值与所述第一时值序列中各序列值第一总和值相除,得到第二比例值,并将所述第二比例值作为所述基准乐谱与所述目标乐谱之间的第二相似度;

根据所述第一相似度和所述第二相似度,采用预置相似度公式计算所述基准乐谱和所述目标乐谱之间的整体相似度。

可选的,在本发明第一方面的第六种实现方式中,在所述提取所述基准乐谱中的第一音程序列与第一时值序列,以及提取所述目标乐谱中的第二音程序列与第二时值序列之前,还包括:

移除所述基准乐谱和所述目标乐谱中的装饰音,得到简化后的基准乐谱和目标乐谱;

分别将简化后的所述基准乐谱和所述目标乐谱中所有的音符设置为四分之一音符;

对简化后的所述基准乐谱和所述目标乐谱进行休止符移除与连续重复音符合并。

本发明第二方面提供了一种音乐相似度计算装置,所述音乐相似度计算装置包括:

获取模块,用于获取基准音乐对应的基准乐谱和待比对音乐对应的目标乐谱;

提取模块,用于提取所述基准乐谱中的第一音程序列与第一时值序列,以及提取所述目标乐谱中的第二音程序列与第二时值序列;

分割模块,用于对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列,以及对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列;

匹配模块,用于分别使用不同长度的所述第一音程子序列与所述第二音程序列进行匹配,得到多个第一匹配结果,以及分别使用不同长度的所述第一时值子序列与所述第二时值序列进行匹配,得到多个第二匹配结果,将所述各第一匹配结果保存为音程序列堆栈以及将所述各第二匹配结果保存为时值序列堆栈;

搜索模块,用于搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列,以及搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列;

计算模块,用于根据所述音程匹配子序列和所述时值匹配子序列,计算所述基准乐谱和所述目标乐谱之间的相似度。

可选的,在本发明第二方面的第一种实现方式中,所述分割模块包括:

第一定义单元,用于定义所述第一音程序列进行多尺度分割的起点位置与分割长度,其中,初始起点位置为所述第一音程序列的第一位音程,初始分割长度为一个音程长度;

第一音程分割单元,用于根据所述起点位置、所述分割长度,对所述第一音程序列进行分割;

第一循环单元,用于判断当前多尺度分割的分割长度是否未达到所述第一音程序列的最大分割长度;若当前多尺度分割的分割长度未达到所述第一音程序列的最大分割长度,则将当前多尺度分割的分割长度增加一个音程长度,并跳转执行所述第一音程分割单元;

第二循环单元,用于若当前多尺度分割的分割长度达到所述第一音程序列的最大分割长度,则判断当前多尺度分割的起点位置是否为所述第一音程序列的非末位音程;

第二音程分割单元,用于若当前多尺度分割的起点位置为所述第一音程序列的非末位音程,则将当前多尺度分割的起点位置顺位移动一位音程,并跳转执行所述第一音程分割单元。

可选的,在本发明第二方面的第二种实现方式中,所述分割模块还包括:

第二定义单元,用于定义所述第一时值序列进行多尺度分割的起点位置与分割长度,其中,初始起点位置为所述第一时值序列的第一位时值,初始分割长度为一个时值长度;

第一时值分割单元,用于根据所述起点位置、所述分割长度,对所述第一时值序列进行分割;

第一循环单元,用于判断当前多尺度分割的分割长度是否未达到所述第一时值序列的最大分割长度;若当前多尺度分割的分割长度未达到所述第一时值序列的最大分割长度,则将当前多尺度分割的分割长度增加一个时值长度,并跳转执行所述第一时值分割单元;

第二时值分割单元,用于若当前多尺度分割的分割长度达到所述第一时值序列的最大分割长度,则判断当前多尺度分割的起点位置是否为所述第一时值序列的非末位时值;

第二时值分割单元,用于若当前多尺度分割的起点位置为所述第一时值序列的非末位时值,则将当前多尺度分割的起点位置顺位移动一位时值,并跳转执行所述第一时值分割单元。

可选的,在本发明第二方面的第三种实现方式中,所述搜索模块具体用于:

提取所述音程序列堆栈中所述各第一音程子序列的匹配结果、序列起始点及序列长度,并以序列起始点为横轴、序列长度为纵轴,构建音程匹配堆栈图;

提取所述音程匹配堆栈图中各点的相邻点的所述第一匹配结果,并根据所述第一匹配结果识别所述音程匹配堆栈图的各顶点;

根据所述音程匹配堆栈图的各顶点,确定对应的所述第一音程子序列为不重复的音程匹配子序列。

可选的,在本发明第二方面的第四种实现方式中,所述搜索模块具体还用于:

提取所述时值序列堆栈中所述各第一时值子序列的匹配结果、序列起始点及序列长度,并以序列起始点为横轴、序列长度为纵轴,构建时值匹配堆栈图;

提取所述时值匹配堆栈图中各点的相邻点的所述第二匹配结果,并根据所述第二匹配结果识别所述时值匹配堆栈图的各顶点;

根据所述时值匹配堆栈图的各顶点,确定对应的所述第一时值子序列为不重复的时值匹配子序列。

可选的,在本发明第二方面的第五种实现方式中,所述计算模块具体用于:

对所述各时值匹配子序列中的各序列值求和,得到第一和值;

将所述第一和值与所述第一时值序列中各序列值的第一总和值相除,得到第一比例值,并将所述第一比例值作为所述基准乐谱与所述目标乐谱之间的第一相似度;

计算所述各音程匹配子序列的长度之和,作为第二和值;

将所述第二和值与所述第一时值序列中各序列值第一总和值相除,得到第二比例值,并将所述第二比例值作为所述基准乐谱与所述目标乐谱之间的第二相似度;

根据所述第一相似度和所述第二相似度,采用预置相似度公式计算所述基准乐谱和所述目标乐谱之间的整体相似度。

可选的,在本发明第二方面的第六种实现方式中,所述音乐相似度计算装置还包括:

预处理模块,用于移除所述基准乐谱和所述目标乐谱中的装饰音,得到简化后的基准乐谱和目标乐谱,并分别将简化后的基准乐谱和目标乐谱中所有的音符设置为四分之一音符,再对简化后的基准乐谱和目标乐谱进行休止符移除与连续重复音符合并。

本发明第三方面提供了一种音乐相似度计算设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述音乐相似度计算设备执行上述的音乐相似度计算方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的音乐相似度计算方法。

本发明提供的技术方案中,通过对获取到的基准乐谱的音程序列及时值序列进行多尺度分割,将分割得到的音程子序列和时值子序列分别与待对比的目标乐谱中提取到的音程序列和时值序列进行匹配,将匹配结果存储分别存储到音程序列堆栈及时值序列堆栈中,然后分别构建音程序列堆栈及时值序列堆栈的匹配堆栈图,并搜索堆栈图中的顶点,得到不重复的音程匹配子序列及时值匹配子序列,最后根据匹配的子序列在总序列中的占比,计算基准乐谱与目标乐谱之间的相似度。本发明通过对特征序列的提取、分割与匹配,使抽象的音乐拥有了可比性,进而满足用户音乐搜索的需求。

附图说明

图1为本发明实施例中音乐相似度计算方法的第一个实施例示意图;

图2为本发明实施例中音乐相似度计算方法一实施例中的序列多尺度分割示意图;

图3为本发明实施例中音乐相似度计算方法一实施例中的二维匹配子序列堆栈示意图;

图4为本发明实施例中音乐相似度计算方法的第二个实施例示意图;

图5为本发明实施例中音乐相似度计算装置的一个实施例示意图;

图6为本发明实施例中音乐相似度计算设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种音乐相似度计算方法、装置、设备及存储介质,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中音乐相似度计算方法的第一个实施例包括:

101、获取基准音乐对应的基准乐谱和待比对音乐对应的目标乐谱;

可以理解的是,本发明的执行主体可以为音乐相似度计算装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

本实施例中,通过对乐谱信息的两两比对来确定旋律的相似度,当用户想要搜索一首乐谱时,只要输入旋律或乐谱的数字信息,作为基准乐谱,令基准乐谱与数据库中大量的待比对乐谱进行两两比对,并计算出各待比对目标乐谱的相似度,最后根据相似度倒叙的方式输出乐谱列表,使用户能够既快速又直观地看出相似度从高到低排列的各匹配乐谱的相关信息,从而确定所输入旋律或乐谱的预期搜索结果。

本实施例中,待比对的目标乐谱是从预置的乐谱数据库中获取到的,在进行乐谱比对时,会对乐谱数据库中各乐谱进行特征提取及标准化处理,从而构建各乐谱对应的特征索引,再利用各乐谱对应的特征索引,与基准乐谱进行特征比对。这样做极大地提高了搜索效率,使用户能够更快地得到预期的搜索结果。

102、提取所述基准乐谱中的第一音程序列与第一时值序列,以及提取所述目标乐谱中的第二音程序列与第二时值序列;

本实施例中,在进行基准乐谱和目标乐谱的比对时,主要的依据是比对两个乐谱旋律之间音程及时值的相似度。使用音程表示旋律的音高特征,相邻音符间的时值比率作为节奏特征,旋律音程可以消除调性的不同所带来的区别,相对时值可以消除节奏不同所带来的区别,这两个特征足以充分地识别出不同音乐之间区别,从而判断两个音乐之间的相似度。

本实施例中,通过对基准乐谱和目标乐谱中各音符的相关信息进行计算处理,可以得出各乐谱的音程序列及时值序列。其中音程序列通过计算相邻音符的音高差值求得,而时值序列则是各音符的绝对时值序列,例如,从乐谱中提取到的音高序列为<74,79,71,74,69,71,67,71,62>,则音程序列为<5,-8,3,-5,2,-4,4,-9>,时值序列为<0.5,0.5,0.25,0.25,0.25,0.25,0.5,0.5,1>。提取到音程序列及时值序列后,将基准乐谱的各序列进行多尺度分割得到多个不同长度的子序列,令各子序列分别与目标乐谱的对应序列进行比对,提取出匹配的公共子序列,从而计算相似度。本实施例将抽象的旋律数字化成序列的形式,为乐谱之间创造了可比性。

103、对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列,以及对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列;

本实施例中,多尺度分割是指将旋律特征序列分割成不同长度的子序列,将这些子序列作为搜索单元,分别与目标旋律特征序列做比对,以确定其中匹配的子序列。

为了便于理解本实施例的多尺度分割,下面参照图2进行举例说明,图2为本发明实施例中音乐相似度计算方法一实施例的序列多尺度分割示意图。假设一个旋律特征序列为S:

S=(v

其中S表示S的长度,v

其中1≤k≤|S|-n+1

图2中所示的特征序列由ABCDE组成,那么

104、分别使用不同长度的所述第一音程子序列与所述第二音程序列进行匹配,得到多个第一匹配结果,以及分别使用不同长度的所述第一时值子序列与所述第二时值序列进行匹配,得到多个第二匹配结果,将所述各第一匹配结果保存为音程序列堆栈以及将所述各第二匹配结果保存为时值序列堆栈;

本实施例中,分别将基准乐谱的各音程子序列与目标乐谱的音程序列进行匹配,以及分别将基准乐谱的各时值子序列与目标乐谱的时值序列进行匹配,若音程序列包含某一条音程子序列则可以判断这条音程子序列与目标乐谱的音程序列匹配成功,同理时值序列亦是如此。为了降低序列匹配的时间复杂度,本实施例优选Sunday算法来高效地搜索最长公共子序列,下面举例说明Sunday算法的使用方法:假设要在主序列中搜索子序列,算法将从前往后开始匹配,先将主序列和子序列左对齐,开始逐个字符匹配,当发现有不匹配字符时,关注的是主序列中参加匹配的最末位字符的下一位字符,如果该字符没有在子序列中出现则直接跳过,即移动位数=子序列长度+1。移位之后循环以上步骤,当发现的不匹配字符在子序列中也存在时,将该字符与主序列中对应的字符对齐,继续循环以上步骤,直至匹配成功或主序列再无可匹配的字符为止。本实施例所优选的算法大大地减少了字符匹配的时间复杂度,提高了乐谱搜索的效率。

本实施例中,假设序列S

其中,

本实施例将各序列的匹配结果记录下来,并生成对应的序列堆栈,为进一步做相似性分析提供了有效的数据支持。

105、搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列,以及搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列;

在本实施例中,以S

在本实施例中,根据音程序列堆栈及时值序列堆栈可以计算出二维匹配子序列堆栈图的顶点,其中,顶点的确定方法为:当且仅当a

106、根据所述音程匹配子序列和所述时值匹配子序列,计算所述基准乐谱和所述目标乐谱之间的相似度。

本实施例中,在计算音程相似性时,设计出时值调节器模块,以时值作为权重将匹配的音程序列进行扩展,通过时值调节器可以求得扩展后的音程序列子串匹配顶点序列。最后,按照以上的音乐相似度计算方法计算预置乐谱数据库中的每一个乐谱与基准乐谱之间的相似度,并进行排序,最后输出乐谱数据库中各乐谱相似度的倒序序列,供用户参考选择。

可选的,在步骤101之前,还包括:

移除所述基准乐谱和所述目标乐谱中的装饰音,得到简化后的基准乐谱和目标乐谱;

分别将简化后的基准乐谱和目标乐谱中所有的音符设置为四分之一音符;

对简化后的基准乐谱和目标乐谱进行休止符移除与连续重复音符合并。

本实施例中,对旋律进行标准化处理,只保留主旋律部分,以减少不必要的影响,其中包括简化装饰音,归并相邻重复音符及去除休止符等。在乐谱比对时,装饰音演奏法会影响两首乐曲的局部相似性评测,装饰音包括颤音、波音、回音、滑音、倚音等,当实际输入的电子乐谱为MIDI文件格式时,其已经将装饰音按演奏法形式记录,通过对音符时值小于1/16音符(1/16音符的三连音除外)检测识别出装饰音,并将其简化。

可选的,在步骤101中,采用以下方式提取第一音程序列和第二音程序列:

提取所述基准乐谱中的第一音高序列及所述目标乐谱中的第二音高序列;

计算第一音高序列中相邻音符之间的音高差值,得到第一音程序列,以及计算第二音高序列中相邻音符之间的音高差值,得到第二音程序列。

可选的,在一实施例中,步骤103所述对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列包括:

S11、定义所述第一音程序列进行多尺度分割的起点位置与分割长度,其中,初始起点位置为所述第一音程序列的第一位音程,初始分割长度为一个音程长度;

S12、根据所述起点位置、所述分割长度,对所述第一音程序列进行分割;

S13、判断当前多尺度分割的分割长度是否未达到所述第一音程序列的最大分割长度;

S14、若当前多尺度分割的分割长度未达到所述第一音程序列的最大分割长度,则将当前多尺度分割的分割长度增加一个音程长度,并循环执行S12-S13;

S15、若当前多尺度分割的分割长度达到所述第一音程序列的最大分割长度,则判断当前多尺度分割的起点位置是否为所述第一音程序列的非末位音程;

可选的,在一实施例中,步骤103所述对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列包括:

S21、定义所述第一时值序列进行多尺度分割的起点位置与分割长度,其中,初始起点位置为所述第一时值序列的第一位时值,初始分割长度为一个时值长度;

S22、根据所述起点位置、所述分割长度,对所述第一时值序列进行分割;

S23、判断当前多尺度分割的分割长度是否未达到所述第一时值序列的最大分割长度;

S24、若当前多尺度分割的分割长度未达到所述第一时值序列的最大分割长度,则将当前多尺度分割的分割长度增加一个时值长度,并循环执行S22-S23;

S25、若当前多尺度分割的分割长度达到所述第一时值序列的最大分割长度,则判断当前多尺度分割的起点位置是否为所述第一时值序列的非末位时值;

S26、若当前多尺度分割的起点位置为所述第一时值序列的非末位时值,则将当前多尺度分割的起点位置顺位移动一位时值,并循环执行S22-S25。

可选的,在一实施例中,步骤105所述搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列包括:

提取所述音程序列堆栈中所述各第一音程子序列的匹配结果、序列起始点及序列长度,并以序列起始点为横轴、序列长度为纵轴,构建音程匹配堆栈图;

提取所述音程匹配堆栈图中各点的相邻点的所述第一匹配结果,并根据所述第一匹配结果识别所述音程匹配堆栈图的各顶点;

根据所述音程匹配堆栈图的各顶点,确定对应的所述第一音程子序列为不重复的音程匹配子序列。

可选的,在一实施例中,步骤105所述搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列包括:

提取所述时值序列堆栈中所述各第一时值子序列的匹配结果、序列起始点及序列长度,并以序列起始点为横轴、序列长度为纵轴,构建时值匹配堆栈图;

提取所述时值匹配堆栈图中各点的相邻点的所述第二匹配结果,并根据所述第二匹配结果识别所述时值匹配堆栈图的各顶点;

根据所述时值匹配堆栈图的各顶点,确定对应的所述第一时值子序列为不重复的时值匹配子序列。

本发明实施例中,通过对获取到的基准乐谱的音程序列及时值序列进行多尺度分割,将分割得到的音程子序列和时值子序列分别与待对比的目标乐谱中提取到的音程序列和时值序列进行匹配,将匹配结果存储分别存储到音程序列堆栈及时值序列堆栈中,然后分别构建音程序列堆栈及时值序列堆栈的匹配堆栈图,并搜索堆栈图中的顶点,得到不重复的音程匹配子序列及时值匹配子序列,最后根据匹配的子序列在总序列中的占比,计算基准乐谱与目标乐谱之间的相似度。本实施例通过对特征序列的提取、分割与匹配,使抽象的音乐拥有了可比性,进而满足用户音乐搜索的需求。

请参阅图4本发明实施例中音乐相似度计算方法的第二个实施例包括:

201、获取基准音乐对应的基准乐谱和待比对音乐对应的目标乐谱;

202、提取所述基准乐谱中的第一音程序列与第一时值序列,以及提取所述目标乐谱中的第二音程序列与第二时值序列;

203、对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列,以及对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列;

204、分别使用不同长度的所述第一音程子序列与所述第二音程序列进行匹配,得到多个第一匹配结果,以及分别使用不同长度的所述第一时值子序列与所述第二时值序列进行匹配,得到多个第二匹配结果,将所述各第一匹配结果保存为音程序列堆栈以及将所述各第二匹配结果保存为时值序列堆栈;

205、搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列,以及搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列;

206、对所述各时值匹配子序列中的各序列值求和,得到第一和值;

207、将所述第一和值与所述第一时值序列中各序列值的第一总和值相除,得到第一比例值,并将所述第一比例值作为所述基准乐谱与所述目标乐谱之间的第一相似度;

208、计算所述各音程匹配子序列的长度之和,作为第二和值;

209、将所述第二和值与所述第一时值序列中各序列值第一总和值相除,得到第二比例值,并将所述第二比例值作为所述基准乐谱与所述目标乐谱之间的第二相似度;

210、根据所述第一相似度和所述第二相似度,采用预置相似度公式计算所述基准乐谱和所述目标乐谱之间的整体相似度。

本实施例中,在计算音程相似性时,设计出时值调节器模块,以时值作为权重将匹配的音程序列进行扩展,通过时值调节器可以求得扩展后的音程序列子串匹配顶点序列。下面说明时值调节器的算法原理:假设音程序列堆栈的顶点集为peaks

peaks′

其中两首音乐的音高序列相似度为A:

节奏的相似度为B:

最后,对相似度A和相似度B设置不同的权重值,根据时值调节器算法进一步计算音乐的整体相似度,例如A的权重值为0.7,B的权重值为0.3,计算出A=0.2,B=0.7,则整体相似度为(0.7*0.2+0.3*0.7)/2=0.175,表示基准音乐和目标音乐的整体相似度为17.5%。

本发明实施例中,首先对匹配到的时值子序列中的序列值进行求和计算,再与基准乐谱的第一时值序列中的各序列值的总和进行相除,得到一个比例值,然后再计算匹配到的各音程洗序列的长度之和,同样与基准乐谱的第一时值序列中的各序列值的总和进行相除,得到另外一个比例值,再根据两个比例值,按不同的权重进行合并计算,得到基准乐谱与目标乐谱之间的整体相似度。本实施例通过计算匹配子序列在整个序列中的占比来确定匹配度,从而确定两个音乐之间的相似程度,使抽象音乐获得了可比较性。

上面对本发明实施例中音乐相似度计算方法进行了描述,下面对本发明实施例中音乐相似度计算装置进行描述,请参阅图3,本发明实施例中音乐相似度计算装置一个实施例包括:

获取模块301,获取基准音乐对应的基准乐谱和待比对音乐对应的目标乐谱;

提取模块302,用于提取所述基准乐谱中的第一音程序列与第一时值序列,以及提取所述目标乐谱中的第二音程序列与第二时值序列;

分割模块303,用于对所述第一音程序列进行多尺度分割,得到多个不同长度的第一音程子序列,以及对所述第一时值序列进行多尺度分割,得到多个不同长度的第一时值子序列;

匹配模块304,分别使用不同长度的所述第一音程子序列与所述第二音程序列进行匹配,得到多个第一匹配结果,以及分别使用不同长度的所述第一时值子序列与所述第二时值序列进行匹配,得到多个第二匹配结果,将所述各第一匹配结果保存为音程序列堆栈以及将所述各第二匹配结果保存为时值序列堆栈;

搜索模块305,用于搜索所述音程序列堆栈的各顶点,得到不重复的所有音程匹配子序列,以及搜索所述时值序列堆栈的各顶点,得到不重复的所有时值匹配子序列;

计算模块306,用于根据所述音程匹配子序列和所述时值匹配子序列,计算所述基准乐谱和所述目标乐谱之间的相似度。

本发明实施例中,通过对获取到的基准乐谱的音程序列及时值序列进行多尺度分割,将分割得到的音程子序列和时值子序列分别与待对比的目标乐谱中提取到的音程序列和时值序列进行匹配,将匹配结果存储分别存储到音程序列堆栈及时值序列堆栈中,然后分别构建音程序列堆栈及时值序列堆栈的匹配堆栈图,并搜索堆栈图中的顶点,得到不重复的音程匹配子序列及时值匹配子序列,最后根据匹配的子序列在总序列中的占比,计算基准乐谱与目标乐谱之间的相似度。本实施例通过对特征序列的提取、分割与匹配,使抽象的音乐拥有了可比性,进而满足用户音乐搜索的需求。

上面图5从模块化功能实体的角度对本发明实施例中的音乐相似度装置进行详细描述,下面从硬件处理的角度对本发明实施例中音乐相似度设备进行详细描述。

图6是本发明实施例提供的一种音乐相似度设备的结构示意图,该音乐相似度设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对音乐相似度设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在音乐相似度设备500上执行存储介质530中的一系列指令操作。

音乐相似度设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6示出的音乐相似度设备结构并不构成对音乐相似度设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种音乐相似度设备,所述音乐相似度设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述音乐相似度方法的步骤。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述音乐相似度方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 音乐相似度计算方法、装置、设备及存储介质
  • 文本相似度计算方法、装置、电子设备及存储介质
技术分类

06120113045404