一种基于哼唱的音乐检索方法

文档序号:2823409阅读:471来源:国知局
专利名称:一种基于哼唱的音乐检索方法
技术领域
本发明属于音乐哼唱检索(QBSH,Query by Singing/Humming)技术领域,更为具 体地讲,涉及到一种基于哼唱的音乐检索方法,通过该方法用户只需哼唱歌曲的一段就可 以很快地检索到自己期望听到的歌曲。
背景技术
随着网络技术的不断发展,人们对网络的依赖性也逐渐增加,越来越多的人们希 望通过网络寻找到他们感兴趣的东西,如音频、视频、图像、动画等多媒体信息。多媒体信息 有多种形式,其中音频信息占有相当大的比例。而在音频当中,音乐又是最常见的形式。目前的音乐检索方法主要是根据文本关键字进行搜索,例如音乐名、作者、演唱歌 星、专辑、流派、歌词等,当我们偶然间听到一首不错的歌曲时,只知道歌曲的旋律,却不知 道歌曲名称或者歌词,想要利用搜索引擎搜索歌曲的相关资料,那几乎是不可能完成的事 情。为了解决这一问题,2008年09月24日公布的、公开号为CN 101271457A、名称为“一种 基于旋律的音乐检索方法及装置”的中国发明专利申请公布说明书提供了一种基于内容, 即哼唱检索(QBSH,Query by Singing/Humming)的音乐检索方法。该方法包括1、将指定 待查音乐中的一段旋律作为搜索的旋律关键字;2、将所指定的旋律关键字输入查询客户端 设备,经过处理得到数字化旋律信号;3、将音乐库中的音乐建立索引,该索引体现音乐的旋 律特征,形成索引化的音乐数据库;4、由搜索引擎将数字化旋律信号与产生的音乐数据库 中的旋律进行比较,从音乐数据库选出一组包含指定关键字音乐旋律的一组音乐;5、将选 出的音乐按照与旋律关键字的相似程度递减排序。在该专利申请中,还给出了获得数字化 的旋律信号的方法21、使用音频采集设备采集用户的哼唱输入;22、对用户输入的音频信 号进行预滤波处理,包括直流消除、增益标准化、低通滤波处理,得到音频帧序列信号;23、 对音频帧序列信号进行时域或频域分析,提取基频序列;24、将基频序列进行进一步处理, 包括线形化、求差,得到数字化的旋律信号。QBSH的具体目的在于通过输入用户的哼唱,一段音乐的录音或者口哨来搜索到期 望的音乐,因此能通过哼唱帮助用户从音乐库中找到他/她们已经忘掉歌词、歌唱者等信 息的音乐。但上述的CN 101271457A发明专利申请公布说明书只是给出了一种基于哼唱的 音乐检索方法的原理框架,对于旋律的音频帧的提取和处理方面并没有进行详细的说明。

发明内容
本发明的目的为对现有的传统哼唱检索(QBSH,Query by Singing/Humming)方法 研究的基础上,提出一种更为快速、准确地对音乐进行检索的一种基于哼唱的音乐检索方 法。为实现上述发明目的,本发明的基于哼唱的音乐检索方法,其特征在于,包括以下 步骤
(1)、将音乐数据库中的每首音乐根据能量进行音符分割,得到音符序列;对每个 音符进行基音提取,提取出该音符的频率,即音高,并转换成音差,然后除以该音符的相对 长度,计算出该音符的坡度,得到每首音乐的坡度序列,将每首音乐的坡度序列作为该首音 乐的索引,形成索引化的音乐数据库;音差是指当前音符与上一个音符在音高上的差距,相对长度是指某一音符的时间 长度除以所有音符的平均时间长度得到的相对值;(2)、将用户哼唱待检索音乐中的一段旋律作为检索的旋律关键字,使用音频采集 设备采集旋律关键字,得到旋律关键字的音频数据;(3)、将旋律关键字的音频数据按照步骤(1)中的相同方法,进行音符分割、基音 提取并转换成音差,然后除以音符的相对长度,计算出该音符的坡度,这样得到旋律关键字 的坡度序列;(4)、将旋律关键字的坡度序列与音乐数据库中每首音乐的索引进行匹配,从音乐 数据库中选出与旋转关键字相似度最高的一组音乐,并按照相似度由高到低进行排列,以 便用户进一步进行人工选取音乐。本发明的发明目的是这样实现的本发明将音乐数据库中的每首音乐进行音符分割、基音提取,然后将音符的音高 转换成音差,并处以音符的相对长度,计算出该音符的坡度,得到每首音乐的坡度序列,将 每首音乐的坡度序列作为该首音乐的索引,形成索引化的音乐数据库。在检索时,首先将用 户哼唱的旋律作为音乐检索的旋律关键字,并转换为音频数据,采用音乐数据库中建立索 引的同样方法对其进行音符分割、基音提取,将音符的音高转换成音差,除以相对长度,得 到旋律关键字的坡度序列;然后,将旋律关键字的坡度序列与音乐数据库中每首音乐的索 引进行匹配,从音乐数据库中选出与旋律关键字相似度最高的一组音乐。由于在本发明中, 采用哼唱旋律的坡度序列与每首音乐的坡度序列进行比较,比较数据量比较小,同时坡度 序列很好地描述了每首音乐的特征,因此,本发明可以更为快速、准确地对音乐进行检索。


