哼唱检索方法及系统的制作方法_2

文档序号:9865555阅读:来源:国知局
音高值。进一步按照十二平均律将所述音高值转化到W半音程为单位的音高 值。
[0057] 步骤103,基于容错匹配原则依次对所述哼唱歌曲片段的音符序列与模板库中各 模板的音符序列进行匹配,得到匹配得分。
[005引需要说明的是,送里的模板是指歌曲的清唱音频数据,可W通过多种方式获得,比 如从MIDI文件获得,或者从互联网上下载等。模板的音符序列是使用歌曲的一份清唱音频 数据提取的音符序列,模板的子音符序列是指模板的音符序列中若干个连续的音符组成的 序列。而且,一首歌曲可W对应一个或者多个模板,但是一个模板只能对应一首歌曲。在应 用本发明实施例的环境中,歌曲库需要预先建立。所述容错匹配原则是指在匹配过程中降 低异常音符的匹配得分所占比例。
[0059] 在本发明实施例中,可W利用序列匹配算法,比如邸巧dit Distance,编辑距离) 算法、LCS化ongest Common Subsequence,最长公共子序列)算法等,计算所述哼唱歌曲片 段的音符序列与模板库中各模板的音符序列的相似度,将所述相似度作为匹配得分。具体 匹配过程将在后面详细说明。
[0060] 步骤104,选取具有最大匹配得分的模板作为检索结果。
[0061] 如图2所示,是本发明实施例中基于容错匹配原则对用户哼唱歌曲片段的音符序 列与模板的音符序列进行匹配的一种流程图,包括W下步骤:
[0062] 步骤201,获取模板的音符序列。
[006引为了描述方便,将模板的音符序列记为Jr =知,...成},不={如,其中,卷"表示音 符音高,為表示音符时长。
[0064] 步骤202,初始化用户哼唱歌曲片段的音符序列与所述模板的音符序列的匹配得 分矩阵。
[006引设S是(m+1) X (n+1)阶匹配得分矩阵,S(i,如记录用户哼唱歌曲片段的音符序列 Qi =站,92, . . .,Qi}与模板的音符序列X.i = ixi,. . .,Xj}之间的最大匹配得分,LM是n+1 维向量,记录匹配得分矩阵S每列的最大值。则初始化匹配得分矩阵S如下:
[006引 S0U)=0; (1)
[0067] S (i, 0) =-i*inse;rt_penalty ; (2)
[0068] 其中,上式(1)表示的初始化条件容许输入哼唱可W从模板对应歌曲的任意时间 位置开始,上式(2)中的insed_penalty是哼唱片段的音符序列相对于模板的音符序列多 插入一个音符的惩罚。
[0069] 需要说明的是,本发明实施例的方法并不仅限于上述匹配得分矩阵的初始化方 式,可W根据实际应用情况对S(0, j)和S(i,0)进行设定,比如都设为零,即对哼唱片段多 唱音符不设惩罚。
[0070] 步骤203,根据容错匹配条件更新匹配得分矩阵。
[0071] 由于用户在哼唱歌曲时在某些音符段可能出现较大的音高或者节奏错误,在送些 音符段,使用传统的距离计算方法则会产生较大的匹配距离,导致检索失败。为此,在本发 明实施例中,采用基于容错匹配的似然度计算方法,具体如下;判断当前匹配的哼唱歌曲片 段的音符序列中的音符与所述模板的音符序列中的音符是否满足容错匹配条件;如果是, 则更新匹配得分矩阵累积为;S(i,j) = s(i-l,j-l)+l ;否则,更新匹配得分矩阵累积为: S(i, j) = max 怯(i, j-1),S (i-1, j)}。
[0072] 需要说明的是,在实际应用中,还可W采用其它的公式更新匹配得分矩阵,只需满 足允许异常音符有限地不参与相似度匹配计算送一原则即可。
[0073] 上述容错匹配条件具体可W根据应用需要来设定,比如可W包括音高容错条件和 时长容错条件,即若同时满足音高容错条件和时长容错条件,则认为满足容错匹配条件,否 则认为不满足容错匹配条件。
[0074] 为了便于描述,后续对于音符尔={齡,gf巧日音符馬=托",考'},满足容错匹配条件 记为史鸣。
[00巧]比如,上述音高容错条件及时长容错条件可W分别如下:
[007引其中,<(始)是护的函数,当然也可W是固定的常数。
[007引 (如)具体可W采用与.始的值成正比的函数,如e;(弘)= U*龄U t是一个常 数。该函数很好地描述了用户在哼唱音高变化较大的相邻音符时出现音高错误的幅度较 大,反之则较小的情况。
[0080] 上式(4)的设定可W容纳用户哼唱快一倍和慢一倍的节奏。
[0081] 送样,更新匹配得分矩阵累积可W写成如下形式:
[0082]
(5)
[0083] 通过容错匹配,用户哼唱歌曲的音符序列与模板的音符序列相似度的计算,可W 消除用户哼唱错误严重的音符的影响,而只考虑哼唱错误不是很严重的音符。送与实际情 况是相符的,因为用户真实哼唱一首歌曲时,大部分音符可W较为正确地哼唱,只有较少的 一部分音符,可能由于音高或者节奏变化较大难W正确把握,出现较为严重的哼唱错误。
[0084] 在上式(5)计算匹配得分时没有考虑容错匹配的音符间距离,也没有对不能容错 匹配的音符进行任何惩罚,送可能使得非目标模板的音符序列获得较高的匹配得分。因此 在本发明实施例中,还可进一步对所述容错匹配得分执行惩罚,W便在容错基础上,对其匹 配得分进行有效控制,保证容错匹配得分的正确率。
[0085] 为此,在另一实施例中,仍如图2所示,还可进一步包括W下步骤:
[0086] 步骤204,对更新后的匹配得分矩阵进行容错惩罚,得到匹配得分。
[0087] 具体地,可W对满足容错匹配条件更新后的匹配得分矩阵,增加容错匹配音符间 距离惩罚,对不满足容错匹配条件更新后的匹配得分矩阵,增加空对齐惩罚,从而得到如下 匹配得分矩阵累积:
[0088]
[0089] 其中,gapcost是对不满足容错匹配条件的音符造成的空对齐的惩罚,其一般取值 较小。(1姑,义1)表示音符9,=泌',《'}和音符-^,.={扣,<'}的归一化距离,取值范围为[0山, 可定义为:
[0090]
(7)
[00川其中,PitchRange是音高的最大值,DurationRange是时长的最大值。
[009引送样,当两个音符满足容错匹配条件时,更相似的音符得分也就越高。由于用户一 般可W较为正确地哼唱一首歌的大部分音符,通过引入惩罚,可W过滤大部分非目标模板。
[0093] 可见,本发明实施例的哼唱检索方法,基于容错匹配原则对用户哼唱歌曲片段的 音符序列与模板库中各模板的音符序列进行匹配,进而获取优化的哼唱的音符序列与当前 模板的音符序列之间的最大匹配得分,得到检索结果。由于对用户哼唱的音调和节奏进行 了很大程度上的容错,因而有效地提高了匹配正确率。
[0094] 尤其是针对用户哼唱中出现的少量哼唱严重错误的音符或漏唱、多唱等异常音 符,在匹配时允许异常音符有限地不参与相似度匹配计算,进一步地,对其匹配得分有效控 巧||,使其占据的比例很小,从而在不影响匹配结果的情况下,最大可能地避免异常音符的干 扰。
[0095] 为了进一步提高匹配的合理性,在本发明另一实施例中,还可在增加容错机制后 进一步限制非目标模板的匹配得分,优化得分矩阵,其具体实现有W下两种方式:
[0096] 方式1 ;在匹配过程中,通过对模板的音符序列和输入哼唱的音符序列中连续出 现空对齐音符的个数进行限制,获取合理的匹配结果。其具体实现如下:
[0097] a)设置输入哼唱的音符序列和模板的音符序列中容许连续出现空对齐音符的最 大个数都为α ;
[009引b)对于当前匹配得分矩阵的元素 D (i,如,L、、L?分别记录模板的音符序列和输入 哼唱的音符序列上一次最近的容错匹配位置。当音符A =扣和音符X, = 不满 足容错匹配条件时,如果I i-LgI〉α或者I j-Lxl〉α,则将D(i, j)置0。
[0099] 方式2 ;在匹配过程中,通过限制与输入哼唱的音符序列匹配的模板的子音符序 列的最大长度获取合理的匹配结果。其具体实现如下:
[0100] a)设置允许与输入哼唱的音符序列匹配的模板的子音符序列的最长长度ML = yIqI,其中,iQl是输入哼唱的音符个数,Y是大于1的常数,如设置为1.25等。
[0101] b)对于当前更新后的得分矩阵第j列的每个元素 S(i,j),SPi,,记录哼唱的音 符序列在模板的音符序列中的起点,当I j-SPiJ == ML时,如果音符A二和音符 .τ,=掉是满足容错匹配条件的,则S(iJ) =l-d(qi,Xi),否则,S(iJ) =0。
[0102] 相应地,本发明实施例还提供一种哼唱检索系统,如图3所示,是该系统的一种结 构示意图。
[0103] 在该实施例中,所述系统包括:
[0104] 接收模块301,用于接收用户哼唱歌曲片段;
[0105
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1