CN105718486A - 在线哼唱检索方法及系统 - Google Patents
在线哼唱检索方法及系统 Download PDFInfo
- Publication number
- CN105718486A CN105718486A CN201410735790.8A CN201410735790A CN105718486A CN 105718486 A CN105718486 A CN 105718486A CN 201410735790 A CN201410735790 A CN 201410735790A CN 105718486 A CN105718486 A CN 105718486A
- Authority
- CN
- China
- Prior art keywords
- humming
- notes
- sequence
- matching
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Auxiliary Devices For Music (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及音乐检索技术领域,公开了一种在线哼唱检索方法及系统,该方法包括:接收用户哼唱信息;实时对用户哼唱信息进行检索,得到匹配结果;所述实时对用户哼唱信息进行检索包括实时提取所述哼唱信息的音频特征的过程,以及实时将所述音频特征与歌曲库中歌曲的音频特征进行匹配的过程;所述音频特征为:旋律特征、或者旋律特征及谱特征;判断所述匹配结果是否可信;如果是,则停止检索,并根据所述匹配结果获取检索结果;否则,判断用户哼唱是否结束;如果用户哼唱未结束,则继续执行实时对用户哼唱信息进行检索的步骤;如果用户哼唱已结束,则根据所述用户当前已有哼唱信息获取检索结果。利用本发明,可以缩短用户等待检索结果的时间,大大改善用户体验。
Description
技术领域
本发明涉及音乐检索技术领域,具体涉及一种在线哼唱检索方法及系统。
背景技术
随着信息技术和网络技术的发展,音乐库规模呈几何级数增长,音乐歌曲的快速检索也成为新的研究热点。传统的音乐检索方法主要基于文本关键字检索,根据用户输入的歌曲名、歌手、流派、歌词等文本信息进行相关歌曲检索。而当用户只能哼唱出歌曲某一片段,但无法提供确切的歌曲名、歌手等文本信息时,传统的音乐检索系统显然无法满足这样的检索需求。为此,研究人员提出了音乐哼唱检索技术,即根据用户哼唱的歌曲片断,从音乐库中挑选相应的歌曲。
然而现有的哼唱检索方案都是离线式的,即在用户哼唱结束后才做音乐库检索,那么用户就需等待一段时间系统才能够返回结果;且在大部分情况下,用户自身并不知道需要哼唱多久才能让系统给出较为正确的检索结果,用户哼唱时间越长,系统响应时间就越长。
发明内容
本发明实施例提供一种在线哼唱检索方法及系统,以解决现有的离线哼唱检索方案用户等待时间较长,体验差的问题。
为此,本发明提供如下技术方案:
一种在线哼唱检索方法,包括:
接收用户哼唱信息;
实时对用户哼唱信息进行检索,得到匹配结果;所述实时对用户哼唱信息进行检索包括实时提取所述哼唱信息的音频特征的过程,以及实时将所述音频特征与歌曲库中歌曲的音频特征进行匹配的过程;所述音频特征为:旋律特征、或者旋律特征及谱特征;
判断所述匹配结果是否可信;
如果是,则停止检索,并根据所述匹配结果获取检索结果;
否则,判断用户哼唱是否结束;
如果用户哼唱未结束,则继续执行实时对用户哼唱信息进行检索的步骤;
如果用户哼唱已结束,则根据所述用户当前已有哼唱信息获取检索结果。
优选地,实时提取所述哼唱信息的旋律特征的过程包括::
对于首段哼唱,在用户哼唱第一设定时间或第一设定个数的音符后,提取已有哼唱信息的基频信息,并将所述基频信息转换为首段哼唱对应的音符序列和/或基频包络特征;
对于非首段哼唱,每隔第二设定时间或第二设定个数的音符后,提取当前已有哼唱信息中新的基频信息;然后将上一次检索处理时已有的音符序列中最后一个音符对应的基频信息与所述新的基频信息拼接,并将拼接后的基频信息作为本次提取的基频信息;将所述本次提取的基频信息转换为当前段哼唱对应的音符序列和/或基频包络特征。
优选地,所述实时将所述旋律特征与歌曲库中歌曲的旋律特征进行匹配的过程包括:
采用序列匹配算法将所述当前已有哼唱信息对应的音符序列与模板库中各模板的音符序列进行匹配,得到匹配距离;
选取最小的匹配距离作为匹配结果。
优选地,对于首段哼唱和非首段哼唱,采用不同的方法计算所述匹配距离,具体包括:
对于首段哼唱,采用编辑距离算法计算首段哼唱对应的音符序列与模板的音符序列的编辑距离矩阵,得到匹配距离,并且在计算所述匹配距离时,待匹配的哼唱信息对应的音符序列的最后一个音符不参与匹配过程;
对于非首段哼唱,根据上一段哼唱实时匹配时计算得到的距离矩阵确定当前段哼唱对应的音符序列与模板的音符序列在计算编辑距离时在所述模板的音符序列上的起始点;
根据所述起始点对当前段哼唱的音符序列对应的编辑距离矩阵进行边界初始化;
更新所述编辑距离矩阵;
根据更新后的编辑距离矩阵获取当前已有哼唱的音符序列与所述模板的音符序列之间最小的距离作为两者间的匹配距离;
对于首段哼唱和非首段哼唱,在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
优选地,实时提取所述哼唱信息的旋律特征的过程还包括:
剔除上一次检索处理时已有的音符序列中最后一个音符,,然后与本次基频信息转换得到的音符序列拼接,得到当前已有哼唱对应的音符序列;
将上一次检索处理时已有的基频包络特征与本次基频信息转换得到的基频包络特征拼接,得到当前已有哼唱对应的基频包络特征;
对于首段哼唱和非首段哼唱,采用相同的方法计算所述匹配距离,并且在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
优选地,实时将所述旋律特征与歌曲库中歌曲的旋律特征进行匹配的过程包括:
采用序列匹配算法将当前已有哼唱对应的音符序列与模板库中各模板的音符序列进行匹配,得到第一匹配距离;
利用动态时间规整算法将当前已有哼唱对应的基频包络特征与模板库中各模板的基频包络特征进行匹配,得到第二匹配距离;
对所述第一匹配距离和所述第二匹配距离进行融合,得到第三匹配距离;
选取最小的第三匹配距离作为匹配结果。
一种在线哼唱检索系统,包括:
接收模块,用于接收用户哼唱信息;
实时检索模块,实时对用户哼唱信息进行检索,得到匹配结果;所述实时检索模块包括:特征提取模块及匹配模块;
所述特征提取模块,用于实时提取所述哼唱信息的音频特征;
所述匹配模块,用于实时将所述特征提取模块提取的音频特征与歌曲库中歌曲的音频特征进行匹配,得到匹配结果;所述音频特征为:旋律特征、或者旋律特征及谱特征;
第一判断模块,用于判断所述匹配结果是否可信;如果是,则通知所述实时检索模块停止检索;否则,触发第二判断模块判断用户哼唱是否结束;
检索结果获取模块,用于在所述第一判断模块判断所述匹配结果后,根据所述匹配结果获取检索结果;
所述第二判断模块,用于判断用户哼唱是否结束;如果是,则通知所述检索结果获取模块根据所述用户当前已有哼唱信息获取检索结果;否则通知所述实时检索模块继续执行实时对用户哼唱信息进行检索的操作。
优选地,所述特征提取模块包括:
基频信息获取单元,用于对于首段哼唱,在用户哼唱第一设定时间或第一设定个数的音符后,提取已有哼唱信息的基频信息;对于非首段哼唱,每隔第二设定时间或第二设定个数的音符后,提取当前已有哼唱信息中新的基频信息;
信息转换单元,用于将所述基频信息获取单元提取的基频信息转换为音符序列和/或基频包络特征;并且对于首段哼唱,将已有哼唱信息的基频信息转换为首段哼唱对应的音符序列和/或基频包络特征;对于非首段哼唱,将上一次检索处理时已有的音符序列中最后一个音符对应的基频信息与所述新的基频信息拼接,并将拼接后的基频信息作为本次提取的基频信息,然后将所述本次提取的基频信息转换为当前段哼唱对应的音符序列和/或基频包络特征。
优选地,所述匹配模块包括:
计算单元,用于采用序列匹配算法将所述当前已有哼唱信息对应的音符序列与模板库中各模板的音符序列进行匹配,得到匹配距离;
匹配结果选取单元,用于选取最小的匹配距离作为匹配结果。
优选地,所述计算单元对于首段哼唱和非首段哼唱,采用不同的方法计算所述匹配距离,具体包括:
对于首段哼唱,采用编辑距离算法计算首段哼唱对应的音符序列与模板的音符序列的编辑距离矩阵,得到匹配距离,并且在计算所述匹配距离时,待匹配的哼唱信息对应的音符序列的最后一个音符不参与匹配过程;
对于非首段哼唱,根据上一段哼唱实时匹配时计算得到的距离矩阵确定当前段哼唱对应的音符序列与模板的音符序列在计算编辑距离时在所述模板的音符序列上的起始点;
根据所述起始点对当前段哼唱的音符序列对应的编辑距离矩阵进行边界初始化;
更新所述编辑距离矩阵;
根据更新后的编辑距离矩阵获取当前已有哼唱的音符序列与所述模板的音符序列之间最小的距离作为两者间的匹配距离;
对于首段哼唱和非首段哼唱,在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
优选地,所述特征提取模块还包括:
第一拼接单元,用于剔除上一次检索处理时已有的音符序列中最后一个音符,然后与本次基频信息转换得到的音符序列拼接,得到当前已有哼唱对应的音符序列;
第二拼接单元,用于将上一次检索处理时已有的基频包络特征与本次基频信息转换得到的基频包络特征拼接,得到当前已有哼唱对应的基频包络特征;
所述计算单元对于首段哼唱和非首段哼唱,采用相同的方法计算所述匹配距离,并且在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
优选地,所述匹配模块包括:
第一匹配单元,用于采用序列匹配算法将当前已有哼唱对应的音符序列与模板库中各模板的音符序列进行匹配,得到第一匹配距离;
第二匹配单元,用于利用动态时间规整算法将当前已有哼唱对应的基频包络特征与模板库中各模板的基频包络特征进行匹配,得到第二匹配距离;
融合单元,用于对所述第一匹配距离和所述第二匹配距离进行融合,得到第三匹配距离;
融合结果选取单元,用于选取最小的第三匹配距离作为匹配结果。
本发明实施例提供的在线哼唱检索方法及系统,将音频特征提取及匹配均放在用户哼唱过程中进行在线处理,从而能够在用户哼唱过程中自动返回结果,解决了现有哼唱检索系统存在的时间滞后问题,缩短了用户等待检索结果的时间,大大改善了用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本发明实施例在线哼唱检索方法的流程图;
图2是本发明实施例中对于首段哼唱进行实时匹配时,编辑距离计算时不同起始点的示意图;
图3是本发明实施例在线哼唱检索系统的一种结构示意图;
图4是本发明实施例中特征提取模块的一种结构示意图;;
图5是本发明实施例中特征提取模块的另一种结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
本发明实施例供一种在线哼唱检索方法,如图1所示,是该方法的流程图,包括以下步骤:
步骤101,接收用户哼唱信息。
步骤102,实时对用户哼唱信息进行检索,得到匹配结果。
所述实时对用户哼唱信息进行检索的过程包括实时提取所述哼唱信息的音频特征的过程、以及实时将所述音频特征与歌曲库中歌曲的音频特征进行匹配的过程。所述音频特征为:旋律特征、或者旋律特征及谱特征。
所述旋律特征可用音符序列或音高曲线(即基频包络)的形式表示,因此,在旋律特征提取过程中,可以只提取哼唱信息的音符序列或基频包络特征,也可以同时提取这两者。
相应地,在旋律特征匹配时,可以单独采用音符序列或基频包络进行匹配,也可以采用两种匹配相融合的方式。比如,先采用音符序列进行匹配,得到第一匹配结果,然后再根据基频包络的匹配结果对第一匹配结果进行重排序,然后选取排序后最优的匹配结果对应的模板作为检索结果。再比如,采用序列匹配算法将当前已有哼唱对应的音符序列与模板库中各模板的音符序列进行匹配,得到第一匹配距离;利用动态时间规整算法将当前已有哼唱对应的基频包络特征与模板库中各模板的基频包络特征进行匹配,得到第二匹配距离;对所述第一匹配距离和所述第二匹配距离进行融合,得到第三匹配距离;选取最小的第三匹配距离作为匹配结果。当然,也可以采用其它融合方式,对此本发明实施例不做限定。
为了描述方便,下面以对音符序列进行匹配为例进行详细说明。
通常,在离线情况下,旋律特征的提取过程如下:
(1)提取所述哼唱歌曲的基频序列
基频反映说话人声带振动的频率,一般来说,音调越高则基频越大。基频提取有较成熟的算法,如自相关基频估计、平均幅度差函数法、谐波法等。如在自相关法基频估计时,首先对连续语音信号进行加窗分帧,通常取两个基频周期以上。然后计算每一帧的自相关函数,并获取该自相关函数的峰值点位置。最后根据该峰值点位置获得基频序列。
(2)基频特征变换
基频序列反映了哼唱时音调变化的走势,却不能被人耳直接感知。为了提取更符合人耳的感知和音乐原理的特征,可对提取的基频序列进行分段和量化,获得具有一定音高和时长的音符序列。具体地,可以对基频序列进行音符分割,根据静音段位置及基频值变化幅度确定音符边界。然后使用相邻音符之间音高差作为当前音符的音高值。进一步按照十二平均律将所述音高值转化到以半音程为单位的音高值。
由于在本发明实施例中,需要实时提取用户哼唱信息的旋律特征,因此为了提高实时处理速度并保证实时提取的旋律特征的正确性,可以对首段哼唱和非首段哼唱采用不同的处理方式,具体如下:
对于首段哼唱,在用户哼唱第一设定时间(为了描述方便,将其记为T)或第一设定个数(为了描述方便,将其记为K)的音符后,提取已有哼唱信息的基频信息,并将所述基频信息转换为首段哼唱对应的音符序列和基频包络特征。
对于非首段哼唱,每隔第二设定时间(为了描述方便,将其记为S)或第二设定个数(为了描述方便,将其记为P)的音符后,提取当前已有哼唱信息中新的基频信息;然后将上一次检索处理时已有的音符序列中最后一个音符对应的基频信息与所述新的基频信息拼接,并将拼接后的基频信息作为本次提取的基频信息;将所述本次提取的基频信息转换为当前段哼唱对应的音符序列和基频包络特征。
进一步地,在得到当前段哼唱对应的音符序列和基频包络特征后,还可以将其各自与上一次检索处理时所使用的音频序列和音频包括特征进行拼接,得到当前已有哼唱对应的音符序列和音频包络特征。具体地,剔除上一次检索处理时已有的音符序列中最后一个音符,然后与本次基频信息转换得到的音符序列拼接,得到当前已有哼唱对应的音符序列;将上一次检索处理时已有的基频包络特征与本次基频信息转换得到的基频包络特征拼接,得到当前已有哼唱对应的基频包络特征。
上述拼接处理过程中,剔除上一次得到的音符序列中最后一个音符而保留其对应的基频信息,并将该基频信息与当前提取的基频信息拼接起来,提取其音符序列。这样做可以保持提取的每个音符的连续性,避免将处于相邻两段音频连接处的音符切分为两个音符。
在将所述旋律特征与歌曲库中歌曲的旋律特征进行匹配时,对于音符序列表示的旋律特征,可选用序列匹配算法如编辑距离算法(EditDistance,ED)、最长公共子序列算法(LongestCommonSub-sequence)等。
下面以采用编辑距离算法为例详细说明对音符特征进行匹配的详细过程,主要包括以下步骤:
1)计算当前已有哼唱信息对应的音符序列与音乐库中模板的音符序列的编辑距离。
由于在每次旋律特征提取过程中,不仅可以获得当前段哼唱对应的音符序列,还可以将当前段的音符序列与之前已有哼唱对应的音符序列进行拼接,得到当前已有哼唱对应的音符序列和音频包络特征。因此,在实际应用中,针对首段哼唱和非首段哼唱,可以采用相同方法计算当前已有哼唱信息对应的音符序列与音乐库中模板的音符序列的编辑距离。
当然,为了进一步提高实时检索效率,针对首段哼唱和非首段哼唱,还可以采用不同方法计算当前已有哼唱信息对应的音符序列与音乐库中模板的音符序列的编辑距离,以充分利用上一次计算得到的结果,减少运算量。具体计算过程将在后面详细说明。
2)根据编辑距离,计算匹配距离。
具体地,将上述编辑距离进行归一化,得到匹配距离,匹配距离越小,则匹配程度越好。匹配距离的计算可以采用如下公式:
其中,D1表示用户哼唱的音符序列与模板的音符序列的编辑距离最小的模板间的编辑距离;Di表示编辑距离从小到大排序后排在第i个的模板的音符序列与用户哼唱的音符序列的编辑距离;选取编辑距离从小到大排序后前n个模板作为候选模板,topn表示候选模板的个数。
3)选取最小的匹配距离作为匹配结果。
需要说明的是,谱特征的提取与匹配过程与上述旋律特征的提取与匹配过程类似,在此不再详细说明。另外,在同时对旋律特征和谱特征进行匹配时,可以将旋律特征的匹配结果作为主要参考结果,而将谱特征的匹配结果作为辅助参考结果,根据这两个匹配结果确定最终的匹配结果。比如:可以对这两个匹配结果赋予不同的权值,选取加权后最小的匹配距离作为最终匹配结果;或者可以先进行旋律特征匹配,得到旋律特征的匹配结果,然后再根据谱特征的匹配结果对旋律特征的匹配结果进行重排序,选取排序后最优的匹配结果。
步骤103,判断所述匹配结果是否可信。如果是,则执行步骤104;否则,执行步骤105。
具体地,可以预先设置匹配结果阈值,如果所述匹配结果小于该阈值,则确定匹配结果可信,否则匹配结果不可信。
步骤104,停止检索,并根据所述匹配结果获取检索结果。
将匹配结果对应的模板作为检索结果输出。
步骤105,判断用户哼唱是否结束。如果未结束,则返回步骤102,继续执行实时对用户哼唱信息进行检索的步骤;否则,执行步骤106。
步骤106,根据所述用户当前已有哼唱信息获取检索结果。
需要说明的是,如果判断结果为用户哼唱已结束,此时可以有两种情况。一种情况是用户哼唱结束的时间点与上一段哼唱的结束时间点重合,此时,已经得到用户哼唱的所有音频对应的音符序列的匹配结果,不需要再进行新的特征提取及匹配过程,直接根据上一段哼唱结束后得到的匹配结果获取检索结果即可。另一种情况是用户哼唱结束的时间点在上一段哼唱的结束时间点之后,此时,仍有一段哼唱的音符序列需要进行新的特征提取及匹配过程,然后再根据匹配结果得到检索结果。
另外,需要说明的是,在本发明另一实施例中,还可以采用融合方式,比如,先采用音符序列进行匹配,得到第一匹配结果,然后再根据基频包络的匹配结果对第一匹配结果进行重排序,然后选取排序后最优的匹配结果对应的模板作为检索结果。当然,还可以有其它融合方式,对此本发明实施例不做限定。
前面提到,为了进一步提高检索效率,在本发明实施例中,可以针对首段哼唱和非首段哼唱,采用不同方法计算当前已有哼唱信息对应的音符序列与音乐库中模板的音符序列的编辑距离,
可以采用不同方法计算当前已有哼唱信息对应的音符序列与音乐库中模板的音符序列的编辑距离,具体处理过程如下:
对于首段哼唱进行实时匹配时,设哼唱输入的首段K个音符序列为Q={q1,...,qi,...qK},其中,表示音符音高,表示音符时长。某一模板的音符序列为X={x1,...,xi,...xN},其中,表示音符音高,表示音符时长,N表示该模板的音符序列长度。设D是(K+1)×(N+1)阶距离矩阵,D(i,j)记录哼唱输入子音符序列Qi={q1,q2,...,qi}和模板的子音符序列之间的最小编辑距离。编辑距离计算过程如下:
a)距离矩阵D边界初始化,具体公式如下:
D(0,j)=0(2)
D(i,0)=i*insert_penalty(3)
其中,上式(2)表示的初始化条件容许输入哼唱可以从模板歌曲的任意时间位置开始;insert_penalty是输入哼唱的音符序列相对于模板的音符序列多插入一个音符的惩罚,其值可根据经验或大量实验预先设定。
b)更新距离矩阵
距离矩阵更新采用动态规划算法,也就是传统的编辑距离计算。
其中,为音符qi和音符xj之间的距离;wq和wd分别是计算音符距离时音符音高差和时长差的权重;delete_penalty是输入哼唱删除一个音符的惩罚,其值可根据经验或大量实验预先设定。
c)获取首段输入哼唱的音符序列与当前模板的音符序列之间最小的距离作为两者间的编辑距离,即:
D1=D(Q,X)=min0≤j≤ND(K,j)(5)
对于非首段哼唱进行实时匹配时,为了减小计算量以及数据缓存所需内存,在本发明实施例中,可以利用前段哼唱计算得到的编辑距离,计算得到当前已有哼唱的音符序列与模板的音符序列之间的编辑距离。
具体地,可以在上一段哼唱实时匹配时计算得到的距离矩阵的最后一行中选取几个最小距离的位置,作为上一段哼唱的音符序列在模板的音符序列上的候选结束位置,并作为当前段哼唱的音符序列在模板的音符序列上的候选开始位置,进行编辑距离累加。这样,不仅可以降低运算量,而且针对每个模板的匹配,每次只需要缓存这些候选结束位置和对应的距离,内存消耗极小。
具体匹配计算过程如下:
a)编辑距离计算起始点确定
获取上一段哼唱实时匹配时计算得到的距离矩阵,即上式(4)表示的距离矩阵,对每一个模板,在距离矩阵D的最后一行中选取M个候选编辑距离。比如首段哼唱的音频序列有K个音符,当前段的哼唱信息对应有P个音符,在计算包含该P个音符的音符序列与模板的音符序列的编辑距离时,根据前K个音符计算出的距离矩阵(即根据上式(4)计算出的距离矩阵),选出距离矩阵D中的第K+1行距离最小的M个距离以及其对应的位置作为候选点。
图2给出了首段K个音符编辑距离计算后,M取2时确定的起始点的示意图,图中两个黑色点为新音符编辑距离计算的不同起始点。
b)当前已哼唱的音符序列对应的距离矩阵D′边界初始化
新的P个音符序列以上述步a)选出的每一个候选点c作为起点,为了减少计算量,可以认为模板中与新输入的音符序列匹配的音符个数不超过当前已输入音符个数的2倍,即2P。则距离矩阵D′边界初始化如下所示:
D′(0,0)=D(c)(6)
D′(0,j)=D(c)+j*delete_penalty,1≤j≤2P(7)
D′(i,0)=D(c)+i*insert_penalty,1≤i≤P(8)
其中,D(c)是基于前段音符计算得到的候选点c的编辑距离。
需要说明的是,在编辑距离计算过程中,若2P的值已超过歌曲长度,则以歌曲结束为限。
c)更新当前已哼唱的音符序列对应的距离矩阵D′
边界条件确定后,采用动态规划算法对距离矩阵进行更新。
d)获取当前已哼唱的音符序列与当前模板的音符序列之间最小的距离作为两者间的编辑距离,即:
D1=D′(Q,X)=min0≤j≤2PD′(P,j)(10)
需要说明的是,不论是针对首段哼唱进行实时匹配还是针对非首段哼唱进行实时匹配时,在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
另外,需要说明的是,在实际应用中,也可融合基频包络特征进行在线哼唱检索,本发明实施例对此不作限定。同样,不论是针对首段哼唱进行实时匹配还是针对非首段哼唱进行实时匹配时,在匹配过程中,待匹配的哼唱信息列的最后一个音符对应的基频包络特征也均不参与匹配过程。
本发明实施例提供的在线哼唱检索方法,将音频特征提取及匹配均放在用记哼唱过程中在线处理,从而能够在用户哼唱过程中自动返回结果,解决了现有哼唱检索系统存在的时间滞后问题,缩短了用户等待检索结果的时间,大大改善了用户体验。
相应地,本发明实施例还提供一种在线哼唱检索系统,如图3所示,是该系统的一种结构示意图。
在该实施例中,所述系统包括:
接收模块301,用于接收用户哼唱信息;
实时检索模块302,实时对用户哼唱信息进行检索,得到匹配结果;所述实时检索模块302包括:特征提取模块321及匹配模块322;
所述特征提取模块321,用于实时提取所述哼唱信息的音频特征;
所述匹配模块322,用于实时将所述特征提取模块提取的音频特征与歌曲库中歌曲的音频特征进行匹配,得到匹配结果;所述音频特征为:旋律特征、或者旋律特征及谱特征。
第一判断模块303,用于判断所述匹配结果是否可信;如果是,则通知所述实时检索模块302停止检索;否则,触发第二判断模块305判断用户哼唱是否结束;
检索结果获取模块304,用于在所述第一判断模块303判断所述匹配结果后,根据所述匹配结果获取检索结果;
所述第二判断模块305,用于判断用户哼唱是否结束;如果是,则通知所述检索结果获取模块304根据所述用户当前已有哼唱信息获取检索结果;否则通知所述实时检索模块302继续执行实时对用户哼唱信息进行检索的操作。
在本发明实施例中,所述旋律特征可用音符序列或音高曲线(即基频包络)的形式表示,因此,特征提取模块321可以只提取哼唱信息的音符序列或基频包络特征,也可以同时提取这两者,对此本发明实施例不做限定。
相应地,匹配模块322可以单独采用音符序列或基频包络进行匹配,也可以采用两种匹配相融合的方式。
比如,匹配模块322的一种实施例可以包括计算单元和匹配结果选取单元。其中:
计算单元,用于采用序列匹配算法将所述当前已有哼唱信息对应的音符序列与模板库中各模板的音符序列进行匹配,得到匹配距离;
匹配结果选取单元,用于选取最小的匹配距离作为匹配结果。
再比如,匹配模块322的另一种实施例可以包括:
第一匹配单元,用于采用序列匹配算法将当前已有哼唱对应的音符序列与模板库中各模板的音符序列进行匹配,得到第一匹配距离;
第二匹配单元,用于利用动态时间规整算法将当前已有哼唱对应的基频包络特征与模板库中各模板的基频包络特征进行匹配,得到第二匹配距离;
融合单元,用于对所述第一匹配距离和所述第二匹配距离进行融合,得到第三匹配距离;
融合结果选取单元,用于选取最小的第三匹配距离作为匹配结果。
当然,匹配模块322还也可以有其它实现方式,对此本发明实施例不做限定。
如图4所示,是本发明实施例中特征提取模块的一种结构示意图。
该特征提取模块包括:
基频信息获取单元401,用于对于首段哼唱,在用户哼唱第一设定时间或第一设定个数的音符后,提取已有哼唱信息的基频信息;对于非首段哼唱,每隔第二设定时间或第二设定个数的音符后,提取当前已有哼唱信息中新的基频信息;
信息转换单元402,用于将所述基频信息获取单元提取的基频信息转换为音符序列和/或基频包络特征;并且对于首段哼唱,将已有哼唱信息的基频信息转换为首段哼唱对应的音符序列和/或基频包络特征;对于非首段哼唱,将上一次检索处理时已有的音符序列中最后一个音符对应的基频信息与所述新的基频信息拼接,并将拼接后的基频信息作为本次提取的基频信息,然后将所述本次提取的基频信息转换为当前段哼唱对应的音符序列和/或基频包络特征。
该实施例的特征提取模块,对首段哼唱和非首段哼唱采用不同的处理方式,不仅可以提高实时处理速度,而且有效地保证实时提取的旋律特征的正确性。
基于图4所示的特征提取模块,相应地,上述计算单元对于首段哼唱和非首段哼唱,采用不同的方法计算所述匹配距离,具体包括:
对于首段哼唱,采用编辑距离算法计算首段哼唱对应的音符序列与模板的音符序列的编辑距离矩阵,得到匹配距离,并且在计算所述匹配距离时,待匹配的哼唱信息对应的音符序列的最后一个音符不参与匹配过程;
对于非首段哼唱,根据上一段哼唱实时匹配时计算得到的距离矩阵确定当前段哼唱对应的音符序列与模板的音符序列在计算编辑距离时在所述模板的音符序列上的起始点;
根据所述起始点对当前段哼唱的音符序列对应的编辑距离矩阵进行边界初始化;
更新所述编辑距离矩阵;
根据更新后的编辑距离矩阵获取当前已有哼唱的音符序列与所述模板的音符序列之间最小的距离作为两者间的匹配距离;
对于首段哼唱和非首段哼唱,在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
如图5所示,是本发明实施例中特征提取模块的另一种结构示意图。
与图4所示实施例不同的是,在该实施例中,所述特征提取模块还包括:
第一拼接单元501,用于剔除上一次检索处理时已有的音符序列中最后一个音符,然后与本次基频信息转换得到的音符序列拼接,得到当前已有哼唱对应的音符序列;
第二拼接单元502,用于将上一次检索处理时已有的基频包络特征与本次基频信息转换得到的基频包络特征拼接,得到当前已有哼唱对应的基频包络特征。
相应地,在该实施例中,上述计算单元对于首段哼唱和非首段哼唱,可以采用相同的方法计算所述匹配距离,并且在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
另外,需要说明的是,在实际应用中,实时检索模块302也可融合基频包络特征进行在线哼唱检索,相应地,匹配模块322的具体结构也需要做适应性变化,本发明实施例对此不作限定。同样,不论是针对首段哼唱进行实时匹配还是针对非首段哼唱进行实时匹配时,在匹配过程中,待匹配的哼唱信息列的最后一个音符对应的基频包络特征也均不参与匹配过程。
本发明实施例提供的在线哼唱检索系统,将音频特征提取及匹配均放在用记哼唱过程中在线处理,从而能够在用户哼唱过程中自动返回结果,解决了现有哼唱检索系统存在的时间滞后问题,缩短了用户等待检索结果的时间,大大改善了用户体验。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种在线哼唱检索方法,其特征在于,包括:
接收用户哼唱信息;
实时对用户哼唱信息进行检索,得到匹配结果;所述实时对用户哼唱信息进行检索包括实时提取所述哼唱信息的音频特征的过程,以及实时将所述音频特征与歌曲库中歌曲的音频特征进行匹配的过程;所述音频特征为:旋律特征、或者旋律特征及谱特征;
判断所述匹配结果是否可信;
如果是,则停止检索,并根据所述匹配结果获取检索结果;
否则,判断用户哼唱是否结束;
如果用户哼唱未结束,则继续执行实时对用户哼唱信息进行检索的步骤;
如果用户哼唱已结束,则根据所述用户当前已有哼唱信息获取检索结果。
2.根据权利要求1所述的方法,其特征在于,实时提取所述哼唱信息的旋律特征的过程包括:
对于首段哼唱,在用户哼唱第一设定时间或第一设定个数的音符后,提取已有哼唱信息的基频信息,并将所述基频信息转换为首段哼唱对应的音符序列和/或基频包络特征;
对于非首段哼唱,每隔第二设定时间或第二设定个数的音符后,提取当前已有哼唱信息中新的基频信息;然后将上一次检索处理时已有的音符序列中最后一个音符对应的基频信息与所述新的基频信息拼接,并将拼接后的基频信息作为本次提取的基频信息;将所述本次提取的基频信息转换为当前段哼唱对应的音符序列和/或基频包络特征。
3.根据权利要求2所述的方法,其特征在于,所述实时将所述旋律特征与歌曲库中歌曲的旋律特征进行匹配的过程包括:
采用序列匹配算法将所述当前已有哼唱信息对应的音符序列与模板库中各模板的音符序列进行匹配,得到匹配距离;
选取最小的匹配距离作为匹配结果。
4.根据权利要求3所述的方法,其特征在于,对于首段哼唱和非首段哼唱,采用不同的方法计算所述匹配距离,具体包括:
对于首段哼唱,采用编辑距离算法计算首段哼唱对应的音符序列与模板的音符序列的编辑距离矩阵,得到匹配距离,并且在计算所述匹配距离时,待匹配的哼唱信息对应的音符序列的最后一个音符不参与匹配过程;
对于非首段哼唱,根据上一段哼唱实时匹配时计算得到的距离矩阵确定当前段哼唱对应的音符序列与模板的音符序列在计算编辑距离时在所述模板的音符序列上的起始点;
根据所述起始点对当前段哼唱的音符序列对应的编辑距离矩阵进行边界初始化;
更新所述编辑距离矩阵;
根据更新后的编辑距离矩阵获取当前已有哼唱的音符序列与所述模板的音符序列之间最小的距离作为两者间的匹配距离;
对于首段哼唱和非首段哼唱,在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
5.根据权利要求3所述的方法,其特征在于,实时提取所述哼唱信息的旋律特征的过程还包括:
剔除上一次检索处理时已有的音符序列中最后一个音符,,然后与本次基频信息转换得到的音符序列拼接,得到当前已有哼唱对应的音符序列;
将上一次检索处理时已有的基频包络特征与本次基频信息转换得到的基频包络特征拼接,得到当前已有哼唱对应的基频包络特征;
对于首段哼唱和非首段哼唱,采用相同的方法计算所述匹配距离,并且在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
6.根据权利要求2所述的方法,其特征在于,实时将所述旋律特征与歌曲库中歌曲的旋律特征进行匹配的过程包括:
采用序列匹配算法将当前已有哼唱对应的音符序列与模板库中各模板的音符序列进行匹配,得到第一匹配距离;
利用动态时间规整算法将当前已有哼唱对应的基频包络特征与模板库中各模板的基频包络特征进行匹配,得到第二匹配距离;
对所述第一匹配距离和所述第二匹配距离进行融合,得到第三匹配距离;
选取最小的第三匹配距离作为匹配结果。
7.一种在线哼唱检索系统,其特征在于,包括:
接收模块,用于接收用户哼唱信息;
实时检索模块,实时对用户哼唱信息进行检索,得到匹配结果;所述实时检索模块包括:特征提取模块及匹配模块;
所述特征提取模块,用于实时提取所述哼唱信息的音频特征;
所述匹配模块,用于实时将所述特征提取模块提取的音频特征与歌曲库中歌曲的音频特征进行匹配,得到匹配结果;所述音频特征为:旋律特征、或者旋律特征及谱特征;
第一判断模块,用于判断所述匹配结果是否可信;如果是,则通知所述实时检索模块停止检索;否则,触发第二判断模块判断用户哼唱是否结束;
检索结果获取模块,用于在所述第一判断模块判断所述匹配结果后,根据所述匹配结果获取检索结果;
所述第二判断模块,用于判断用户哼唱是否结束;如果是,则通知所述检索结果获取模块根据所述用户当前已有哼唱信息获取检索结果;否则通知所述实时检索模块继续执行实时对用户哼唱信息进行检索的操作。
8.根据权利要求7所述的系统,其特征在于,所述特征提取模块包括:
基频信息获取单元,用于对于首段哼唱,在用户哼唱第一设定时间或第一设定个数的音符后,提取已有哼唱信息的基频信息;对于非首段哼唱,每隔第二设定时间或第二设定个数的音符后,提取当前已有哼唱信息中新的基频信息;
信息转换单元,用于将所述基频信息获取单元提取的基频信息转换为音符序列和/或基频包络特征;并且对于首段哼唱,将已有哼唱信息的基频信息转换为首段哼唱对应的音符序列和/或基频包络特征;对于非首段哼唱,将上一次检索处理时已有的音符序列中最后一个音符对应的基频信息与所述新的基频信息拼接,并将拼接后的基频信息作为本次提取的基频信息,然后将所述本次提取的基频信息转换为当前段哼唱对应的音符序列和/或基频包络特征。
9.根据权利要求8所述的系统,其特征在于,所述匹配模块包括:
计算单元,用于采用序列匹配算法将所述当前已有哼唱信息对应的音符序列与模板库中各模板的音符序列进行匹配,得到匹配距离;
匹配结果选取单元,用于选取最小的匹配距离作为匹配结果。
10.根据权利要求9所述的系统,其特征在于,所述计算单元对于首段哼唱和非首段哼唱,采用不同的方法计算所述匹配距离,具体包括:
对于首段哼唱,采用编辑距离算法计算首段哼唱对应的音符序列与模板的音符序列的编辑距离矩阵,得到匹配距离,并且在计算所述匹配距离时,待匹配的哼唱信息对应的音符序列的最后一个音符不参与匹配过程;
对于非首段哼唱,根据上一段哼唱实时匹配时计算得到的距离矩阵确定当前段哼唱对应的音符序列与模板的音符序列在计算编辑距离时在所述模板的音符序列上的起始点;
根据所述起始点对当前段哼唱的音符序列对应的编辑距离矩阵进行边界初始化;
更新所述编辑距离矩阵;
根据更新后的编辑距离矩阵获取当前已有哼唱的音符序列与所述模板的音符序列之间最小的距离作为两者间的匹配距离;
对于首段哼唱和非首段哼唱,在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
11.根据权利要求9所述的系统,其特征在于,所述特征提取模块还包括:
第一拼接单元,用于剔除上一次检索处理时已有的音符序列中最后一个音符,然后与本次基频信息转换得到的音符序列拼接,得到当前已有哼唱对应的音符序列;
第二拼接单元,用于将上一次检索处理时已有的基频包络特征与本次基频信息转换得到的基频包络特征拼接,得到当前已有哼唱对应的基频包络特征;
所述计算单元对于首段哼唱和非首段哼唱,采用相同的方法计算所述匹配距离,并且在匹配过程中,待匹配的哼唱信息对应的音符序列的最后一个音符均不参与匹配过程。
12.根据权利要求7所述的系统,其特征在于,所述匹配模块包括:
第一匹配单元,用于采用序列匹配算法将当前已有哼唱对应的音符序列与模板库中各模板的音符序列进行匹配,得到第一匹配距离;
第二匹配单元,用于利用动态时间规整算法将当前已有哼唱对应的基频包络特征与模板库中各模板的基频包络特征进行匹配,得到第二匹配距离;
融合单元,用于对所述第一匹配距离和所述第二匹配距离进行融合,得到第三匹配距离;
融合结果选取单元,用于选取最小的第三匹配距离作为匹配结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410735790.8A CN105718486B (zh) | 2014-12-05 | 2014-12-05 | 在线哼唱检索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410735790.8A CN105718486B (zh) | 2014-12-05 | 2014-12-05 | 在线哼唱检索方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718486A true CN105718486A (zh) | 2016-06-29 |
CN105718486B CN105718486B (zh) | 2021-07-06 |
Family
ID=56143731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410735790.8A Active CN105718486B (zh) | 2014-12-05 | 2014-12-05 | 在线哼唱检索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718486B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106292423A (zh) * | 2016-08-09 | 2017-01-04 | 北京光年无限科技有限公司 | 针对人形机器人的音乐数据处理方法及装置 |
CN106528706A (zh) * | 2016-10-26 | 2017-03-22 | 北京邮电大学 | 音乐检索方法及装置 |
CN109903743A (zh) * | 2019-01-03 | 2019-06-18 | 江苏食品药品职业技术学院 | 一种基于模板自动生成音乐旋律的方法 |
CN112466268A (zh) * | 2020-11-26 | 2021-03-09 | 小叶子(北京)科技有限公司 | 一种播放曲谱的方法及系统 |
CN112634893A (zh) * | 2020-12-18 | 2021-04-09 | 宁波向往智汇科技有限公司 | 基于语音平台识别背景音乐的方法、装置及系统 |
CN115331682A (zh) * | 2021-05-11 | 2022-11-11 | 北京奇音妙想科技有限公司 | 修正音频的音高的方法和装置 |
CN115331682B (zh) * | 2021-05-11 | 2024-07-02 | 北京奇音妙想科技有限公司 | 修正音频的音高的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375834A (zh) * | 2010-08-17 | 2012-03-14 | 腾讯科技(深圳)有限公司 | 音频文件检索方法、系统和音频文件类型识别方法、系统 |
CN102521281A (zh) * | 2011-11-25 | 2012-06-27 | 北京师范大学 | 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法 |
CN102522083A (zh) * | 2011-11-29 | 2012-06-27 | 北京百纳威尔科技有限公司 | 一种应用移动终端搜索哼唱歌曲的方法及其移动终端 |
JP5292250B2 (ja) * | 2009-10-13 | 2013-09-18 | 日本電信電話株式会社 | 文書検索装置、文書検索方法、文書検索プログラム |
-
2014
- 2014-12-05 CN CN201410735790.8A patent/CN105718486B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5292250B2 (ja) * | 2009-10-13 | 2013-09-18 | 日本電信電話株式会社 | 文書検索装置、文書検索方法、文書検索プログラム |
CN102375834A (zh) * | 2010-08-17 | 2012-03-14 | 腾讯科技(深圳)有限公司 | 音频文件检索方法、系统和音频文件类型识别方法、系统 |
CN102521281A (zh) * | 2011-11-25 | 2012-06-27 | 北京师范大学 | 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法 |
CN102522083A (zh) * | 2011-11-29 | 2012-06-27 | 北京百纳威尔科技有限公司 | 一种应用移动终端搜索哼唱歌曲的方法及其移动终端 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106292423A (zh) * | 2016-08-09 | 2017-01-04 | 北京光年无限科技有限公司 | 针对人形机器人的音乐数据处理方法及装置 |
CN106528706A (zh) * | 2016-10-26 | 2017-03-22 | 北京邮电大学 | 音乐检索方法及装置 |
CN106528706B (zh) * | 2016-10-26 | 2020-02-07 | 北京邮电大学 | 音乐检索方法及装置 |
CN109903743A (zh) * | 2019-01-03 | 2019-06-18 | 江苏食品药品职业技术学院 | 一种基于模板自动生成音乐旋律的方法 |
CN112466268A (zh) * | 2020-11-26 | 2021-03-09 | 小叶子(北京)科技有限公司 | 一种播放曲谱的方法及系统 |
CN112466268B (zh) * | 2020-11-26 | 2023-10-27 | 小叶子(北京)科技有限公司 | 一种播放曲谱的方法及系统 |
CN112634893A (zh) * | 2020-12-18 | 2021-04-09 | 宁波向往智汇科技有限公司 | 基于语音平台识别背景音乐的方法、装置及系统 |
CN115331682A (zh) * | 2021-05-11 | 2022-11-11 | 北京奇音妙想科技有限公司 | 修正音频的音高的方法和装置 |
CN115331682B (zh) * | 2021-05-11 | 2024-07-02 | 北京奇音妙想科技有限公司 | 修正音频的音高的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105718486B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104978962B (zh) | 哼唱检索方法及系统 | |
CN103823867B (zh) | 一种基于音符建模的哼唱式音乐检索方法及系统 | |
CN110955786B (zh) | 一种舞蹈动作数据的生成方法及装置 | |
CN103186527B (zh) | 建立音乐分类模型的系统、推荐音乐的系统及相应方法 | |
EP3843083A1 (en) | Method, system, and computer-readable medium for creating song mashups | |
CN105718486A (zh) | 在线哼唱检索方法及系统 | |
CN101689225B (zh) | 生成音乐小样和识别相关的歌曲结构 | |
CN108766451B (zh) | 一种音频文件处理方法、装置和存储介质 | |
CN105161116B (zh) | 多媒体文件高潮片段的确定方法及装置 | |
CN105138515A (zh) | 命名实体识别方法和装置 | |
CN107247768A (zh) | 语音点歌方法、装置、终端及存储介质 | |
US11037537B2 (en) | Method and apparatus for music generation | |
CN108766407B (zh) | 音频连接方法及装置 | |
CN113813609B (zh) | 游戏音乐风格分类方法、装置、可读介质及电子设备 | |
CN109741724B (zh) | 制作歌曲的方法、装置及智能音响 | |
CN112185321B (zh) | 歌曲生成 | |
US10636412B2 (en) | System and method for unit selection text-to-speech using a modified Viterbi approach | |
CN105513607A (zh) | 一种谱曲作词的方法和装置 | |
CN107767850A (zh) | 一种演唱评分方法及系统 | |
CN106302987A (zh) | 一种音频推荐方法及设备 | |
CN111046217B (zh) | 组合歌曲生成方法、装置、设备以及存储介质 | |
CN108172211B (zh) | 可调节的波形拼接系统及方法 | |
CN105279289B (zh) | 基于指数衰减窗口的个性化音乐推荐排序方法 | |
CN109410972A (zh) | 生成音效参数的方法、装置及存储介质 | |
CN109859739A (zh) | 基于语音合成的旋律生成方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |