CN102289518A - 音频指纹检索库的更新方法及系统 - Google Patents
音频指纹检索库的更新方法及系统 Download PDFInfo
- Publication number
- CN102289518A CN102289518A CN2011102701854A CN201110270185A CN102289518A CN 102289518 A CN102289518 A CN 102289518A CN 2011102701854 A CN2011102701854 A CN 2011102701854A CN 201110270185 A CN201110270185 A CN 201110270185A CN 102289518 A CN102289518 A CN 102289518A
- Authority
- CN
- China
- Prior art keywords
- audio
- search
- frequency fingerprint
- library
- fingerprint
- 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
Images
Abstract
本发明涉及一种音频指纹检索库的更新方法及和系统,所述方法包括:将所有老歌曲的音频指纹和检索索引存入一基本检索库;将新歌曲的音频指纹和检索索引更新入一增量检索库;判断所述增量检索库的大小是否大于或等于预设的阈值,如是,则将所述增量检索库与基本检索库合并生成新的基本检索库,再将新歌曲的音频指纹和检索索引更新入一新的增量检索库;如否,则将新歌曲的音频指纹和检索索引更新入所述增量检索库。本发明针对经常有新歌曲加入的情况,当增量检索库比较小,更新增量检索库的代价非常小时,则每次只对增量检索库进行更新,从而节约了对音频指纹检索库的更新时间,实现了对音频指纹检索库的快速更新。
Description
技术领域
本发明涉及音频指纹检索技术领域,特别涉及一种音频指纹检索库的更新方法及系统。
背景技术
目前,用户经常会遇到这样的情况,当听到一首非常好听的歌曲但由于不知道这首歌曲的名字,无法通过各种渠道(如网络下载或到音像制品店购买)获取这首歌曲。
为帮助找到某首歌曲的歌名称,于是业界出现了一种音频指纹检索库技术来解决这个问题,简单来说,这种音频指纹检索库技术的基本原理是:先录制一段时间(通常为几秒钟)想知道歌名的歌曲的声音,然后将录制的这几秒钟的声音转化成音频指纹,这种音频指纹可以是从声音(音频)中提取的一系列数字特征,这些特征可以被发送到服务器与事先存储在服务器上的指纹库的音频指纹内容进行比对和检索,从而可以找到对应的歌曲,这与谷歌、百度等搜索引擎的应用原理类似,只是对于搜索引擎而言,提交到服务器的是一些文本关键词,而对于音频指纹的检索而言,提交到服务器的是一系列音频指纹。
但是,这种音频指纹检索库技术目前面临的最大问题是它的更新问题,为了保证后续对音频指纹的快速检索,当曲库中有新的曲目加入时,新的曲库转化为音频指纹后不能将这这个音频指纹简单地附加在现有的音频指纹检索库的后面,而是必须重新生成便于检索的新的音频指纹检索库,然而对于一个已经拥有上百万首歌曲的音频指纹的检索库而言,其更新耗时会相当长,因而无法做到每天对其进行及时而快速更新。
发明内容
本发明的目的在于提供一种音频指纹检索库的更新方法及系统,该方法能实现对音频指纹检索库的快速更新,并且减少的更新时间,提高更新效率。
为解决上述问题,本发明提供一种音频指纹检索库的更新方法,包括:
将所有老歌曲的音频指纹和检索索引存入一基本检索库;
将新歌曲的音频指纹和检索索引更新入一增量检索库;
判断所述增量检索库的大小是否大于或等于预设的阈值,
如是,则将所述增量检索库与基本检索库合并生成新的基本检索库,再将新歌曲的音频指纹和检索索引更新入一新的增量检索库;
如否,则将新歌曲的音频指纹和检索索引更新入所述增量检索库。
进一步的,在上述方法中,所述音频指纹包括若干个音频指纹序列,所述音频指纹序列是将固定长度的声音片断转化成的固定位数的整数。
进一步的,在上述方法中,所述基本检索库和增量检索库均包括检索索引表和随机指纹库,所述检索索引表存储有每首老歌曲或新歌曲的检索索引,所述随机指纹库存储有每首老歌曲或新歌曲的音频指纹,每个音频指纹包括若干音频指纹序列。
进一步的,在上述方法中,所述检索索引表包括顺序索引表和顺序数据表。
进一步的,在上述方法中,所述顺序数据表存储有对应于每个所述音频指纹序列的数据块。
进一步的,在上述方法中,所述数据块包括ID数据和偏移量数据,所述ID数据记录可能对应于所述音频指纹序列的所有随机指纹库的音频指纹的ID,所述偏移量数据记录有所述音频指纹序列在所述随机指纹库的音频指纹中的偏移量。
进一步的,在上述方法中,所述顺序索引表存储有所有音频指纹序列以及指向对应于所述音频指纹序列的数据块的指针。
进一步的,在上述方法中,所述顺序索引表是按音频指纹序列的整数值由小到大组成的线性表。
进一步的,在上述方法中,所述将新歌曲的音频指纹和检索索引更新入一增量检索库的步骤包括:
将新歌曲的音频指纹加入增量检索库的随机指纹库;
将新歌曲的所有音频指纹的音频指纹序列存储入增量检索库的顺序索引表;
将与每个所述音频指纹序列可能对应的所有增量检索库的随机指纹库的音频指纹的ID以及所述音频指纹序列在所述增量检索库的随机指纹库的音频指纹中的偏移量记录入所述增量检索库的顺序数据表;
将所述增量检索库的顺序索引表中每个对应于所述音频指纹序列的指针指向所述增量检索库顺序数据表的对应的数据块。
进一步的,在上述方法中,所述阈值为存储的数据量或存储的歌曲的个数。
进一步的,在上述方法中,将所述增量检索库与基本检索库合并生成新的基本检索库的步骤包括:
将增量检索库的随机指纹库与基本检索库的随机指纹库合并生成新的基本检索库的随机指纹库;
将增量检索库的顺序索引表的与基本检索库的顺序索引表合并生成新基本检索库的顺序索引表;
从新的基本检索库的顺序索引表中的第一个音频指纹序列开始逐个根据新的基本检索库的顺序索引表中音频指纹序列的对应的数据块的指针,从所述基本检索库的数据索引表和所述增量检索库的数据索引表中调取并合并对应于新的顺序索引表的音频指纹序列的数据块,并将合并后的数据块存储入新的基本检索库的数据索引表中;
再修改所述合并后的数据块中的ID数据和偏移量数据,使所述ID数据为新的基本检索库的随机指纹库的所有可能对应于所述音频指纹序列的音频指纹的ID,所述偏移量数据为新的基本检索库的随机指纹库中所述音频指纹序列在所述音频指纹中的偏移量,并将新的基本检索库的顺序索引表的对应于所述音频指纹序列的指针修改为指向新的基本检索库的数据索引表的所述合并后的数据块。
根据本发明的另一面,提供一种音频指纹检索库的更新系统,包括:
基本检索库,用于存储所有老歌曲的音频指纹和检索索引;
增量检索库,用于存储新歌曲的音频指纹和检索索引;
新的基本检索库,用于存储基本检索库和增量检索库合并后的内容;
阈值判定模块,用于判定增量检索库的大小是否大于或等于预设的阈值;
生成模块,用于生成基本检索库和增量检索库、更新增量检索库以及将所述基本检索库和增量检索库进行合并。
进一步的,在上述系统中,所述生成模块包括:
基本生成单元,用于生成基本检索库并将所有老歌曲的音频指纹和检索索引存入基本检索库;
增量生成单元,用于生成增量检索库并将新歌曲的音频指纹和检索索引更新入增量检索库;
合并单元,用于将所述基本检索库和增量检索库进行合并。
进一步的,在上述系统中,所述音频指纹包括若干个音频指纹序列,所述音频指纹序列是将固定长度的声音片断转化成的固定位数的整数。
进一步的,在上述系统中,所述基本检索库和增量检索库均包括检索索引表和随机指纹库,所述检索索引表存储有每首老歌曲或新歌曲的检索索引,所述随机指纹库存储有每首老歌曲或新歌曲的音频指纹,每个音频指纹包括若干音频指纹序列。
进一步的,在上述系统中,所述检索索引表包括顺序索引表和顺序数据表。
进一步的,在上述系统中,所述顺序数据表存储有对应于每个所述音频指纹序列的数据块。
进一步的,在上述系统中,所述数据块包括ID数据和偏移量数据,所述ID数据记录有可能对应于所述音频指纹序列的所有随机指纹库的音频指纹的ID,所述偏移量数据记录有所述音频指纹序列在所述随机指纹库的音频指纹中的偏移量。
进一步的,在上述系统中,所述顺序索引表存储有所有音频指纹序列以及指向对应于所述音频指纹序列的数据块的指针。
进一步的,在上述系统中,所述顺序索引表是按音频指纹序列的整数值由小到大组成的线性表。
进一步的,在上述系统中,所述阈值为存储的数据量或存储的歌曲的个数。
与现有技术相比,本发明的音频指纹检索库的更新方法及系统,具有以下有益效果:
本发明通过将所有老歌曲的音频指纹和检索索引存入基本检索库,将新歌曲的音频指纹和检索索引加入增量检索库,提供了一种基于基本检索库和增量检索库的更新方法,针对经常有新歌曲加入的情况,当增量检索库比较小,更新增量检索库的代价非常小时,则每次只对增量检索库进行更新,从而节约了对音频指纹检索库的更新时间,实现了对音频指纹检索库的快速更新,而且用户不仅可以在已存在的海量基本检索库中进行检索,还可以同时在增量检索库中进行检索。
另外,本发明通过判断所述增量检索库的大小是否大于或等于预设的阈值,只有当增量检索库大于或等于预设的阈值,更新增量检索库的代价非常大时,则不再对增量检索库进行更新,而是将增量检索库和基本检索库合并生成新的基本检索库,从而有效减少了对庞大的基本检索库更新的次数,节约了更新时间,提高了更新效率。
此外,本发明通过将增量检索库的随机指纹库与基本检索库的随机指纹库合并生成新的基本检索库的随机指纹库;将增量检索库的顺序索引表的与基本检索库的顺序索引表合并生成新基本检索库的顺序索引表;从新的顺序索引表中的第一个音频指纹序列开始逐个根据新的基本检索库顺序索引表中所述音频指纹序列的对应的数据块的指针从所述基本检索库的数据索引表和所述增量检索库的数据索引表中调取并合并对应于新的顺序索引表的音频指纹序列的数据块,并将合并后的数据块存储入新的基本检索库的数据索引表中;再修改所述合并后的数据块中的ID数据和偏移量数据,使所述ID数据为新的基本检索库的随机指纹库的所有可能对应于所述音频指纹片断的音频指纹的ID,所述偏移量数据为新的基本检索库的随机指纹库中所述音频指纹序列在所述音频指纹中的偏移量,并将新的基本检索库的顺序索引表的对应于所述音频指纹序列的指针修改为指向新的基本检索库的数据索引表的所述合并后的数据块,从而提供了一种快速将基本检索库和增量检索库合并的方法,即便是基本检索库和增量检索库本身有上百GB大小音频指纹,该方法也只需消耗极少量的内存。
附图说明
图1是本发明一实施例的音频指纹检索库的更新方法的流程图;
图2是本发明一实施例的基本检索库的哈希表示意图;
图3是本发明一实施例的增量检索库的哈希表示意图;
图4是本发明一实施例的新的基本检索库哈希表示意图;
图5是本发明一实施例的增量检索库更新的流程图;
图6是本发明一实施例的增量检索库中与基本检索库合并的流程图;
图7是本发明一实施例的音频指纹检索库的更新系统的功能模块示意图。
具体实施方式
以下结合附图和具体实施例对本发明提出的音频指纹检索库的更新方法及系统进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
图1是本发明一实施例的音频指纹检索库的更新方法的流程图。
如图1所示,一种音频指纹检索库的更新方法,包括:
步骤S1,将所有老歌曲的音频指纹和检索索引存入一基本检索库;
步骤S2,将新歌曲的音频指纹和检索索引更新入一增量检索库,因为曲库的量级一般会达到上百万首(甚至更多),所以对应音频指纹检索库的大小一般会在几十到上百GB,在实际应用情况下,随着时间的推移,不断会有新的歌曲产生并需要更新入原来的音频指纹检索库中,此时如果每次一有新歌曲加入就直接修改已存在的海量音频指纹检索库就会耗费大量的更新时间,因此当增量检索库比较小,更新增量检索库的代价非常小时,则每次只对增量检索库进行更新,从而节约了对音频指纹检索库的更新时间,实现了对音频指纹检索库的快速更新,而且用户不仅可以在已存在的海量基本检索库中进行检索,还可以同时在增量检索库中进行检索;
步骤S3,判断所述增量检索库的大小是否大于或等于预设的阈值;
若是,则将所述增量检索库与基本检索库合并生成新的基本检索库(如图1中步骤S4),再将将新歌曲的音频指纹和检索索引更新入另一增量检索库(即新的增量检索库),具体来说,只有当所述增量检索库(即原有的增量检索库)大于或等于预设的阈值,更新原有的增量检索库的代价非常大时,则不再对原有的增量检索库进行更新,而是将原有的增量检索库和基本检索库合并生成新的基本检索库,从而有效减少了对庞大的基本检索库更新的次数,节约了更新时间,提高了更新效率;
若否,则直接将将新歌曲的音频指纹和检索索引更新入该原有的增量检索库。
进一步的,所述音频指纹包括若干个音频指纹序列,所述音频指纹序列是通过特定算法将固定长度的音频指纹片断转化成固定位数的整数,具体来说,音频指纹一般是这样提取的:例如对于一首10秒钟的歌曲,先将它每隔20毫秒录制长度为100毫秒的声音片段,每个声音片段通过特定算法提取出一个32位的整数,这样一串具有先后次序关系的32位整数就是一个音频指纹序列,若干个音频指纹序列可以组成一首歌曲的音频指纹,该音频指纹序列可以发送到服务器与服务器上的音频指纹检索库进行比对从而实现检索的功能,此外,为了能够识别足够多的歌曲的音频,服务器端需要准备海量的音频指纹检索库,以便将来提交到服务器的音频指纹序列做比对。
进一步的,所述基本检索库和增量检索库均包括检索索引表和随机指纹库,所述检索索引表存储有每首老歌曲或新歌曲的检索索引,所述随机指纹库存储有每首老歌曲或新歌曲的音频指纹,每个音频指纹包括若干音频指纹序列,所述检索索引表包括顺序索引表和顺序数据表,所述顺序数据表存储有对应于每个所述音频指纹序列的数据块,所述数据块包括ID数据和偏移量数据,所述ID数据记录有可能对应于所述音频指纹序列的所有随机指纹库的音频指纹的ID,所述偏移量数据记录有所述音频指纹序列在所述随机指纹库的音频指纹中的偏移量,所述顺序索引表存储有所有音频指纹序列以及指向对应于所述音频指纹序列的数据块的指针,为了便于快速检索,所述顺序索引表可以是按音频指纹序列的整数值由小到大组成的线性表,所述阈值为存储的数据量或存储的歌曲的个数。
图2是本发明一实施例的基本检索库的哈希表示意图。
具体来说,音频指纹检索库是这样生成的:假设有100万首歌曲,那么首先为每一首歌曲提取其对应音频指纹序列,然后将每一首歌曲的所有音频指纹序列和由音频指纹序列组成的音频指纹插入到一个以音频指纹序列为索引的哈希表内,如错误!未找到引用源。所示,顺序索引表可以是每个可能的音频指纹序列的顺序列表,每个音频指纹序列对应的数据块内保存了指向顺序数据表内数据块的一个指针,顺序数据表的保存了该音频指纹序列在哪一首歌(ID数据)的哪个位置(偏移量数据)出现过,而随机指纹库是所有歌曲的音频指纹的集合。
当需要对音频进行检索时,需要提供一段未知歌曲片段的音频指纹序列,其实际上就是一个整数序列,如图2的所示,待检索指纹1里的每一个横格子是一个32位整数的音频指纹序列11,在这里简单起见,用长度为7的二进制数表示,例如0101101是这个歌曲片段的第一个音频指纹序列,1000101是该歌曲的第二个音频指纹序列,而直接将这段音频指纹序列同随机指纹库中上百万歌曲的音频指纹进行匹配是计算量过于庞大,因此一般采用先粗筛后细选的办法,首先,要找出指纹库中哪些歌曲(ID数据)的哪些位置(偏移量数据)可能包含这个音频指纹序列,然后再在这些从找到的这些可能的歌曲和位置中计算出那首个最可能对应于这个音频指纹序列。
继续参考图2,这里的顺序索引表2是一个按照整数的大小顺序由小到大组织的一个线性表,当待检索指纹1给出0101101的音频指纹序列11时,可以直接在顺序索引表2中找到这个0101101的音频指纹序列21以及对应于这个0101101的音频指纹序列21的指针22,该指针22指向顺序数据表3的某段数据块31的一个指针22,数据块31中保存了所有可能包含该音频指纹序列的歌曲的随机指纹库4的音频指纹的ID以及该音频指纹序列在该音频指纹中的偏移量,顺序数据表3中的A区域中每一个虚线分隔的小矩形就代表该音频指纹序列在某歌曲(ID数据)的某个位置(偏移量数据)出现了一处,在本实施例中共6处,随机指纹库4是所有歌曲的音频指纹的集合,而每首表的音频指纹是该首歌所有的音频指纹序列的集合,当获得了音频指纹的ID以及指纹偏移位置时,就可以通过这些信息从随机指纹库中获取0101101这个音频指纹序列在所可能匹配到的歌曲的音频指纹的相关信息了,接下来通过这些可能匹配到的歌曲的音频指纹的相关信息进行进一步的细匹配,而细匹配的规模从原来的全空间匹配(可能有上亿次)缩小到了现在的只有6次,从而提高了检索匹配的速度。
当对外提供音频检索服务时,用户提交一个歌曲片段的音频指纹序列,服务器负责在音频指纹检索库中查找并给出该音频指纹序列所属歌曲的音频指纹的信息,这就要求曲库要足够完整,能够覆盖当前绝大多数歌曲,然而,由于每天会诞生或者新入库很多歌曲,所以这个音频指纹检索库要能够经常更新,当曲库规模达到百万量级时,音频指纹库的大小会达到100多GB,此时针对这种音频指纹检索库的结构面临最大问题就是难以更新,因为当音频指纹检索库中有新的曲目的音频指纹和音频指纹序列要加入时,其新内容无法附加在顺序索引表和顺序数据表的后面,必须重新生成新的音频指纹检索库,该新的音频指纹检索库必须包括新的顺序索引表、顺序数据表和随机指纹库,而对于一个有上百万首歌曲的音频指纹检索库而言,其重新生成新的音频指纹检索库的耗时会很长,无法做到每天及时更新音频指纹检索库。
在本发明一实施例中,将指纹库分为基本检索库和增量检索库两个部分,其中,基本检索库涵盖了当前能够找到的所有曲目的音频指纹序列与音频指纹之间的对应关系信息,基本检索库作为对外提供音频检索服务的一个基础数据库,该库的结构如错误!未找到引用源。2所示。
图3是本发明一实施例的增量检索库的哈希表示意图,图5是本发明一实施例的增量检索库更新的流程图。
进一步的,如图3和图5所示,所述将新歌曲的音频指纹和检索索引更新入一增量检索库的步骤包括:
步骤S21,将新歌曲的音频指纹加入增量检索库的随机指纹库04;
步骤S22,将新歌曲的所有音频指纹的音频指纹序列021存储入增量检索库的顺序索引表02;
步骤S23,将与每个所述音频指纹序列021可能对应的所有增量检索库的随机指纹库04的音频指纹的ID以及所述音频指纹序列在所述增量检索库的随机指纹库04的音频指纹中的偏移量记录入所述增量检索库的顺序数据表03;
步骤S24,将所述增量检索库的顺序索引表02中每个对应于所述音频指纹序列021的指针022指向所述增量检索库的顺序数据表03的对应的数据块031。
具体来说,当某天有新歌曲需要加入时,假如有100首歌曲的音频指纹,可为新加入的歌曲创建一个新的检索库,即增量检索库,该指纹库具有与基本检索库完全相同的存储结构,在检索时,检索请求被同时发往基本检索库和增量检索库,当任何一个库得到了检索结果时,会立即中断在另一个库中的检索过程,然后将该结果返回给用户,假如每首歌曲长度为5分钟,那么增量检索库的大小预计在100MB的量级。
假设第二天又新加入了100首歌曲,由于增量检索库相当小,生成新的增量检索库的不会耗费太多的时间,因此可为累积的200首新增歌曲重新创建增量检索库,之后用其替换掉原先的100首歌曲的增量库,这一过程相当短暂,存储和计算开销都很小,不会影响增量检索库对外的检索服务,这一过程持续进行,当增量检索库的大小达到了某个阈值(例如新增歌曲达到5000首以上,重建增量检索库的开销相当之大,以至于不可忽略)时,则需要启动一个将增量检索库与基本检索库合并的生成新的基本检索库的过程。
图4是是本发明一实施例的新的基本检索库的哈希表示意图。
假如图2是基本检索库,图3是待合并的增量检索库,我们将要二者合并,生成如图4所示的新的基本检索库,该合并过程是按照音频指纹序列的整数的大小顺序进行的,无需将大部分数据调入内存。
图6是本发明一实施例的增量检索库中与基本检索库合并的流程图。
进一步的,如图2、图3、图4和图6所示,所述将所述增量检索库中的与基本检索库合并生成新的基本检索库的步骤包括:
步骤S41,将增量检索库的随机指纹库04与基本检索库的随机指纹库4合并生成新的基本检索库的随机指纹库54,具体来说,通过将两个随机指纹的内容A和B顺序连结成为一个新的随机指纹库54;
步骤S42,将增量检索库的顺序索引表02的与基本检索库的顺序索引表2合并生成新基本检索库的顺序索引表52;
步骤S43,从新的基本检索库的顺序索引表12中的第一个音频指纹序列521开始逐个根据新的基本检索库的顺序索引表12中音频指纹序列521的对应的数据块的指针122,从所述基本检索库的数据索引表3和所述增量检索库的数据索引表03中调取并合并对应于新的顺序索引表的音频指纹序列521的数据块31、031,并将合并后的数据块531存储入新的基本检索库的数据索引表53中;
步骤S44,再修改所述合并后的数据块531中的ID数据和偏移量数据,使所述ID数据为新的基本检索库的随机指纹库54的所有可能对应于所述音频指纹序列的音频指纹的ID,所述偏移量数据为新的基本检索库的随机指纹库54中所述音频指纹序列在所述音频指纹中的偏移量,并将新的基本检索库的顺序索引表52的对应于所述音频指纹序列521的指针522修改为指向新的基本检索库的数据索引表53的所述合并后的数据块531,即便是基本检索库和增量检索库本身有上百G大小音频指纹,该方法也只需消耗极少量的内存。
具体来说,假如当前处理到了音频指纹序列0101101,那么可以分别从基本检索库和增量检索库中根据顺序索引表2、02的该音频指纹序列521对应的指针21、021内容,而该指针21、021指向顺序数据表3、03中对应的数据块3、03(基本检索库中内容为A,增量检索库中内容为B),此时将A和B两块数据块调入内存,前后连结,并修改其ID数据和偏移量数据以与新的基本检索库的随机指纹库54中的内容AB对应,然后,将合并后的A和B两块数据块写入到新的基本检索库的的顺序数据表中53,最后,修改基本检索库的顺序索引表52中内容为“0101101”的音频指纹序列521的指针522的内容,让其指向新的基本检索库的顺序数据表53中的AB数据块531。
当依次处理完所有音频指纹序列后,新的基本检索库就同时包含了老的基本检索库和增量检索库的音频指纹信息,可删除老的基本检索库以及增量检索库,将新的基本检索库调入内存提供检索服务。
本方法不仅可以使用户在已存在的海量基本检索库中进行检索,还可以动态向增量检索库中添加新曲目,并以合适的策略将基本检索库和增量检索库进行合并,尽管基本检索库和增量检索库本身可能会非常大(上百GB字节),但该合并过程只耗费极少量的内存。
图7是本发明一实施例的音频指纹检索库的更新系统的功能模块示意图。
如图7所示,根据本发明的另一面,提供一种音频指纹检索库的更新系统,包括:
基本检索库101,用于存储所有老歌曲的音频指纹和检索索引;
增量检索库102,用于存储新歌曲的音频指纹和检索索引,所述音频指纹包括若干个音频指纹序列,所述音频指纹序列是通过特定算法将固定长度的声音片断转化成的固定位数的整数,所述基本检索库和增量检索库均包括检索索引表和随机指纹库,所述检索索引表存储有每首老歌曲或新歌曲的检索索引,所述随机指纹库存储有每首老歌曲或新歌曲的音频指纹,每个音频指纹包括若干音频指纹序列,所述检索索引表包括顺序索引表、顺序数据表,所述顺序数据表存储有对应于每个所述音频指纹序列的数据块,所述数据块包括ID数据和偏移量数据,所述ID数据记录有可能对应于所述音频指纹序列的所有随机指纹库的音频指纹的ID,所述偏移量数据记录有所述音频指纹序列在所述随机指纹库的音频指纹中的偏移量,所述顺序索引表存储有所有音频指纹序列以及指向对应于所述音频指纹序列的数据块的指针,所述顺序索引表是按音频指纹序列的整数值由小到大组成的线性表,所述阈值为存储的数据量或存储的歌曲的个数;
新的基本检索库103,用于存储基本检索库和增量检索库合并后的内容;
阈值判定模块104,用于判定增量检索库的大小是否大于或等于预设的阈值,通过判断所述增量检索库的大小是否大于或等于预设的阈值,只有当增量检索库大于或等于预设的阈值,更新增量检索库的代价非常大时,则不再对增量检索库进行更新,而是将增量检索库和基本检索库合并生成新的基本检索库,从而有效减少了对庞大的基本检索库更新的次数,节约了更新时间,提高了更新效率;
生成模块105,用于生成基本检索库和增量检索库、更新增量检索库以及将所述基本检索库和增量检索库进行合并,进一步的,所述生成模块105包括:
基本生成单元115,用于生成基本检索库并将所有老歌曲的音频指纹和检索索引存入基本检索库;
增量生成单元125,用于生成增量检索库并将新歌曲的音频指纹和检索索引更新入增量检索库,当增量检索库比较小,更新增量检索库的代价非常小时,则每次只对增量检索库进行更新,从而节约了对音频指纹检索库的更新时间,实现了对音频指纹检索库的快速更新,而且用户不仅可以在已存在的海量基本检索库中进行检索,还可以同时在增量检索库中进行检索;
合并单元135,用于将所述基本检索库和增量检索库进行合并。
综上所述,本发明通过将所有老歌曲的音频指纹和检索索引存入基本检索库,将新歌曲的音频指纹和检索索引加入增量检索库,提供了一种基于基本检索库和增量检索库的更新方法,针对经常有新歌曲加入的情况,当增量检索库比较小,更新增量检索库的代价非常小时,则每次只对增量检索库进行更新,从而节约了对音频指纹检索库的更新时间,实现了对音频指纹检索库的快速更新,而且用户不仅可以在已存在的海量基本检索库中进行检索,还可以同时在增量检索库中进行检索。
另外,本发明通过判断所述增量检索库的大小是否大于或等于预设的阈值,只有当增量检索库大于或等于预设的阈值,更新增量检索库的代价非常大时,则不再对增量检索库进行更新,而是将增量检索库和基本检索库合并生成新的基本检索库,从而有效减少了对庞大的基本检索库更新的次数,节约了更新时间,提高了更新效率。
此外,本发明通过将增量检索库的随机指纹库与基本检索库的随机指纹库合并生成新的基本检索库的随机指纹库;将增量检索库的顺序索引表的与基本检索库的顺序索引表合并生成新基本检索库的顺序索引表;从新的顺序索引表中的第一个音频指纹序列开始逐个根据新的基本检索库顺序索引表中所述音频指纹序列的对应的数据块的指针从所述基本检索库的数据索引表和所述增量检索库的数据索引表中调取并合并对应于新的顺序索引表的音频指纹序列的数据块,并将合并后的数据块存储入新的基本检索库的数据索引表中;再修改所述合并后的数据块中的ID数据和偏移量数据,使所述ID数据为新的基本检索库的随机指纹库的所有可能对应于所述音频指纹片断的音频指纹的ID,所述偏移量数据为新的基本检索库的随机指纹库中所述音频指纹序列在所述音频指纹中的偏移量,并将新的基本检索库的顺序索引表的对应于所述音频指纹序列的指针修改为指向新的基本检索库的数据索引表的所述合并后的数据块,从而提供了一种快速将基本检索库和增量检索库合并的方法,即便是基本检索库和增量检索库本身有上百GB大小音频指纹,该方法也只需消耗极少量的内存。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的音频指纹检索库的更新系统而言,由于与实施例公开的音频指纹检索库的更新方法相对应,所以描述的比较简单,相关之处参见音频指纹检索库的更新方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (21)
1.一种音频指纹检索库的更新方法,其特征在于,包括:
将所有老歌曲的音频指纹和检索索引存入一基本检索库;
将新歌曲的音频指纹和检索索引更新入一增量检索库;
判断所述增量检索库的大小是否大于或等于预设的阈值,
如是,则将所述增量检索库与基本检索库合并生成新的基本检索库,再将新歌曲的音频指纹和检索索引更新入一新的增量检索库;
如否,则将新歌曲的音频指纹和检索索引更新入所述增量检索库。
2.如权利要求1所述的音频指纹检索库的更新方法,其特征在于,所述音频指纹包括若干个音频指纹序列,所述音频指纹序列是将固定长度的声音片断转化成的固定位数的整数。
3.如权利要求2所述的音频指纹检索库的更新方法,其特征在于,所述基本检索库和增量检索库均包括检索索引表和随机指纹库,所述检索索引表存储有每首老歌曲或新歌曲的检索索引,所述随机指纹库存储有每首老歌曲或新歌曲的音频指纹,每个音频指纹包括若干音频指纹序列。
4.如权利要求3所述的音频指纹检索库的更新方法,其特征在于,所述检索索引表包括顺序索引表和顺序数据表。
5.如权利要求4所述的音频指纹检索库的更新方法,其特征在于,所述顺序数据表存储有对应于每个所述音频指纹序列的数据块。
6.如权利要求5所述的音频指纹检索库的更新方法,其特征在于,所述数据块包括ID数据和偏移量数据,所述ID数据记录可能对应于所述音频指纹序列的所有随机指纹库的音频指纹的ID,所述偏移量数据记录有所述音频指纹序列在所述随机指纹库的音频指纹中的偏移量。
7.如权利要求5所述的音频指纹检索库的更新方法,其特征在于,所述顺序索引表存储有所有音频指纹序列以及指向对应于所述音频指纹序列的数据块的指针。
8.如权利要求5所述的音频指纹检索库的更新方法,其特征在于,所述顺序索引表是按音频指纹序列的整数值由小到大组成的线性表。
9.如权利要求7或8所述的音频指纹检索库的更新方法,其特征在于,所述将新歌曲的音频指纹和检索索引更新入一增量检索库的步骤包括:
将新歌曲的音频指纹加入增量检索库的随机指纹库;
将新歌曲的所有音频指纹的音频指纹序列存储入增量检索库的顺序索引表;
将与每个所述音频指纹序列可能对应的所有增量检索库的随机指纹库的音频指纹的ID以及所述音频指纹序列在所述增量检索库的随机指纹库的音频指纹中的偏移量记录入所述增量检索库的顺序数据表;
将所述增量检索库的顺序索引表中每个对应于所述音频指纹序列的指针指向所述增量检索库顺序数据表的对应的数据块。
10.如权利要求1所述的音频指纹检索库的更新方法,其特征在于,所述阈值为存储的数据量或存储的歌曲的个数。
11.如权利要求9所述的音频指纹检索库的更新方法,其特征在于,将所述增量检索库与基本检索库合并生成新的基本检索库的步骤包括:
将增量检索库的随机指纹库与基本检索库的随机指纹库合并生成新的基本检索库的随机指纹库;
将增量检索库的顺序索引表的与基本检索库的顺序索引表合并生成新基本检索库的顺序索引表;
从新的基本检索库的顺序索引表中的第一个音频指纹序列开始逐个根据新的基本检索库的顺序索引表中音频指纹序列的对应的数据块的指针,从所述基本检索库的数据索引表和所述增量检索库的数据索引表中调取并合并对应于新的顺序索引表的音频指纹序列的数据块,并将合并后的数据块存储入新的基本检索库的数据索引表中;
再修改所述合并后的数据块中的ID数据和偏移量数据,使所述ID数据为新的基本检索库的随机指纹库的所有可能对应于所述音频指纹序列的音频指纹的ID,所述偏移量数据为新的基本检索库的随机指纹库中所述音频指纹序列在所述音频指纹中的偏移量,并将新的基本检索库的顺序索引表的对应于所述音频指纹序列的指针修改为指向新的基本检索库的数据索引表的所述合并后的数据块。
12.一种音频指纹检索库的更新系统,其特征在于,包括:
基本检索库,用于存储所有老歌曲的音频指纹和检索索引;
增量检索库,用于存储新歌曲的音频指纹和检索索引;
新的基本检索库,用于存储基本检索库和增量检索库合并后的内容;
阈值判定模块,用于判定增量检索库的大小是否大于或等于预设的阈值;
生成模块,用于生成基本检索库和增量检索库、更新增量检索库以及将所述基本检索库和增量检索库进行合并。
13.如权利要求12所述的音频指纹检索库的更新系统,其特征在于,所述生成模块包括:
基本生成单元,用于生成基本检索库并将所有老歌曲的音频指纹和检索索引存入基本检索库;
增量生成单元,用于生成增量检索库并将新歌曲的音频指纹和检索索引更新入增量检索库;
合并单元,用于将所述基本检索库和增量检索库进行合并。
14.如权利要求12或13所述的音频指纹检索库的更新系统,其特征在于,所述音频指纹包括若干个音频指纹序列,所述音频指纹序列是将固定长度的声音片断转化成的固定位数的整数。
15.如权利要求14所述的音频指纹检索库的更新系统,其特征在于,所述基本检索库和增量检索库均包括检索索引表和随机指纹库,所述检索索引表存储有每首老歌曲或新歌曲的检索索引,所述随机指纹库存储有每首老歌曲或新歌曲的音频指纹,每个音频指纹包括若干音频指纹序列。
16.如权利要求15所述的音频指纹检索库的更新系统,其特征在于,所述检索索引表包括顺序索引表和顺序数据表。
17.如权利要求16所述的音频指纹检索库的更新系统,其特征在于,所述顺序数据表存储有对应于每个所述音频指纹序列的数据块。
18.如权利要求17所述的音频指纹检索库的更新系统,其特征在于,所述数据块包括ID数据和偏移量数据,所述ID数据记录有可能对应于所述音频指纹序列的所有随机指纹库的音频指纹的ID,所述偏移量数据记录有所述音频指纹序列在所述随机指纹库的音频指纹中的偏移量。
19.如权利要求17所述的音频指纹检索库的更新系统,其特征在于,所述顺序索引表存储有所有音频指纹序列以及指向对应于所述音频指纹序列的数据块的指针。
20.如权利要求17所述的音频指纹检索库的更新系统,其特征在于,所述顺序索引表是按音频指纹序列的整数值由小到大组成的线性表。
21.如权利要求12所述的音频指纹检索库的更新系统,其特征在于,所述阈值为存储的数据量或存储的歌曲的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110270185 CN102289518B (zh) | 2011-09-13 | 2011-09-13 | 音频指纹检索库的更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110270185 CN102289518B (zh) | 2011-09-13 | 2011-09-13 | 音频指纹检索库的更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102289518A true CN102289518A (zh) | 2011-12-21 |
CN102289518B CN102289518B (zh) | 2013-03-27 |
Family
ID=45335944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110270185 Expired - Fee Related CN102289518B (zh) | 2011-09-13 | 2011-09-13 | 音频指纹检索库的更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102289518B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455513A (zh) * | 2012-06-01 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 音频文件更新方法及更新装置 |
CN103995890A (zh) * | 2014-05-30 | 2014-08-20 | 杭州智屏软件有限公司 | 一种实时音频指纹检索库数据更新和检索方法 |
CN104636467A (zh) * | 2015-02-11 | 2015-05-20 | 王磊 | 离线音频库及相应服务器音频库的构建方法及设备 |
CN106682225A (zh) * | 2017-01-04 | 2017-05-17 | 成都四方伟业软件股份有限公司 | 一种大数据的汇集存储方法与系统 |
KR101740271B1 (ko) | 2015-02-13 | 2017-05-26 | 레이 왕 | 온라인 상에서 실시간으로 업데이트되는 대규모 오디오 핑거프린트 데이터베이스의 구축 방법 및 장치 |
CN107948734A (zh) * | 2017-12-05 | 2018-04-20 | 深圳市茁壮网络股份有限公司 | 一种广告视频的筛选方法及系统 |
CN108205550A (zh) * | 2016-12-16 | 2018-06-26 | 北京酷我科技有限公司 | 音频指纹的生成方法及装置 |
CN108243405A (zh) * | 2016-12-26 | 2018-07-03 | 中国移动通信集团广东有限公司 | 一种指纹库的建立方法、测量报告mr的定位方法及装置 |
CN109657093A (zh) * | 2018-11-27 | 2019-04-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 音频检索方法、装置及存储介质 |
CN110800307A (zh) * | 2017-02-07 | 2020-02-14 | 塔杰米克斯有限公司 | 事件源内容和远程内容同步 |
CN113495901A (zh) * | 2021-04-20 | 2021-10-12 | 河海大学 | 一种面向可变长数据块的快速检索方法 |
CN113688101A (zh) * | 2021-08-11 | 2021-11-23 | 杭州网易云音乐科技有限公司 | 基于文件指纹库的检索方法、介质、装置和计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808394A (zh) * | 2006-02-20 | 2006-07-26 | 南京联创科技股份有限公司 | 基于内存数据库的软双机方法 |
CN101556165A (zh) * | 2009-04-24 | 2009-10-14 | 方舟信息技术(苏州)有限公司 | 嵌入式移动电子地图数据库的实时更新方法 |
CN101645078A (zh) * | 2009-09-11 | 2010-02-10 | 中南大学 | 一种变化信息采集与时空数据更新一体化的系统与方法 |
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
-
2011
- 2011-09-13 CN CN 201110270185 patent/CN102289518B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808394A (zh) * | 2006-02-20 | 2006-07-26 | 南京联创科技股份有限公司 | 基于内存数据库的软双机方法 |
CN101556165A (zh) * | 2009-04-24 | 2009-10-14 | 方舟信息技术(苏州)有限公司 | 嵌入式移动电子地图数据库的实时更新方法 |
CN101645078A (zh) * | 2009-09-11 | 2010-02-10 | 中南大学 | 一种变化信息采集与时空数据更新一体化的系统与方法 |
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455513B (zh) * | 2012-06-01 | 2017-03-15 | 广州酷狗计算机科技有限公司 | 音频文件更新方法及更新装置 |
CN103455513A (zh) * | 2012-06-01 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 音频文件更新方法及更新装置 |
CN103995890A (zh) * | 2014-05-30 | 2014-08-20 | 杭州智屏软件有限公司 | 一种实时音频指纹检索库数据更新和检索方法 |
CN104636467A (zh) * | 2015-02-11 | 2015-05-20 | 王磊 | 离线音频库及相应服务器音频库的构建方法及设备 |
KR101740271B1 (ko) | 2015-02-13 | 2017-05-26 | 레이 왕 | 온라인 상에서 실시간으로 업데이트되는 대규모 오디오 핑거프린트 데이터베이스의 구축 방법 및 장치 |
CN108205550A (zh) * | 2016-12-16 | 2018-06-26 | 北京酷我科技有限公司 | 音频指纹的生成方法及装置 |
CN108243405A (zh) * | 2016-12-26 | 2018-07-03 | 中国移动通信集团广东有限公司 | 一种指纹库的建立方法、测量报告mr的定位方法及装置 |
CN106682225A (zh) * | 2017-01-04 | 2017-05-17 | 成都四方伟业软件股份有限公司 | 一种大数据的汇集存储方法与系统 |
CN106682225B (zh) * | 2017-01-04 | 2019-07-23 | 成都四方伟业软件股份有限公司 | 一种大数据的汇集存储方法与系统 |
CN110800307A (zh) * | 2017-02-07 | 2020-02-14 | 塔杰米克斯有限公司 | 事件源内容和远程内容同步 |
CN107948734A (zh) * | 2017-12-05 | 2018-04-20 | 深圳市茁壮网络股份有限公司 | 一种广告视频的筛选方法及系统 |
CN107948734B (zh) * | 2017-12-05 | 2020-09-11 | 深圳市茁壮网络股份有限公司 | 一种广告视频的筛选方法及系统 |
CN109657093A (zh) * | 2018-11-27 | 2019-04-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 音频检索方法、装置及存储介质 |
CN113495901A (zh) * | 2021-04-20 | 2021-10-12 | 河海大学 | 一种面向可变长数据块的快速检索方法 |
CN113495901B (zh) * | 2021-04-20 | 2023-10-13 | 河海大学 | 一种面向可变长数据块的快速检索方法 |
CN113688101A (zh) * | 2021-08-11 | 2021-11-23 | 杭州网易云音乐科技有限公司 | 基于文件指纹库的检索方法、介质、装置和计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102289518B (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102289518B (zh) | 音频指纹检索库的更新方法及系统 | |
CN104090889B (zh) | 数据处理方法及系统 | |
US8886598B1 (en) | Tag-based synchronization | |
CA2723731C (en) | Managing storage of individually accessible data units | |
CN101278289B (zh) | 提供对象以支持worm存储设备中的数据结构的系统和方法 | |
CN103023982B (zh) | 一种云存储客户端的低延迟元数据访问方法 | |
US8472289B2 (en) | Static TOC indexing system and method | |
JP2015518223A (ja) | メモリ検索、リアルタイム検索システム及び方法、コンピュータ記憶媒体 | |
KR20140058542A (ko) | 범위-기반 검색을 위한 데이터 저장 관리 | |
CN103853727A (zh) | 提高大数据量查询性能的方法及系统 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
US9418154B2 (en) | Push-model based index updating | |
CN103377210A (zh) | 建立增量型导航数据库的方法和对数据库进行更新的方法 | |
CN111046041A (zh) | 数据处理方法和装置、存储介质及处理器 | |
CN101093482A (zh) | 一种大量信息存储和检索的方法 | |
CN103186607A (zh) | 分布式语音检索系统 | |
US20090106324A1 (en) | Push-model based index deletion | |
CN102104581A (zh) | 一种网络卡拉ok的点歌系统及其方法 | |
CN104834663A (zh) | 面向光盘库的全文检索系统 | |
CN111414527A (zh) | 相似项目的查询方法、装置及存储介质 | |
CN111125129A (zh) | 数据处理方法和装置、存储介质及处理器 | |
CN103870476A (zh) | 检索方法及设备 | |
CN114579617A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN114218277A (zh) | 一种关系数据库的高效查询方法和装置 | |
KR101299555B1 (ko) | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130327 Termination date: 20130913 |