首页 / 国际专利分类库 / 物理 / 乐器;声学 / 歌曲旋律信息处理方法和装置

歌曲旋律信息处理方法和装置

申请号 CN201610158349.7 申请日 2016-03-18 公开(公告)号 CN107203571B 公开(公告)日 2019-08-06
申请人 腾讯科技(深圳)有限公司; 发明人 朱碧磊; 郑昉劢; 金星明; 李科; 吴永坚; 黄飞跃;
摘要 本 发明 涉及一种歌曲旋律信息处理方法和装置,所述方法包括:收集已有的MIDI文件;获取所述MIDI文件的歌曲标识,并根据所述MIDI文件生成第一旋律信息,将所述第一旋律信息与所述歌曲标识对应存储到所述歌曲旋律 数据库 ;获取用户终端上传的用户清唱音频数据集合;根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;将所述第二旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库。本发明提供的歌曲旋律信息处理方法和装置,不但降低了建立歌曲旋律数据库的成本,而且在利用该歌曲旋律数据库进行哼唱识别时可以提高识别命中率。
权利要求

1.一种歌曲旋律信息处理方法,所述方法包括:
获取用户终端上传的用户清唱音频数据集合;所述用户清唱音频数据集合中的用户清唱音频数据,是用户按照播放的歌曲伴奏进行清唱得到的;
根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;
将所述第二旋律信息与所述歌曲标识对应存储到歌曲旋律数据库
根据所述歌曲旋律数据库对待识别的哼唱特征数据进行哼唱识别。
2.根据权利要求1所述的方法,其特征在于,所述根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息之前,还包括:
从所述用户清唱音频数据集合中过滤掉以下至少一种用户清唱音频数据:
不完整的用户清唱音频数据;
未佩戴机录制的用户清唱音频数据;
判定存在噪声或者伴奏的用户清唱音频数据。
3.根据权利要求1所述的方法,其特征在于,所述根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息,包括:
遍历所述用户清唱音频数据集合,提取遍历的用户清唱音频数据的音高;
对遍历的用户清唱音频数据进行音符起点检测,获得与提取的音高对应的音符起点时间;
将所述音高和相应的音符起点时间组成为与遍历的用户清唱音频数据的歌曲标识对应的第二旋律信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取用于向所述用户终端提供歌曲服务的歌曲音频数据集合;
根据所述歌曲音频数据集合提取与所述歌曲标识对应的第三旋律信息;
将所述第三旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库。
5.根据权利要求4所述的方法,其特征在于,所述根据所述歌曲音频数据集合提取与所述歌曲标识对应的第三旋律信息,包括:
遍历所述歌曲音频数据集合,获取遍历的歌曲音频数据的主旋律音高包络;
将所述主旋律音高包络中的音高按照固定时间长度进行合并,获得合并后的音高以及相应的音符起点时间;
将所述合并后的音高以及相应的音符起点时间组成为与遍历的歌曲音频数据的歌曲标识对应的第三旋律信息。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
接收待识别的哼唱特征数据;
获取所述哼唱特征数据和所述歌曲旋律数据库中每条旋律信息的相似度;
从获取的相似度中筛选出高于预设相似度阈值的相似度;
获取筛选出的相似度对应的歌曲标识;
根据获取的歌曲标识生成哼唱识别结果。
7.一种歌曲旋律信息处理装置,其特征在于,所述装置包括:
第二渠道数据获取模,用于获取用户终端上传的用户清唱音频数据集合;所述用户清唱音频数据集合中的用户清唱音频数据,是用户按照播放的歌曲伴奏进行清唱得到的;
第二旋律信息提取模块,用于根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;将所述第二旋律信息与所述歌曲标识对应存储到歌曲旋律数据库;
哼唱识别模块,用于根据所述歌曲旋律数据库对待识别的哼唱特征数据进行哼唱识别。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
过滤模块,用于从所述用户清唱音频数据集合中过滤掉以下至少一种用户清唱音频数据:
不完整的用户清唱音频数据;
未佩戴耳机录制的用户清唱音频数据;
判定存在噪声或者伴奏的用户清唱音频数据。
9.根据权利要求7所述的装置,其特征在于,所述第二旋律信息提取模块具体用于遍历所述用户清唱音频数据集合,提取遍历的用户清唱音频数据的音高;对遍历的用户清唱音频数据进行音符起点检测,获得与提取的音高对应的音符起点时间;将所述音高和相应的音符起点时间组成为与遍历的用户清唱音频数据的歌曲标识对应的第二旋律信息。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三渠道数据获取模块,用于获取用于向所述用户终端提供歌曲服务的歌曲音频数据集合;
第三旋律信息提取模块,用于根据所述歌曲音频数据集合提取与所述歌曲标识对应的第三旋律信息;将所述第三旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库。
11.根据权利要求10所述的装置,其特征在于,所述第三旋律信息提取模块具体用于遍历所述歌曲音频数据集合,获取遍历的歌曲音频数据的主旋律音高包络;将所述主旋律音高包络中的音高按照固定时间长度进行合并,获得合并后的音高以及相应的音符起点时间;将所述合并后的音高以及相应的音符起点时间组成为与遍历的歌曲音频数据的歌曲标识对应的第三旋律信息。
12.根据权利要求7至11中任一项所述的装置,其特征在于,所述哼唱识别模块还用于接收待识别的哼唱特征数据;获取所述哼唱特征数据和所述歌曲旋律数据库中每条旋律信息的相似度;从获取的相似度中筛选出高于预设相似度阈值的相似度;获取筛选出的相似度对应的歌曲标识;根据获取的歌曲标识生成哼唱识别结果。
13.一种服务器,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现权利要求1至6中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。

