一种构建在线实时更新海量音频指纹库的方法和设备的制造方法
【技术领域】
[0001]本发明涉及音频指纹识别技术领域,具体涉及一种构建在线实时更新海量音频指纹库的方法和设备。
【背景技术】
[0002]音频指纹识别(俗称“听音识曲”)是一种新兴的音乐搜索技术,该技术通过分析音频文件的频谱,提取称为“音频指纹”的数字特征,并使用数字特征构建“海量音频指纹库”,部署于网络服务器上,客户端可将录制的未知音频片段发送到服务器,服务器使用相同的算法提取“音频指纹”,然后通过搜索算法在海量音频指纹库中查找相似特征,并根据找到的若干特征推测目标音频文件,将结果返回给客户端即完成了整个识别过程。音频指纹识别是一种兼具数据密集型和计算密集型的应用:海量音频指纹库必须包含足够多的音频文件的特征,才能保证应用的识别率,该规模通常为千万级;搜索算法的计算量巨大,为了保证搜索速度,通常首先离线构建指纹库,并进行序列化处理生成一个文件,以使数据连续存储,避免过多指针跳转操作,然后将索引文件完全加载到内存中提供检索服务。
[0003]现有技术中海量音频指纹库的更新方法,由于索引数据连续存储在一块内存中,通常的解决方案很难支持在线添加、删除音频指纹索引数据,故每次更新均需将服务器重启。图1所示,现有的解决方案一般将海量音频指纹索引库划分为多个固定小的音频指纹库(块1、块2……块η),积攒一定数量的新数据后,需要离线重建最后一个不满的音频指纹库(块η),然后重新启动服务(重启服务更新块η),将最新的音频指纹库替换到线上。由此可知,离线建库,重启服务的索引数据更新方法具有操作繁琐、更新不及时等固有缺陷,无法提供及时的新歌搜索服务,因此,研发一种在线实时更新海量音频指纹库索引数据的方法成为一种必需。
【发明内容】
[0004]为此,本发明提供一种构建在线实时更新音频指纹库的方法和设备,解决现有技术中海量音频指纹库不方便在线实时更新的技术问题。
[0005]为此,本发明提供一种构建在线实时更新音频指纹库的方法,包括:建立具有相同key值的音频指纹与所述key值的对应关系;建立包含每个key值与其对应音频指纹的索引列表,使索引列表中的每一个key值均以指针的形式指向其对应的音频指纹;以及将具有相同key值的音频指纹连续存储。
[0006]根据本发明的一个实施方式,其中,建立具有相同key值的音频指纹与所述key值的对应关系包括:将具有相同key值的音频指纹划分为同一数组;并且其中,建立包含每个key值与其对应音频指纹的索引列表包括:使所述索引列表包括数量与key值数量相同的数组。
[0007]根据本发明的一个实施方式,其中,进一步包括:在线添加音频指纹,包括:将待添加音频指纹按照其对应key值进行分组,每组中的所述待添加音频指纹具有相同的对应key值;在所述索引列表中查找与所述对应key值相同的key值,以定位待更新音频指纹;复制所述待更新音频指纹;将具有相同key值的待更新音频指纹和所述待添加音频指纹连续存放,以获得新音频指纹;将所述索引列表中指向所述待更新音频指纹的key值的指针,指向所述新音频指纹;将所述待更新音频指纹延迟删除。
[0008]根据本发明的一个实施方式,其中,若所述待添加音频指纹中的key值不包含在所述索引列表中,则将其视为新建key值;将所述新建key值连续添加至所述索引列表中后,将与所述新建key值相对应的音频指纹连续存放在所述待更新音频指纹中。
[0009]根据本发明的一个实施方式,其中,进一步包括:在线删除音频指纹,包括:将待删除音频指纹按照所述key值进行分组,每组中的所述待删除音频指纹具有相同的对应key值;在所述索引列表中查找与所述对应key值相同的key值,以定位待消除音频指纹;复制所述待消除音频指纹;将复制的所述待消除音频指纹中与位于所述分组中音频指纹相同的音频指纹删除,获得新音频指纹;将所述索引列表中指向所述待消除音频指纹的key值处的指针,指向所述新音频指纹;将所述待消除音频指纹延迟删除。
[0010]根据本发明的一个实施方式,其中,所述延迟删除,通过后台线程加以实现。
[0011]为此,本发明提供一种构建在线实时更新音频指纹库的设备,包括:用于建立具有相同key值的音频指纹与所述key值的对应关系的装置;用于建立包含每个key值与其对应音频指纹的索引列表的装置,所述索引列表中的每一个key值均以指针的形式指向其对应的音频指纹;以及用于将具有相同key值的音频指纹连续存储的装置。
[0012]根据本发明的一个实施方式,其中,进一步包括:用于在线添加音频指纹的装置,包括:用于将待添加音频指纹按照其对应key值进行分组,每组中的所述待添加音频指纹具有相同的对应key值的装置;用于在所述索引列表中查找与所述对应key值相同的key值,以定位待更新音频指纹的装置;用于复制所述待更新音频指纹的装置;用于将具有相同key值的待更新音频指纹和所述待添加音频指纹连续存放,以获得新音频指纹的装置;用于将所述索引列表中指向所述待更新音频指纹的key值的指针,指向所述新音频指纹的装置;用于将所述待更新音频指纹延迟删除的装置。
[0013]根据本发明的一个实施方式,其中,进一步包括:用于在线删除音频指纹的装置,包括:用于将待删除音频指纹按照所述key值进行分组,每组中的所述待删除音频指纹具有相同的对应key值的装置;用于在所述索引列表中查找与所述对应key值相同的key值,以定位待消除音频指纹的装置;用于复制所述待消除音频指纹的装置;用于将复制的所述待消除音频指纹中与位于所述分组中音频指纹相同的音频指纹删除,获得新音频指纹的装置;用于将所述索引列表中指向所述待消除音频指纹的key值处的指针,指向所述新音频指纹的装置;用于将所述待消除音频指纹延迟删除的装置。
[0014]本发明通过提供一种构建在线实时更新音频指纹库的方法,可使在线服务引擎支持实时添加、删除歌曲指纹,可在I秒钟之内完成,而且不会影响搜索服务,避免了离线建库、重启服务所带来的繁琐和耗时的工作,同时保证了海量音频指纹库的数据时效性,可随时将最新的歌曲添加到在线服务,并可将过期或出现问题的歌曲从在线服务中删除,实现了秒级的数据更新需求响应能力,对于数据即服务的音频检索服务来说意义重大。
[0015]进一步的,本发明打破了严格数据连续性的限制条件,将海量音频指纹库按照键(key值)进行划分,每个键(key值)的音频指纹(value)依然是连续存放的,这样,虽带来了少量了地址跳转操作,但避免了多个索引块的设计,索引结构为一个整体,搜索时无需遍历多个索引块,因此,整体性能有所提高。
[0016]进一步的,本发明提出的通过更新并替换每个键(key值)的音频指纹(value)的方法实现了在线实时添加、删除歌曲指纹,并通过异步、延迟删除过期数据,异步持久化数据到文件中等方法,可保证在线搜索服务不受索引更新工作的影响,从而实现了对实时数据更新需求的响应。
【附图说明】
[0017]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为现有技术中海量音频指纹库更新方法示意图;
[0019]图2为本发明实施例1中构建在线实时更新音频指纹库的方法流程图;
[0020]图3为本发明实施例1中具有相同key值的音频指纹与所述key值的对应关系示意图;
[0021]图4为本发明实施例2中索引列表的一个实施方式步骤示意图;
[0022]图5为本发明实施例2中索引列表结构示意图;
[0023]图6为本发明实施例2中建立包含每个key值与其对应音频指纹的索引列表的具体操作流程示意图;
[0024]图7为本发明实施例3中构建在线实时更新音频指纹库的方法流程图;
[0025]图8为本发明实施例3中在线添加音频指纹操作流程图;
[0026]图9为本发明实施例3中延迟删除操作流程图;
[0027]图10为本发明实施例3中特殊情况下在线添加音频指纹操作流程图;
[0028]图11为本发明实施例4中在线添加音频指纹操作流程图;
[0029]图12为本发明实施例4中在线删除音频指纹操作流程图;
[0030]图13为本发明实施例5中构建在线实时更新音频指纹库的设备结构示意图;
[0031]图14为本发明实施例6中构建在线实时更新音频指纹库的设备结构示意图;
[0032]图15为本发明实施例6中用于在线添加音频指纹的装置结构示意图;
[0033]图16为本发明实施例7中构建在线实时更新音频指纹库的设备结构示意图;
[0034]图17为本发明实施例7中用于在线删除音频指纹的装置结构示意图;
[0035]图18为本发明支持在线实时更新的海量音频指纹库结构示意图;
[0036]图19为本发明在线实时添加音频指纹的方法示意图;
[0037]图20为本发明在线实时删除音频指纹的方法示意图。
【具体实施方式】
[0038]下面结合说明书附图及实施例,对本发明的【具体实施方式】作