图1是实施本发明基于哼唱的音乐检索方法的一种装置的具体实施方式
原理框 图。
具体实施例方式下面结合附图对本发明的具体实施方式
进行描述,以便本领域的技术人员更好地 理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许 会淡化本发明的主要内容时,这些描述在这里将被忽略。实施例图1是实施本发明基于哼唱的音乐检索方法的一种装置的具体实施方式
原理框 图本发明研究基于内容的音乐检索(Content Based Music Retrieval),提供一种 用音乐本身来搜索音乐的方式。具体来说,就是以一小段音乐旋律作为检索的旋律关键字, 搜索后返回一组包含旋律关键字的一组音乐。用旋律作为检索的旋律关键字,它不同于文本关键字,用户无法直接从键盘输入,而需要提供一种特殊的输入旋律的方法,最符合人们 习惯的方法就是哼唱输入,用户只要使用音频采集输入设备,如麦克风,哼唱一段需要查找 的旋律即可。如图1所示,在本实施例中,提供了一种基于哼唱的音乐检索装置用于实现本发 明的方法,包括音频采集模块1、信号处理模块2、旋律特征索引模块3、坡度序列匹配模块 4。在音频采集模块1中,对用户哼唱的旋律,即旋律关键字进行音频采集,采集到的 音频数据作为旋律关键字的音频数据。音频采集在一般噪音条件下进行,使用普通的麦克风录制8000Hz/16bit/单声道 的哼唱音频,之所以选用8000Hz的采样频率来录制哼唱旋律,是因为人们所能哼唱的声音 的范围在80 800Hz之间,即使是语音,范围也在40 4000Hz之间,根据奈奎斯特采样定 律,8000Hz的采样率已经足够,而且采样率低的话得到的音频文件要小一点,易于下一步的 信号处理。录制时用户可以采用带歌词哼唱也可以采用不带歌词哼唱。音频数据的采集属 于现有技术,在此不再赘述。在信号处理模块2中,对旋律关键字的音频数据进行音符分割、基音提取并转换 成音差,然后除以音符的相对长度,计算出该音符的坡度,得到旋律关键字的坡度序列。在本实施例中,对旋律关键字的音频数据进行音符分割采用如下步骤al 旋律关键字的音频数据以IOms的数据作为一帧进行分割;a2 设置能量阈值,将旋律关键字的音频数据帧平均平方根能量的50%和30%分 别设为音符的开始阈值和结束阈值,即当一个帧的能量超过旋律关键字的音频数据帧平均 平方根能量的50%时,认为该帧是一个音符的开始,当一个帧的能量低于旋律关键字的音 频数据帧平均平方根能量的30%时,认为该帧是一个音符的结束;a3 设置IOOms的时间阈值来剔除毛刺,即当音符长度小于IOOms时,则认为是短 时毛刺忽略掉。计算旋律关键字的音频数据的平均能量,在工程技术上,通常认为10ms-30ms这 样长度的时间段中,声音信号是平稳信号。因此,我们以IOms的信号作为一帧来处理输入 旋律关键字的音频数据。再设置一个时间阈值来去除短时毛刺,如果判断出的音符达不到 该阈值的长度,则判为短时毛刺忽略掉。这样我们可以过滤掉无关的噪音,例如麦克风发出 的“噼啪”声。由于信号不在稳定状态时,能量将会反复跨越阈值,能量很可能因为反复跨 越阈值而被判断为音符的结束。针对这一情况,我们将判断音符开始的阈值设置得相对高 些,而将音符结束的阈值设置得相对低些——分别为50%和30%。即当一个帧的能量超 过旋律关键字的音频数据帧平均平方根能量的50%时,认为该帧是一个音符的开始,当一 个帧的能量低于旋律关键字的音频数据帧平均平方根能量的30%时,认为该帧是一个音符 的结束。在本实施例中,旋律关键字的音频数据进行音符基音提取采用如下步骤bl 将长度为T的音符分为长为τ的N段(1 < τ彡T):T = NT+b,0彡b彡 τ ;b2 然后根据下式求和
式中r(t)表示音符数据;b3 再对下面的目标函数
bτJ(T) = (N + l^R'it^ + N^R2 (t, τ)求极大值得到τ。,τ Q即为音符的周期;b4 求出音符的基音频率freq = 1/τ 0,再通过公式Semitone = 12*log2 (freq/440)+69将基音频率转换成半音(Semitone)单位,从而得到音符基音。在本实施中,对旋律关键字的音符音高转换成音差,然后除以音符的相对长度,计 算出该音符的坡度为cl 将音符音高序列转换成音差和音符开始时间的二元组序列形式。音差,是指当 前音符与上一个音符在音高上的差距,以半音为单位。音符开始时间指音符开始发音的时 间,没有单位,其数值只有与其他音符的持续时间比较才有相对意义;c2 计算出最后一个音符之前所有音符的平均长度,再用每个音符的长度除以平 均长度得到音符相对长度,把旋律关键字表示成音差和音符相对长度的二元组序列形式;c3:用音差除以音符的相对长度得到坡度,把旋律关键字表示成坡度序列。在步骤c2中,旋律关键字之所以表示成音符音差除以音符相对长度的坡度形式, 是因为当同一段旋律以不同速度哼唱时,音符时间长度会不同。然而,在时间轴上伸缩的变 化中,其各个音符之间相对比例不会发生改变。例如下面以(音差,音符开始时间)表示的 这两段旋律关键字旋律关键字1 :(#,0),(-2,15),(3,45),(0,90), (2,135), (1,150)旋律关键字2 :(#,0),(-2,30),(3,90),(0,180), (2,270),(1,300)旋律关键字2是旋律关键字1在时间轴上延伸了 1倍。然而将这两段旋律关键 字,先计算出最后一个音符之前所有音符的平均长度,再用每个音符的长度除以平均长度, 得到音差,音符相对长度的二元组结果序列是完全相同的。如下所示(最后一个音符没有 结束时间,长度按它之前所有音符的平均长度计)(#,0. 5),(-2,1),(3,1. 5),(0,1. 5),(2,0. 5),(1,1)这种表示方法可以很好地容忍相同旋律关键字在时间轴上的缩放变化。只要是同 一旋律关键字,无论在时间轴上以怎样的比例进行缩放,表示成音符相对长度后,都会得到 同样的结果。在c3步中,最后再用音差除以音符的相对长度得到坡度,把旋律关键字旋表示成 坡度序列,用于后续的坡度序列匹配模块4与音乐数据库中的音乐相匹配。在旋律特征索引模块3中,进行音乐数据库中的音乐进行音符分割、基音提取,计 算音符音差,并除以音符相对长度,得到每首音乐的坡度序列,将每首音乐的坡度序列作为 该首音乐的索引,形成索引化的音乐数据库。建立音乐索引的方法与提取旋律关键字的坡度序列的方法完全一致,这样才能进行匹配计算出相似度。在本实施例中,音乐数据库为midi音乐库,检索的音乐为midi音乐,在后续的坡 度序列匹配模板4中,用户哼唱旋律的坡度序列与这里的旋律特征索引模块3相匹配,得到 相似的旋律特征后由此索引得到midi音乐库中要查找的音乐。在本实施例中,音乐数据库采用midi格式的音乐的原因是根据音频文件记录声 音的原理,通常将音乐分为三类声音文件、midi文件和模块文件。声音文件指的是直接记 录了通过对真实声音的模拟波形进行二进制采样而得到的数据,是对声音的真实反映,这 样存储声音信息所产生的声音文件是相当庞大的。midi文件记录的是音乐演奏指令序列, 说明了在什么时间、用什么乐器演奏什么音符,及如何演奏,并不包含真实声音的数据,所 以文件尺寸要比声音文件小得多。模块文件同时具有midi与声音文件的共同特性,也就是 说模块文件中既包括如何演奏乐器的指令,又保存了声音信号的采样数据。midi文件具有 以下三个优点1、精确度音符包含音高、音强和音长三个特征。midi文件和模块文件里对于每一个音符的 这三个特征都有完全量化的准确描述;2、方便性midi文件和模块文件记录了一系列演奏音乐的指令,只要了解了文件的格式,就 可以方便地将所需要的音符坡度序列提取出来。3、通用性midi文件与声音文件通用性很好,有许多的音频文件格式转换工具可以将声音文 件转换为midi文件。因此,在本实施例中,是midi音乐数据库中的每首音乐的midi文件建立索引的。在坡度序列匹配模块4中,将旋律关键字的坡度序列与音乐数据库中每首音乐的 索引进行匹配,返回相似度最高的几首歌曲,步骤为dl 旋律关键字的坡度序列的长度为n,从音乐数据库中待比较的音乐索引的第 一个元素开始,依次取m个元素;其中m的取值方法是,如果待比较音乐索引当前位置到结 尾处之间的元素个数大于等于n,则m = n,否则m为待比较音乐索引当前位置到结尾处之 间的元素个数;d2 旋律关键字的坡度序列为(Gh。,Gh1, Gh2,…,Ghlri),其中Ghi表示旋律关键字 中音符的坡度,待比较音乐索引为(Gstl,Gs1,Gs2,…Gsnri) ,Gsi表示待比较音乐索引中音符 的坡度,则相似度表示为 其中k = min(m, η), Sim函数被用来评估两个音符坡度的接近程度,考虑到 用户哼唱总是存在有一定的误差,所以这个函数被设计成为能在一定范围内容忍误差。 d3 得到MelodicSimilarity。后,从待比较歌曲的第二个元素开始,重复步 骤d2,得到MeIodicSimilarity1 ;从待比较歌曲的第三个元素开始,重复步骤d2,得到 MelodicSimilarityf假设待比较音乐的元素有1个,则1彡η时,算法将一直比较到midi 音乐的第1-n+l个元素,得到1-n+l个MelodicSimilarity值,从中选取最大值,作为该音 乐的旋律相似度;1 < η时,将得到1个MelodicSimilarity值,作为该音乐的相似度。d4 音乐数据库中的每首音乐都进行步骤dl d2的匹配,这样得到按相似度由大 到小排列输出的音乐数据库中相对应的音乐。尽管上面对本发明说明性的具体实施方式
进行了描述,以便于本技术领的技术人 员理解本发明,但应该清楚,本发明不限于具体实施方式
的范围,对本技术领域的普通技术 人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变 化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
9
权利要求
一种基于哼唱的音乐检索方法,其特征在于,包括以下步骤(1)、将音乐数据库中的每首音乐根据能量进行音符分割,得到音符序列;对每个音符进行基音提取,提取出该音符的频率,即音高,并转换成音差,然后除以该音符的相对长度,计算出该音符的坡度,得到每首音乐的坡度序列,将每首音乐的坡度序列作为该首音乐的索引,形成索引化的音乐数据库;音差是指当前音符与上一个音符在音高上的差距,相对长度是指某一音符的时间长度除以所有音符的平均时间长度得到的相对值;(2)、将用户哼唱待检索音乐中的一段旋律作为检索的旋律关键字,使用音频采集设备采集旋律关键字,得到旋律关键字的音频数据;(3)、将旋律关键字的音频数据按照步骤(1)中的相同方法,进行音符分割、基音提取并转换成音差,然后除以音符的相对长度,计算出该音符的坡度,这样得到旋律关键字的坡度序列;(4)、将旋律关键字的坡度序列与音乐数据库中每首音乐的索引进行匹配,从音乐数据库中选出与旋转关键字相似度最高的一组音乐,并按照相似度由高到低进行排列,以便用户进一步进行人工选取音乐。
2.根据权利要求1所述的基于哼唱的音乐检索方法,其特征在于,所述的音符分割采 用如下步骤al 旋律关键字的音频数据或音乐数据库中的每首音乐以IOms的数据作为一帧进行 分割;a2 设置能量阈值,将旋律关键字的音频数据帧平均平方根能量的50%和30%分别设 为音符的开始阈值和结束阈值,当一个帧的能量超过旋律关键字的音频数据帧平均平方根 能量的50%时,认为该帧是一个音符的开始,当一个帧的能量低于旋律关键字的音频数据 帧平均平方根能量的30%时,认为该帧是一个音符的结束;a3 设置IOOms的时间阈值来剔除毛刺,即当音符长度小于IOOms时,则认为是短时毛 刺忽略掉。
3.根据权利要求1所述的基于哼唱的音乐检索方法,其特征在于,所述的音符基音提 取采用如下步骤bl 将长度为T的音符分为长为τ的N段(1 < τ < T): T = NT+b,0 彡 b 彡 τ ; b2 然后根据下式求和'1 N-Yr(t + m) 0<t<b—+b<t<r式中r(t)表示音符数据; b3:再对下面的目标函数/=0 t=b+\求极大值得到τ ^,^即为音符的周期;b4 求出音符的基音频率freq = 1/τ ^,再通过公式 将基音频率转换成半音(Semitone)单位,从而得到音符基音。
4.根据权利要求1所述的基于哼唱的音乐检索方法,其特征在于,所述的符音高转换 成音差,然后除以音符的相对长度,计算出该音符的坡度,步骤为cl 将音符音高序列转换成音差和音符开始时间的二元组序列形式。音差,是指当前音 符与上一个音符在音高上的差距,以半音为单位。音符开始时间指音符开始发音的时间,没 有单位,其数值只有与其他音符的持续时间比较才有相对意义;c2:计算出最后一个音符之前所有音符的平均长度,再用每个音符的长度除以平均长 度得到音符相对长度,把旋律关键字表示成音差和音符相对长度的二元组序列形式;c3 用音差除以音符的相对长度得到坡度,把旋律关键字表示成坡度序列。
5.根据权利要求1所述的基于哼唱的音乐检索方法,其特征在于,所述的旋律关键字 的坡度序列与音乐数据库中每首音乐的索引进行匹配,返回相似度最高的几首歌曲,步骤 为dl 旋律关键字的坡度序列的长度为n,从音乐数据库中待比较的音乐索引的第一个 元素开始,依次取m个元素;其中m的取值方法是,如果待比较音乐索引当前位置到结尾处 之间的元素个数大于等于n,则m = n,否则m为待比较音乐索引当前位置到结尾处之间的 元素个数;d2 旋律关键字的坡度序列为(GtvGhnGh2,…,Ghlri),其中Ghi表示旋律关键字中音 符的坡度,待比较音乐索引为(Gstl,Gs1,Gs2,…Gsnri) ,Gsi表示待比较音乐索引中音符的坡 度,则相似度表示为 d3 得到MeIodicSimilarityci后,从待比较歌曲的第二个元素开始,重复步骤 d2,得到MeIodicSimilarity1 ;从待比较歌曲的第三个元素开始,重复步骤d2,得到 MelodicSimilarityf假设待比较音乐的元素有1个,则1彡η时,算法将一直比较到midi 音乐的第1-n+l个元素,得到1-n+l个MelodicSimilarity值,从中选取最大值,作为该音 乐的旋律相似度;1 < η时,将得到1个MelodicSimilarity值,作为该音乐的相似度。d4 音乐数据库中的每首音乐都进行步骤dl d3的匹配,这样得到按相似度由大到小 排列输出的音乐数据库中相对应的音乐。
6.根据权利要求1所述的基于哼唱的音乐检索方法,其特征在于,所述的音乐数据库 为midi音乐库,是根据midi音乐数据库中的每首音乐的midi文件建立索引的。
全文摘要
本发明公开了一种基于哼唱的音乐检索方法,首先将音乐数据库中的每首音乐进行音符分割、基音提取,并转换成音差,然后除以该音符的相对长度,计算出该音符的坡度,得到每首音乐的坡度序列,将每首音乐的坡度序列作为该首音乐的索引;其次将用户哼唱待检索音乐中的一段旋律作为检索的旋律关键字,将旋律关键字的音频数据以相同方法得到旋律关键字的坡度序列;最后将旋律关键字的坡度序列与音乐数据库中每首音乐的索引进行匹配,选出相似度最高的一组音乐,以便人工选取音乐。由于采用哼唱旋律的坡度序列与每首音乐的坡度序列进行比较,比较数据量比较小,同时坡度序列很好地描述了每首音乐的特征,因此,本发明可以更为快速、准确地对音乐进行检索。
文档编号G10H1/00GK101916250SQ20101014449
公开日2010年12月15日 申请日期2010年4月12日 优先权日2010年4月12日
发明者侯锦峰, 刘健, 徐杰, 隆克平 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1