说明书全文

歌曲旋律信息处理方法和装置

技术领域

[0001] 本发明涉及音频处理技术领域,特别是涉及一种歌曲旋律信息处理方法和装置。

背景技术

[0002] 哼唱识别是音频处理技术的一种重要应用,通过录制用户哼唱出的一段音频,从歌曲旋律数据库查找与该段音频匹配的旋律信息,从而返回该匹配的旋律信息所对应的歌曲信息,便可实现哼唱识别。可见,哼唱识别技术依赖于丰富的歌曲旋律数据库。
[0003] 目前建立歌曲旋律数据库完全采用MIDI(Musical Instrument Digital Interface,乐器数字接口)文件,而MIDI文件的制作需要专业音乐人员采用专用设备进行制作,制作成本极高。而实现哼唱识别所需要的歌曲旋律数据库中的旋律信息条数一般会达到百万量级,建立歌曲旋律数据库以实现哼唱识别的成本太高,限制了哼唱识别技术的应用和发展。

发明内容

[0004] 基于此,有必要针对目前歌曲旋律数据库建立成本太高的问题,提供一种歌曲旋律信息处理方法和装置。
[0005] 一种歌曲旋律信息处理方法,所述方法包括:
[0006] 收集已有的MIDI文件;
[0007] 获取所述MIDI文件的歌曲标识,并根据所述MIDI文件生成第一旋律信息,将所述第一旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库;
[0008] 获取用户终端上传的用户清唱音频数据集合;
[0009] 根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;
[0010] 将所述第二旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库。
[0011] 一种歌曲旋律信息处理装置,所述装置包括:
[0012] 第一渠道数据收集模,用于收集已有的MIDI文件;
[0013] 第一旋律信息提取模块,用于获取所述MIDI文件的歌曲标识,并根据所述MIDI文件生成第一旋律信息,将所述第一旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库;
[0014] 第二渠道数据获取模块,用于获取用户终端上传的用户清唱音频数据集合;
[0015] 第二旋律信息提取模块,用于根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;将所述第二旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库。
[0016] 上述歌曲旋律信息处理方法和装置,利用已有的MIDI文件以及用户终端上传的用户清唱音频数据集合的多个渠道的数据来建立歌曲旋律数据库中,可以不用再制作专的MIDI文件,极大地降低了建立歌曲旋律数据库的成本。而且,歌曲旋律数据库中相同的歌曲标识可以对应由不同渠道的音频数据所转录成的旋律信息,在利用该歌曲旋律数据库进行哼唱识别时可以提高识别命中率。附图说明
[0017] 图1为一个实施例中歌曲音频数据处理系统的应用环境图;
[0018] 图2为一个实施例中服务器的内部结构图;
[0019] 图3为一个实施例中歌曲旋律信息处理方法的流程示意图;
[0020] 图4为一个实施例中从歌曲音频数据集合补充旋律信息到歌曲旋律数据库的步骤的流程示意图;
[0021] 图5为一个实施例中从多个渠道获取音频数据以建立歌曲旋律数据库的过程示意图;
[0022] 图6为一个实施例中根据用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息的步骤的流程示意图;
[0023] 图7为一个实施例中将用户清唱音频数据集合转录获得第二旋律信息的过程示意图;
[0024] 图8为一个实施例中根据歌曲音频数据集合提取与歌曲标识对应的第三旋律信息的步骤的流程示意图;
[0025] 图9为一个实施例中利用歌曲旋律数据库进行哼唱识别的步骤的流程示意图;
[0026] 图10为一个实施例中三种建库方案下建立的歌曲旋律数据库用于哼唱识别时的哼唱识别性能比较示意图;
[0027] 图11为一个实施例中歌曲旋律信息处理装置的结构框图
[0028] 图12为另一个实施例中歌曲旋律信息处理装置的结构框图;
[0029] 图13为再一个实施例中歌曲旋律信息处理装置的结构框图;
[0030] 图14为又一个实施例中歌曲旋律信息处理装置的结构框图。

具体实施方式

[0031] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0032] 如图1所示,在一个实施例中,提供了一种歌曲音频数据处理系统,包括用户终端110(如图1所示的用户终端110a、110b以及110c)、哼唱识别服务器120、演唱服务器130和歌曲服务器140,其中用户终端110包括移动终端、车载设备和个人计算机等,移动终端包括手机、平板电脑、智能手表或者个人数字助理(PDA)等中的至少一种。哼唱识别服务器120、演唱服务器130和歌曲服务器140均可以是独立的物理服务器也可以是物理服务器集群。用户终端110上安装有哼唱识别应用程序、演唱应用程序以及歌曲播放应用程序。用户终端110通过哼唱识别应用程序与哼唱识别服务器120通信,通过演唱应用程序与演唱服务器130通信,通过歌曲播放应用程序与歌曲服务器140通信。
[0033] 如图2所示,在一个实施例中,提供了一种服务器,可用作哼唱识别服务器120,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中处理器具有计算功能和控制服务器120工作的功能,该处理器被配置为执行一种歌曲旋律信息处理方法,该方法包括:收集已有的MIDI文件;获取所述MIDI文件的歌曲标识,并根据所述MIDI文件生成第一旋律信息,将所述第一旋律信息与所述歌曲标识对应存储到歌曲旋律数据库;获取用户终端上传的用户清唱音频数据集合;根据所述用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;将所述第二旋律信息与所述歌曲标识对应存储到所述歌曲旋律数据库。非易失性存储介质包括磁存储介质、光存储介质和闪存式存储介质中的至少一种。非易失性存储介质存储有操作系统,还存储有歌曲旋律信息处理装置,该歌曲旋律信息处理装置用于实现一种歌曲旋律信息处理方法。网络接口用于通过网络连接到用户终端110。
[0034] 如图3所示,在一个实施例中,提供了一种歌曲旋律信息处理方法,本实施例以该方法应用于上述图1和图2中的哼唱识别服务器120来举例说明。该方法具体包括如下步骤:
[0035] 步骤302,收集已有的MIDI文件。
[0036] 具体地,哼唱识别服务器可收集已经存在的MIDI文件,构成MIDI文件集合。哼唱识别服务器具体可从网络爬取已有的MIDI文件集合,还可以从存储MIDI文件的第一方服务器拉取已有的MIDI文件集合。
[0037] 步骤304,获取MIDI文件的歌曲标识,并根据MIDI文件生成第一旋律信息,将第一旋律信息与歌曲标识对应存储到歌曲旋律数据库。
[0038] 具体地,哼唱识别服务器可遍历MIDI文件集合中的每个MIDI文件,提取MIDI文件中的歌曲识别信息,从而根据提取的歌曲识别信息获得相应的歌曲标识。歌曲识别信息比如歌曲名称或者歌手名称等可识别出歌曲的信息。MIDI文件本身包括音高和相应的时间信息,每个音高表示一个音符,因此MIDI文件本身所包括的音高和相应的时间信息就可以构成第一旋律信息,哼唱识别服务器再将第一旋律信息补充到歌曲旋律数据库中。
[0039] 步骤306,获取用户终端上传的用户清唱音频数据集合。
[0040] 具体地,用户清唱音频数据是指记录了用户演唱声音但没有背景音乐的数据,用户终端可通过演唱应用程序录制与歌曲标识对应的用户清唱音频数据,并将录制的用户清唱音频数据上传到演唱服务器,在演唱服务器上形成用户清唱音频数据集合。哼唱识别服务器可定期从演唱服务器获取用户清唱音频数据集合,或者演唱服务器可定期或者新增用户清唱音频数据时,将演唱服务器上的用户清唱音频数据集合同步到哼唱识别服务器。
[0041] 其中,用户终端在通过演唱应用程序录制用户清唱音频数据时,可通过机播放与相应的歌曲标识对应的歌曲伴奏,由用户按照播放的歌曲伴奏进行清唱,用户终端通过其拾音器获取到用户的清唱声音,并通过用户终端的处理器处理而获得用户清唱音频数据。
[0042] 步骤308,根据用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息。
[0043] 具体地,哼唱识别服务器可遍历用户清唱音频数据集合中的每个用户清唱音频数据,从遍历的用户清唱音频数据中提取第二旋律信息。旋律信息是指可反映出歌曲的音高随时间变化的趋势的信息,可通过一系列音高和相应的时间信息的对应关系来表示旋律信息。时间信息比如音高的开始时间,或者音高的持续时长。第二旋律信息是指从用户清唱音频数据集合中提取的旋律信息,与下述的第三旋律信息相区别。
[0044] 步骤310,将第二旋律信息与歌曲标识对应存储到歌曲旋律数据库。
[0045] 具体地,哼唱识别服务器可包括专门的数据库服务器,哼唱识别服务器在提取出第二旋律信息后,可将提取出的第二旋律信息与相应的歌曲标识对应地存储到数据库服务器上的歌曲旋律数据库中。歌曲标识是歌曲的唯一标识,可以用一串唯一的字符串表示,不同的歌曲可通过歌曲名称和歌手名称来区分,不同的歌曲被分配不同的歌曲标识。
[0046] 上述歌曲旋律信息处理方法,利用已有的MIDI文件以及用户终端上传的用户清唱音频数据集合的多个渠道的数据来建立歌曲旋律数据库中,可以不用再制作专门的MIDI文件,极大地降低了建立歌曲旋律数据库的成本。而且,歌曲旋律数据库中相同的歌曲标识可以对应由不同渠道的音频数据所转录成的旋律信息,在利用该歌曲旋律数据库进行哼唱识别时可以提高识别命中率。
[0047] 如图4所示,在一个实施例中,该歌曲旋律信息处理方法还包括从歌曲音频数据集合补充旋律信息到歌曲旋律数据库的步骤,具体包括如下步骤:
[0048] 步骤402,获取用于向用户终端提供歌曲服务的歌曲音频数据集合。
[0049] 具体地,歌曲服务器上存储有歌曲音频数据构成的歌曲音频数据集合,歌曲音频数据集合中的每个歌曲音频数据具有相应的歌曲标识。歌曲服务器可接收用户终端通过歌曲播放应用程序触发的歌曲获取请求,根据歌曲获取请求获取歌曲标识,从而根据获取到的歌曲标识从歌曲音频数据集合中提取相应的歌曲音频数据并反馈给用户终端,由用户终端播放。哼唱识别服务器可定期从歌曲服务器获取歌曲音频数据集合,或者歌曲服务器可定期或者新增歌曲音频数据时,将歌曲服务器上的歌曲音频数据集合同步到哼唱识别服务器。
[0050] 步骤404,根据歌曲音频数据集合提取与歌曲标识对应的第三旋律信息。
[0051] 具体地,哼唱识别服务器可遍历歌曲音频数据集合中的每个歌曲音频数据,从遍历的歌曲音频数据中提取第三旋律信息。第三旋律信息是指从歌曲音频数据集合中提取的旋律信息。
[0052] 步骤406,将第三旋律信息与歌曲标识对应存储到歌曲旋律数据库。
[0053] 具体地,哼唱识别服务器可包括专门的数据库服务器,哼唱识别服务器在提取出第三旋律信息后,可将提取出的第三旋律信息与相应的歌曲标识对应地存储到数据库服务器上的歌曲旋律数据库中。上述步骤306至步骤310,以及步骤312至步骤316的顺序可以互换或者并行处理。
[0054] 本实施例中,参照图5,MIDI文件可直接加入到歌曲旋律数据库中,用户清唱音频数据集合以及歌曲音频数据集合可通过转录获得用音符的音高和时间信息表示的旋律信息,这样利用多个渠道的数据进行混合建库,在降低建库成本的同时,还可以显著提高识别哼唱识别性能。
[0055] 在一个实施例中,步骤308之前,还包括:从用户清唱音频数据集合中过滤掉以下至少一种用户清唱音频数据:不完整的用户清唱音频数据;未佩戴耳机录制的用户清唱音频数据;判定存在噪声或者伴奏的用户清唱音频数据。
[0056] 其中,不完整的用户清唱音频数据是指未包含整首歌曲的内容的用户清唱音频数据,比如用户只唱了一首歌曲的一部分就结束录制,获得了不完整的用户清唱音频数据。哼唱识别服务器可将音频时间长度小于预设时间长度的用户清唱音频数据识别为不完整的用户清唱音频数据。
[0057] 哼唱识别服务器也可以根据用户清唱音频数据所携带的是否完整的标记来识别出不完整的用户清唱音频数据。该标记可由用户终端通过演唱应用程序在录制用户清唱音频数据结束时添加,具体用户终端可获取歌曲伴奏的伴奏结束时间点,判断录制结束时的录制结束时间点是否大于等于该伴奏结束时间点,若是则添加表示完整的标记,若否则添加表示不完整的标记。未佩戴耳机录制的用户清唱音频数据也可通过用户清唱音频数据所携带的是否佩戴耳机录制的标记来进行识别。
[0058] 存在噪声或者伴奏的用户清唱音频数据的判定可基于如下假设:对于一般的歌曲音频数据,人声通常分布在其中的一部分,而噪声和伴奏则会占满整段音频。因此,干净的用户清唱音频数据中应该只会有一定比例的区域有明显的能量存在。如果整个音频区域都存在明显能量,则该音频已经被污染。
[0059] 具体地,哼唱识别服务器可获取一个用户清唱音频数据,对该用户清唱音频数据在时间轴上分,然后计算每个音频帧的均方根能量,并统计均方根能量大于某个阈值的音频帧的数量。如果统计的音频帧的数量占整个用户清唱音频数据音频帧总数的比值符合先验比例,则判定该用户清唱音频数据是干净的用户清唱音频数据,若不符合则判定该用户清唱音频数据存在噪声或者伴奏。
[0060] 本实施例中,由于不完整的用户清唱音频数据只包含一首歌曲的部分旋律信息,若用户哼唱的正好是该用户清唱音频数据所不包括的内容,就无法被正确识别,而且因为该用户清唱音频数据的存在会增加搜索歌曲旋律数据库的时间,降低了哼唱识别性能。而过滤掉未佩戴耳机录制的用户清唱音频数据,和/或,过滤掉判定存在噪声或者伴奏的用户清唱音频数据,可防止不准确的用户清唱音频数据影响到歌曲旋律数据库用作哼唱识别时的识别性能。
[0061] 参照图6和图7,在一个实施例中,步骤308具体包括如下步骤:
[0062] 步骤602,遍历用户清唱音频数据集合,提取遍历的用户清唱音频数据的音高。
[0063] 具体地,音高是听觉对声音在音阶上按从低到高顺序排列的感知属性。音高的提取过程也就是基音的提取过程,基音的频率称为基频,是语音中频率很低的纯音,但是振幅却是最大的,基音决定了整个音符的音高。
[0064] 哼唱识别服务器可采用时域上事件发生率检测法、自相关函数法或者YAAPT(Yet Another Algorithm for Pitch Tracking)算法等基频提取算法来提取基频,从而根据频率和音高的对应关系将基频转化为音高。时域上事件发生率检测法基于这样的理论,音频波形在时域上的表现是周期性的,在一定时间段中重复发生的事件次数也是可以统计的,统计出每秒钟这些事件所发生的次数就能估算出基频。时域上事件发生率检测法比如过零率(ZCR)算法,波峰率(Peak rate)算法或者斜坡率(Slope event rate)算法。
[0065] 自相关函数法中,考虑到用户清唱音频数据是一种语音信号,而语音信号是一种随时间而变化的信号,语音信号具有短时平稳的特性,这样可以把用户清唱音频数据分为一组音频帧来处理。语音信号的分帧是通过加窗来实现的,窗函数可以是矩形窗或者汉明窗。
[0066] 用户清唱音频数据的自相关函数可以记为公式(1):
[0067]
[0068] 其中,rt(τ)表示时间t处的自相关函数,xi,i=1,…,2W表示用户清唱音频数据,是近似周期信号;W是窗函数的尺寸,t表示时间,τ表示时延。当τ等于基频周期整数倍时会产生一个极大值,因此可以通过计算自相关函数寻找极大值来估计用户清唱数据的基频。
[0069] 在一个实施例中,哼唱识别服务器可采用基于自相关函数的YIN算法来提取用户清唱音频数据的音高。YIN算法是一种适用于语音和音乐的基频估计算法(a fundamental frequency estimator for speech and music),具体可通过以下步骤估计出基频,包括以下步骤1)至步骤4):
[0070] 1),计算用户清唱音频数据的自相关函数,具体根据上述公式(1)计算。
[0071] 2),根据自相关函数计算差分函数。
[0072] 其中,差分函数可表示为如下公式(2):
[0073]
[0074] 在给定自相关函数rt(τ)的情况下,差分函数的计算可简化为如下公式(3)[0075] dt(τ)=rt(0)+rt+τ(0)-2rt(τ)   公式(3)
[0076] 3),对差分函数dt(τ)进行累积平均归一化,获得归一化差分函数dt'(τ)。通过累积平均归一化可补偿因共振峰共振在高频处产生的较小值。
[0077]
[0078] 4),获取预设阈值s,寻找dt'(τ)取得局部最小值且dt'(τ)<s的最小时延τmin。估计出基频f0=1/τmin。进而可根据估计出的基频获得相应的音高。
[0079] 步骤604,对遍历的用户清唱音频数据进行音符起点检测,获得与提取的音高对应的音符起点时间。
[0080] 具体地,哼唱识别服务器可采用基于相位特征的音乐音符起点检测算法对用户清唱音频数据进行音符起点检测,也可以采用基于差分全相位MFCC(Mel Frequency Cepstral Coefficents,梅尔频率倒谱系数)的音符起点自动检测方法进行检测。
[0081] 在一个实施例中,哼唱识别服务器可采用一种基于运用心理声学知识的音符起点检测(Sound onset detection by applying psychoacoustic knowledge)方法进行音符起点检测,具体包括:利用滤波器将用户清唱音频数据划分为若干频率子带;在每个频率子带中提取幅值包络A(t),并计算一阶相对差分函数 提取W(t)的局部最大值作为音符起点分量,估计音符起点分量的时间和强度;将不同频率子带的音符起点分量的时间和强度融合以确定最终的音符起点时间。
[0082] 步骤606,将音高和相应的音符起点时间组成为与遍历的用户清唱音频数据的歌曲标识对应的第二旋律信息。
[0083] 具体地,哼唱识别服务器将提取出的音高和与该音高相应的音符起点时间组成音符序列,形成与遍历的用户清唱音频数据的歌曲标识对应的第二旋律信息。完成遍历之后,可获得与用户清唱音频数据集合对应的第二旋律信息集合。
[0084] 本实施例中,遍历用户清唱音频数据集合来提取音高,并进行音符起点检测获得音高对应的音符起点时间,从而根据提取的音高和相应的音符起点时间构成第二旋律信息,使得提取的第二旋律信息更加准确,使得最终获得的歌曲旋律数据库在用于哼唱识别时哼唱识别准确率更高。
[0085] 在一个实施例中,参照图8,步骤314具体包括如下步骤:
[0086] 步骤802,遍历歌曲音频数据集合,获取遍历的歌曲音频数据的主旋律音高包络。
[0087] 具体地,哼唱识别服务器可采用已有的主旋律提取方法,比如基于和谐泛音检测的主旋律提取技术,从遍历的歌曲音频数据中提取主旋律音高包络。歌曲一般包括多个旋律线的歌曲,多个旋律线包括演唱者歌声的主旋律线以及背景音乐的旋律线等。音高包络(pitch contour)也称为音高轮廓,是时间上连续的基音序列。
[0088] 在一个实施例中,哼唱识别服务器可通过使用音高轮廓的复调音乐旋律特征信号的提取(Melody Extraction from Polyphonic Music Signals using Pitch Contour Characteristics)方法来提取歌曲音频数据的主旋律音高包络。具体可先对歌曲音频数据进行短时傅里叶变换,提取每个音频帧的频谱峰值;提取歌曲音频数据的候选音高,根据提取的频谱峰值并通过谐波加和方法计算每个候选音高的显著性函数;提取每个音频帧中显著性函数的峰值,并将时间和频率上连续的峰值连接起来构成音高包络;为每条音高包络计算一系列特征值,从而根据计算的特征值来选择具有主旋律特征的主旋律音高包络。
[0089] 步骤804,将主旋律音高包络中的音高按照固定时间长度进行合并,获得合并后的音高以及相应的音符起点时间。
[0090] 具体地,本实施例中哼唱识别服务器在确定音符起点时间时并不进行音符起点检测,而是按照遍历的歌曲音频数据中的时间戳,直接将音高包络中固定时间长度内的所有音高合并为一个音符的音高,比如将每50毫秒的音高合并为一个音符的音高。合并后的音高可以取合并后的音高所对应的合并前的所有音高的平均值。合并后的音高的音符起点时间可以取相应的合并前的所有音高中最早音高对应的时间。
[0091] 步骤806,将合并后的音高以及相应的音符起点时间组成为与遍历的歌曲音频数据的歌曲标识对应的第三旋律信息。
[0092] 具体地,哼唱识别服务器将合并后的音高和相应的音符起点时间组成音符序列,形成与遍历的歌曲音频数据的歌曲标识对应的第三旋律信息。完成遍历后,可获得与歌曲音频数据集合对应的第三旋律信息集合。
[0093] 本实施例中,由于歌曲音频数据是普遍存在的一种歌曲音频资源,比如一般流行歌曲的音频数据。利用为用户终端提供歌曲服务的歌曲音频数据集合来提取第三旋律信息,可以使得歌曲旋律数据库具有很高的歌曲覆盖率,可进一步提高歌曲旋律数据库被用作哼唱识别时的识别性能。而在提取第三旋律信息时,并不进行音符起点检测,而是将主旋律音高包络中固定时间长度内的音高进行合并来确定音高以及音符起点时间,提高了计算效率且没有降低哼唱识别准确率。
[0094] 如图9所示,在一个实施例中,该歌曲旋律信息处理方法还包括利用歌曲旋律数据库进行哼唱识别的步骤,具体包括如下步骤:
[0095] 步骤902,接收待识别的哼唱特征数据。
[0096] 具体地,用户终端可通过哼唱识别应用程序录制待识别的哼唱音频数据,并对哼唱音频数据进行特征提取,获得待识别的哼唱特征数据,并将该哼唱特征数据上传到哼唱识别服务器,由哼唱识别服务器接收。用户终端还可以通过哼唱识别应用程序录制待识别的哼唱音频数据后,将哼唱音频数据直接上传到哼唱识别服务器,由哼唱识别服务器对哼唱音频数据进行特征提取,获得待识别的哼唱特征数据。哼唱特征数据包括音高特征以及音高特征对应的时间特征。
[0097] 步骤904,获取哼唱特征数据和歌曲旋律数据库中每条旋律信息的相似度。
[0098] 具体地,哼唱识别服务器可采用DTW(Dynamic Time Warping,动态时间归整)算法计算哼唱特征数据和歌曲旋律数据库中每条旋律信息的相似度。
[0099] 步骤906,从获取的相似度中筛选出高于预设相似度阈值的相似度。
[0100] 步骤908,获取筛选出的相似度对应的歌曲标识。
[0101] 具体地,哼唱识别服务器可遍历获取的所有相似度,将遍历的相似度与预设相似度阈值进行比较,若遍历的相似度大于预设相似度阈值则获取相应的歌曲标识加入到候选歌曲集合中,直至遍历完毕或者直至查找到指定数量的歌曲标识。哼唱识别服务器具体可从获取的相似度中筛选出高于预设相似度阈值且最大的相似度。
[0102] 步骤910,根据获取的歌曲标识生成哼唱识别结果。
[0103] 具体地,哼唱识别服务器可根据获取的歌曲标识获取相应的歌曲信息,比如歌曲名称、歌曲专辑名称、歌手名称、歌曲类别以及歌曲播放链接等中的一种或几种的组合,根据获取的歌曲信息生成哼唱识别结果,并将哼唱识别结果反馈给用户终端。
[0104] 本实施例中,利用根据多个渠道的音频数据建立的歌曲旋律数据库来进行哼唱识别,可以获得精确的哼唱识别结果。而且参照图10,使用MIDI文件结合用户清唱音频数据的建库方案,相比单纯的MIDI文件建库,哼唱识别的首位命中率提高15%以上,前五位命中率提高10%以上。使用MIDI文件、用户清唱音频数据以及歌曲音频数据的建库方案,相比使用MIDI文件结合用户清唱音频数据的建库方案又有一定提升。
[0105] 如图11所示,在一个实施例中,提供了一种歌曲旋律信息处理装置1100,包括:第一渠道数据收集模块1101、第一旋律信息提取模块1102、第二渠道数据获取模块1103、第二旋律信息提取模块1104。
[0106] 第一渠道数据收集模块1101,用于收集已有的MIDI文件。
[0107] 具体地,第一渠道数据收集模块1101可收集已经存在的MIDI文件,构成MIDI文件集合。第一渠道数据收集模块1101具体可从网络爬取已有的MIDI文件集合,还可以从存储MIDI文件的第一方服务器拉取已有的MIDI文件集合。
[0108] 第一旋律信息提取模块1102,用于获取MIDI文件的歌曲标识,并根据MIDI文件生成第一旋律信息,将第一旋律信息与歌曲标识对应存储到歌曲旋律数据库。
[0109] 具体地,第一旋律信息提取模块1102可遍历MIDI文件集合中的每个MIDI文件,提取MIDI文件中的歌曲识别信息,从而根据提取的歌曲识别信息获得相应的歌曲标识。歌曲识别信息比如歌曲名称或者歌手名称等可识别出歌曲的信息。MIDI文件本身包括音高和相应的时间信息,每个音高表示一个音符,因此MIDI文件本身所包括的音高和相应的时间信息就可以构成第一旋律信息,第一旋律信息提取模块1102再将第一旋律信息补充到歌曲旋律数据库中。
[0110] 第二渠道数据获取模块1103,用于获取用户终端上传的用户清唱音频数据集合。
[0111] 具体地,用户清唱音频数据是指记录了用户演唱声音但没有背景音乐的数据,用户终端可通过演唱应用程序录制与歌曲标识对应的用户清唱音频数据,并将录制的用户清唱音频数据上传到演唱服务器,在演唱服务器上形成用户清唱音频数据集合。第二渠道数据获取模块1103可定期从演唱服务器获取用户清唱音频数据集合,或者演唱服务器可定期或者新增用户清唱音频数据时,将演唱服务器上的用户清唱音频数据集合同步到第二渠道数据获取模块1103。
[0112] 其中,用户终端在通过演唱应用程序录制用户清唱音频数据时,可通过耳机播放与相应的歌曲标识对应的歌曲伴奏,由用户按照播放的歌曲伴奏进行清唱,用户终端通过其拾音器获取到用户的清唱声音,并通过用户终端的处理器处理而获得用户清唱音频数据。
[0113] 第二旋律信息提取模块1104,用于根据用户清唱音频数据集合提取与歌曲标识对应的第二旋律信息;将第二旋律信息与歌曲标识对应存储到歌曲旋律数据库。
[0114] 具体地,第二旋律信息提取模块1104可遍历用户清唱音频数据集合中的每个用户清唱音频数据,从遍历的用户清唱音频数据中提取第二旋律信息。旋律信息是指可反映出歌曲的音高随时间变化的趋势的信息,可通过一系列音高和相应的时间信息的对应关系来表示旋律信息。时间信息比如音高的开始时间,或者音高的持续时长。第二旋律信息是指从用户清唱音频数据集合中提取的旋律信息,与下述的第三旋律信息相区别。
[0115] 具体地,第二旋律信息提取模块1104在提取出第二旋律信息后,可将提取出的第二旋律信息与相应的歌曲标识对应地存储到数据库服务器上的歌曲旋律数据库中。歌曲标识是歌曲的唯一标识,可以用一串唯一的字符串表示,不同的歌曲可通过歌曲名称和歌手名称来区分,不同的歌曲被分配不同的歌曲标识。
[0116] 上述歌曲旋律信息处理装置1100,利用已有的MIDI文件以及用户终端上传的用户清唱音频数据集合的多个渠道的数据来建立歌曲旋律数据库中,可以不用再制作专门的MIDI文件,极大地降低了建立歌曲旋律数据库的成本。而且,歌曲旋律数据库中相同的歌曲标识可以对应由不同渠道的音频数据所转录成的旋律信息,在利用该歌曲旋律数据库进行哼唱识别时可以提高识别命中率。
[0117] 如图12所示,在一个实施例中,歌曲旋律信息处理装置1100还包括:第三渠道数据获取模块1105和第三旋律信息提取模块1106。
[0118] 第三渠道数据获取模块1105,用于获取用于向用户终端提供歌曲服务的歌曲音频数据集合。
[0119] 具体地,歌曲服务器上存储有歌曲音频数据构成的歌曲音频数据集合,歌曲音频数据集合中的每个歌曲音频数据具有相应的歌曲标识。歌曲服务器可接收用户终端通过歌曲播放应用程序触发的歌曲获取请求,根据歌曲获取请求获取歌曲标识,从而根据获取到的歌曲标识从歌曲音频数据集合中提取相应的歌曲音频数据并反馈给用户终端,由用户终端播放。第三渠道数据获取模块1105可定期从歌曲服务器获取歌曲音频数据集合,或者歌曲服务器可定期或者新增歌曲音频数据时,将歌曲服务器上的歌曲音频数据集合同步到第三渠道数据获取模块1105。
[0120] 第三旋律信息提取模块1106,用于根据歌曲音频数据集合提取与歌曲标识对应的第三旋律信息;将第三旋律信息与歌曲标识对应存储到歌曲旋律数据库。
[0121] 具体地,第三旋律信息提取模块1106可遍历歌曲音频数据集合中的每个歌曲音频数据,从遍历的歌曲音频数据中提取第三旋律信息。第三旋律信息是指从歌曲音频数据集合中提取的旋律信息。第三旋律信息提取模块1106在提取出第三旋律信息后,可将提取出的第三旋律信息与相应的歌曲标识对应地存储到数据库服务器上的歌曲旋律数据库中。
[0122] 本实施例中,参照图5,MIDI文件可直接加入到歌曲旋律数据库中,用户清唱音频数据集合以及歌曲音频数据集合可通过转录获得用音符的音高和时间信息表示的旋律信息,这样利用多个渠道的数据进行混合建库,在降低建库成本的同时,还可以显著提高识别哼唱识别性能。
[0123] 如图13所示,在一个实施例中,歌曲旋律信息处理装置1100还包括:过滤模块1107,用于从用户清唱音频数据集合中过滤掉以下至少一种用户清唱音频数据:不完整的用户清唱音频数据;未佩戴耳机录制的用户清唱音频数据;判定存在噪声或者伴奏的用户清唱音频数据。
[0124] 其中,不完整的用户清唱音频数据是指未包含整首歌曲的内容的用户清唱音频数据,比如用户只唱了一首歌曲的一部分就结束录制,获得了不完整的用户清唱音频数据。过滤模块1107可将音频时间长度小于预设时间长度的用户清唱音频数据识别为不完整的用户清唱音频数据。
[0125] 过滤模块1107也可以根据用户清唱音频数据所携带的是否完整的标记来识别出不完整的用户清唱音频数据。该标记可由用户终端通过演唱应用程序在录制用户清唱音频数据结束时添加,具体用户终端可获取歌曲伴奏的伴奏结束时间点,判断录制结束时的录制结束时间点是否大于等于该伴奏结束时间点,若是则添加表示完整的标记,若否则添加表示不完整的标记。未佩戴耳机录制的用户清唱音频数据也可通过用户清唱音频数据所携带的是否佩戴耳机录制的标记来进行识别。
[0126] 存在噪声或者伴奏的用户清唱音频数据的判定可基于如下假设:对于一般的歌曲音频数据,人声通常分布在其中的一部分,而噪声和伴奏则会占满整段音频。因此,干净的用户清唱音频数据中应该只会有一定比例的区域有明显的能量存在。如果整个音频区域都存在明显能量,则该音频已经被污染。
[0127] 具体地,过滤模块1107可获取一个用户清唱音频数据,对该用户清唱音频数据在时间轴上分帧,然后计算每个音频帧的均方根能量,并统计均方根能量大于某个阈值的音频帧的数量。如果统计的音频帧的数量占整个用户清唱音频数据音频帧总数的比值符合先验比例,则判定该用户清唱音频数据是干净的用户清唱音频数据,若不符合则判定该用户清唱音频数据存在噪声或者伴奏。
[0128] 本实施例中,由于不完整的用户清唱音频数据只包含一首歌曲的部分旋律信息,若用户哼唱的正好是该用户清唱音频数据所不包括的内容,就无法被正确识别,而且因为该用户清唱音频数据的存在会增加搜索歌曲旋律数据库的时间,降低了哼唱识别性能。而过滤掉未佩戴耳机录制的用户清唱音频数据,和/或,过滤掉判定存在噪声或者伴奏的用户清唱音频数据,可防止不准确的用户清唱音频数据影响到歌曲旋律数据库用作哼唱识别时的识别性能。
[0129] 在一个实施例中,第二旋律信息提取模块1104具体用于遍历用户清唱音频数据集合,提取遍历的用户清唱音频数据的音高;对遍历的用户清唱音频数据进行音符起点检测,获得与提取的音高对应的音符起点时间;将音高和相应的音符起点时间组成为与遍历的用户清唱音频数据的歌曲标识对应的第二旋律信息。
[0130] 本实施例中,遍历用户清唱音频数据集合来提取音高,并进行音符起点检测获得音高对应的音符起点时间,从而根据提取的音高和相应的音符起点时间构成第二旋律信息,使得提取的第二旋律信息更加准确,使得最终获得的歌曲旋律数据库在用于哼唱识别时哼唱识别准确率更高。
[0131] 在一个实施例中,第三旋律信息提取模块1106具体用于遍历歌曲音频数据集合,获取遍历的歌曲音频数据的主旋律音高包络;将主旋律音高包络中的音高按照固定时间长度进行合并,获得合并后的音高以及相应的音符起点时间;将合并后的音高以及相应的音符起点时间组成为与遍历的歌曲音频数据的歌曲标识对应的第三旋律信息。
[0132] 本实施例中,由于歌曲音频数据是普遍存在的一种歌曲音频资源,比如一般流行歌曲的音频数据。利用为用户终端提供歌曲服务的歌曲音频数据集合来提取第三旋律信息,可以使得歌曲旋律数据库具有很高的歌曲覆盖率,可进一步提高歌曲旋律数据库被用作哼唱识别时的识别性能。而在提取第三旋律信息时,并不进行音符起点检测,而是将主旋律音高包络中固定时间长度内的音高进行合并来确定音高以及音符起点时间,提高了计算效率且没有降低哼唱识别准确率。
[0133] 如图14所示,在一个实施例中,歌曲旋律信息处理装置1100还包括:哼唱识别模块1108,用于接收待识别的哼唱特征数据;获取哼唱特征数据和歌曲旋律数据库中每条旋律信息的相似度;从获取的相似度中筛选出高于预设相似度阈值的相似度;获取筛选出的相似度对应的歌曲标识;根据获取的歌曲标识生成哼唱识别结果。
[0134] 本实施例中,利用根据多个渠道的音频数据建立的歌曲旋律数据库来进行哼唱识别,可以获得精确的哼唱识别结果。而且参照图10,使用MIDI文件结合用户清唱音频数据的建库方案,相比单纯的MIDI文件建库,哼唱识别的首位命中率提高15%以上,前五位命中率提高10%以上。使用MIDI文件、用户清唱音频数据以及歌曲音频数据的建库方案,相比使用MIDI文件结合用户清唱音频数据的建库方案又有一定提升。
[0135] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
[0136] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0137] 以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
QQ群二维码
意见反馈