[0062] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0063] 实施例一
[0064] 图1为本发明实施例一所提供的文件指纹处理方法的流程图。本实施例的方法适用于对海量音频信息进行有效的管理和使用的情况。该方法由配置在计算机中的文件指纹处理装置执行,该装置通常以硬件和/或软件的方式来实现。本实施例的方法包括如下步骤:
[0065] 步骤110、确定文件指纹对应的哈希地址,所述哈希地址指向一个预先分配的存储空间,所述哈希地址指向的存储空间的可用空间长度根据文件指纹分布特性得到;
[0066] 在步骤110中,所述文件指纹优选为音频指纹。所述音频指纹是从音频信号中提取获得的,并且可以通过一个哈希矢量来表征,在所述音频信号的频谱图中找一特定峰值点作为矢量起点,该特定峰值点的确定过程:通过在频谱图中选取一个点,判断在以选取的点为中心的一定时间和频率范围的局部区域内该点的幅值是否为最大,若该点的幅值最大,则将该点作为该局部区域的峰值点,若不是最大,则重新选取一个点,重复上述过程,直至将该频谱图中的所有峰值点确定完毕,之后选取该频谱图中的一个峰值点作为矢量起点,再以矢量起点为中心的搜索范围内搜索到其他的峰值点作为矢量终点。设定F1是矢量起点的频率值,T1是矢量起点的时间值,F2是矢量终点的频率值,T2是矢量终点的时间值,则所述文件指纹的结构为[F1,ΔF,ΔT]。其中,F1、ΔF和ΔT分别用二进制数表示,ΔF=F2-F1,ΔT=T2-T1。如果用U、V和W分别表示F1、ΔF和ΔT的二进制位数,上述搜索范围根据V对应的矢量起点和矢量终点的最大时间差值和W对应的矢量起点和矢量终点的最大频率差值确定,则所述文件指纹可以用N个二进制位数表示并且N=U+V+W,从而可以根据哈希矢量对应的十进制数确定所述文件指纹对应的哈希地址。
[0067] 步骤120、确定所述哈希地址指向的存储空间的首地址;
[0068] 步骤130、根据所述存储空间的首地址和所述存储空间内已添加信息的长度,在所述存储空间中加入所述文件指纹对应的文件信息,并更新所述存储空间内已添加信息的长度。
[0069] 当所述文件指纹为音频指纹时,所述文件指纹对应的文件信息包括音频信号的属性信息或所述属性信息的索引,以及所述音频信号中所述音频指纹对应的时间片段,其中,音频信号的属性信息可以包括歌曲名、歌手名、歌曲类型、歌曲发行年代;所述存储空间内已添加信息的长度优选地通过所述哈希地址对应的一个长度统计变量来表示,并且设定其初始值为零,即用来统计所述哈希地址对应的所述存储空间内已存储的文件信息的个数,当在所述哈希地址对应的所述存储空间中加入一所述文件指纹对应的文件信息时,则对所述长度统计变量执行加一操作,以更新所述存储空间内已添加信息的长度。
[0070] 本发明实施例提供的文件指纹处理方法,通过根据文件指纹结构确定所述文件指纹对应的哈希地址,进一步的根据所述哈希地址对应的所述存储空间的首地址和所述存储空间内已添加信息的长度,在所述存储空间内加入所述文件指纹对应的文件信息。一定程度上解决了在处理海量音频信号时,从不同的音频信号中提取到相同的文件指纹出现哈希地址冲突,从而造成后续处理的音频信号的信息不能在相应的哈希地址对应的空间中存储或者将已经存入的音频信号的音频信息冲掉的问题,保证了音频信息数据的完整性。同时提高了存储空间的利用率和对音频信息进行检索时的匹配成功率。
[0071] 进一步的,在本实施例中,在所有文件指纹处理完成之后,根据各哈希地址指向的存储空间内已添加信息的长度,释放各存储空间内未使用的空间。
[0072] 具体的,当将待处理的所有所述文件指纹对应的文件信息存储在所述文件指纹对应的所述存储空间中后,如果所述哈希地址指向的存储空间内已添加信息的长度小于预先分配的所述哈希地址指向的存储空间的长度,则释放所述哈希地址指向的存储空间内未使用的空间。实现了在处理完所有文件指纹后,能够自适应调整哈希表结构,提高了存储空间的利用率。
[0073] 实施例二
[0074] 图2为本发明实施例二所提供的文件指纹处理方法的流程图。本发明实施例以上述实施例为基础,参照图2,在本实施例中,步骤110之前还包括:
[0075] 步骤210、根据统计得到的文件指纹分布特性,确定各哈希地址指向的存储空间的可用空间长度;
[0076] 当所述文件指纹为音频指纹时,所述统计得到的文件指纹分布特性可以通过F1、ΔF和ΔT的分布特性来表征,例如,矢量起点F1较小的音频指纹较多,矢量频率差ΔF和时间差ΔT较小的音频指纹较多。步骤210的具体执行操作为:根据统计得到的文件指纹分布特性,确定各哈希地址指向的存储空间占所有哈希地址指向的总存储空间的比例;根据以下公式确定各哈希地址指向的存储空间的可用空间长度:
[0077] Li=|K*θi|,Li为哈希地址i指向的存储空间的可用空间长度,K为所有哈希地址指向的总存储空间的长度,θi为哈希地址i指向的存储空间占所有哈希地址指向的总存储空间的比例,其中, N为文件指纹的比特数。
[0078] 步骤220、根据各哈希地址指向的存储空间的可用空间长度,为各哈希地址分配对应的存储空间。
[0079] 步骤220的具体执行操作为:创建特征库,所述特征库包括第一空间、第二空间和第三空间;将各哈希地址指向的存储空间的可用空间长度保存在所述第一空间;根据各哈希地址指向的存储空间的可用空间长度,将所述第三空间划分为各哈希地址指向的存储空间,确定各哈希地址指向的存储空间的首地址,并将各哈希地址指向的存储空间的首地址保存在所述第二空间。在此需要说明的是:第一空间、第二空间和第三空间中存放的内容是非特定的,即哈希地址指向的存储空间的可用空间长度即可以保存在所述第一空间,也可以保存在所述第二空间或者第三空间内,其他两个空间中的内容也可以存放在第一空间、第二空间或第三空间。总之,本发明并不对第一空间、第二空间和第三空间中存放的内容进行限定。
[0080] 本发明实施例提供的文件指纹处理方法,通过根据统计得到的文件指纹分布特性,以确定各哈希地址指向的存储空间的可用空间长度。并且根据各哈希地址指向的存储空间的可用空间长度,在所述第三空间中为各哈希地址分配对应的存储空间。因此避免了现有技术中建立等深度的哈希表时造成存储空间浪费和检索音频信息时效率低的问题。
[0081] 具体的,在上述实施例中,在所述释放各存储空间内未使用的空间之后,优选的地还可以包括:将所述第一空间中保存的所述存储空间的可用空间长度更新为所述存储空间内已添加信息的长度。
[0082] 进一步的,在本发明上述实施例中,所述确定文件指纹对应的哈希地址之前的操作还可以包括:将音频信号分为至少一个时间片段;从每个时间片段中提取至少一个音频指纹。所述音频指纹由矢量起点的频率值、矢量终点和矢量起点之间的频率差、矢量终点和矢量起点之间的时间差表征,所述矢量起点和矢量终点根据所述音频指纹对应的时间片段的频谱图确定;相应地,表征所述音频指纹的哈希矢量根据所述音频指纹对应时间片段的频谱图确定。
[0083] 实施例三
[0084] 为让本发明上述各实施例所提供的文件指纹处理方法更加直观,在此将本发明上述各实施例所提供的文件指纹结构进行详细介绍。首先在频谱图中找一特定峰值点作为矢量起点,在矢量起点的搜索范围内搜索到符合条件的峰值点作为矢量终点。设定F1是矢量起点的频率值,T1是矢量起点的时间值,F2是是矢量终点的频率值,T2是矢量终点的时间值,如果第P首歌的第Q个时间段内提取出一组哈希矢量起点对应的坐标为[20,24],矢量终点对应的坐标为[30,28],即F1=24,T1=20,F2=28,T2=30,则ΔF=F2-F1=4,ΔT=T2-T1=10。分别将F1、ΔF和ΔT用二进制数表示,在本实施例中,如果用U、V和W分别表示F1、ΔF和ΔT的二进制位数,设定U=8,V=6,W=6,则对应的文件指纹表示为[00011000 000100 001010],并且该文件指纹可以用N个二进制位数表示,N=U+V+W=20。即在哈希表中哈希地址为98570对应的空间内存储第P首歌的相关信息,如歌曲名、歌手名、类型、发行年代或者具体信息对应的索引信息等,其中,哈希表中哈希地址为98570对应的空间即在上述实施例中提及的第三空间中分配的。
[0085] 根据上述的文件指纹结构以及大量的音频信号数据训练,可以统计得到文件指纹分布特性,所述统计得到的文件指纹分布特性包括:矢量起点的频率值较小的音频指纹多于矢量起点的频率值较大的音频指纹,矢量终点和矢量起点之间的频率差、矢量终点和矢量起点之间的时间差均较小的音频指纹多于矢量终点和矢量起点之间的频率差、矢量终点和矢量起点之间的时间差均较大的音频指纹。下面结合图3详细介绍根据文件指纹分布特性将总存储空间划分为第一空间、第二空间和第三空间,以及如何向第三空间中加入各文件指纹对应的文件信息。图3为本发明上述各实施例所提供的文件指纹处理方法的示意图。参照图3,将各哈希地址指向的存储空间的可用空间长度保存在所述第一空间;将各哈希地址指向的存储空间的首地址保存在所述第二空间;根据各哈希地址指向的存储空间的可用空间长度,将所述第三空间划分为各哈希地址指向的存储空间,并将各哈希地址指向的存储空间中加入所述文件指纹对应的文件信息。
[0086] 具体的,根据文件指纹分布特性将总存储空间划分为第一空间、第二空间和第三空间。Li、K、θi和N代表的意义与上述实施例中的相同,在此不再赘述。其中,所述第一空间大小为2N,用于存放各哈希地址i指向的存储空间的可用空间长度Li。Li的大小可以通过公式Li=|K*θi|计算得到,0≤i≤2N-1;所述第二空间大小为2N,用于存放各哈希地址i指向的存N储空间的首地址Ai,Ai的大小可以通过公式Ai=Ai-1+Li-1计算得到,0≤i≤2-1且A0=0。根据上述的Ai,在所述第三空间中加入所述文件指纹对应的文件信息的具体过程如下:设定哈希地址i对应的一个长度统计变量为CNTi,当在所述哈希地址i对应的所述存储空间中加入一所述文件指纹对应的文件信息时,则对所述长度统计变量CNTi执行加一操作,即更新CNTi=CNTi+1,以更新所述存储空间内已添加信息的长度。在哈希地址i对应的空间地址为Ai+CNTi-1的空间中加入所述文件指纹对应的文件信息。当将待处理的所有所述文件指纹对应的文件信息存储在所述文件指纹对应的所述存储空间中后,如果所述哈希地址指向的存储空间内已添加信息的长度小于预先分配的所述哈希地址指向的存储空间的长度,则释放所述哈希地址指向的存储空间内未使用的空间。并将所述第一空间中保存的所述存储空间的可用空间长度Li更新为所述存储空间内已添加信息的长度CNTi。
[0087] 本发明实施例提供的文件指纹处理方法,通过根据文件指纹的分布特性确定各哈希地址指向的存储空间的可用空间长度,根据所述可用空间长度为所述各哈希地址分配对应的存储空间以存储所述文件指纹对应的文件信息。以解决在处理海量音频信号时,从不同的音频信号中提取到相同的文件指纹出现哈希地址冲突,从而造成后续处理的音频信号的信息不能在相应的哈希地址对应的空间中存储或者将已经存入的音频信号的音频信息冲掉的问题,保证了音频信息数据的完整性,提高了存储空间的利用率和对音频信息进行检索时的匹配成功率。并在存储所有文件指纹对应的文件信息后,更新所述第一空间中存储的各哈希地址指向的存储空间的可用空间长度Li为所述哈希地址i对应的一个长度统计变量CNTi,即Li=CNTi,实现了在处理音频信号的文件指纹时能够自适应调整哈希表空间结构。
[0088] 实施例四
[0089] 图4为本发明实施例四所提供的文件指纹处理装置的结构示意图。本实施例的装置适用于对海量音频信息进行有效的管理和使用的情况。该装置通常以硬件和/或软件的方式来实现。参照图4,该文件指纹处理装置包括如下模块:哈希地址确定模块410、首地址确定模块420和文件信息加入模块430。
[0090] 其中,哈希地址确定模块410用于确定文件指纹对应的哈希地址,所述哈希地址指向一个预先分配的存储空间,所述哈希地址指向的存储空间的可用空间长度根据文件指纹分布特性得到;首地址确定模块420用于确定所述哈希地址指向的存储空间的首地址;文件信息加入模块430用于根据所述存储空间的首地址和所述存储空间内已添加信息的长度,在所述存储空间中加入所述文件指纹对应的文件信息,并更新所述存储空间内已添加信息的长度。
[0091] 本发明实施例提供的文件指纹处理装置,通过哈希地址确定模块确定所述文件指纹对应的哈希地址,进一步的根据所述哈希地址对应的所述存储空间的首地址和所述存储空间内已添加信息的长度,在所述存储空间内加入所述文件指纹对应的文件信息。一定程度上解决了在处理海量音频信号时,从不同的音频信号中提取到相同的文件指纹出现哈希地址冲突,从而造成后续处理的音频信号的信息不能在相应的哈希地址对应的空间中存储或者将已经存入的音频信号的音频信息冲掉的问题,保证了音频信息数据的完整性。同时提高了存储空间的利用率和对音频信息进行检索时的匹配成功率。
[0092] 进一步的,在本实施例中,在所有文件指纹处理完成之后,还包括空间释放模块用于根据各哈希地址指向的存储空间内已添加信息的长度,释放各存储空间内未使用的空间。
[0093] 实施例五
[0094] 图5为本发明实施例五所提供的文件指纹处理装置的结构示意图。参照图5,在上述实施例的基础上,还包括:
[0095] 长度确定模块510用于根据统计得到的文件指纹分布特性,确定各哈希地址指向的存储空间的可用空间长度;存储空间分配模块520用于根据各哈希地址指向的存储空间的可用空间长度,为各哈希地址分配对应的存储空间。
[0096] 其中,长度确定模块510具体包括:比例确定子单元510a用于根据统计得到的文件指纹分布特性,确定各哈希地址指向的存储空间占所有哈希地址指向的总存储空间的比例,其中,所述统计得到的文件指纹分布特性包括:矢量起点的频率值较小的音频指纹多于矢量起点的频率值较大的音频指纹,矢量终点和矢量起点之间的频率差、矢量终点和矢量起点之间的时间差均较小的音频指纹多于矢量终点和矢量起点之间的频率差、矢量终点和矢量起点之间的时间差均较大的音频指纹;长度确定子单元510b用于根据以下公式确定各哈希地址指向的存储空间的可用空间长度:Li=|K*θi|,Li为哈希地址i指向的存储空间的可用空间长度,K为所有哈希地址指向的总存储空间的长度,θi为哈希地址i指向的存储空间占所有哈希地址指向的总存储空间的比例,其中, N为文件指纹的比特数。
[0097] 存储空间分配模块520具体包括:特征库创建子单元520a用于创建特征库,所述特征库包括第一空间、第二空间和第三空间;长度保存子单元520b用于将各哈希地址指向的存储空间的可用空间长度保存在所述第一空间;首地址保存子单元520c用于根据各哈希地址指向的存储空间的可用空间长度,将所述第三空间划分为各哈希地址指向的存储空间,确定各哈希地址指向的存储空间的首地址,并将各哈希地址指向的存储空间的首地址保存在所述第二空间。
[0098] 本发明实施例提供的文件指纹处理装置,通过根据统计得到的文件指纹分布特性,以确定各哈希地址指向的存储空间的可用空间长度。并且根据各哈希地址指向的存储空间的可用空间长度,在所述第三空间中为各哈希地址分配对应的存储空间。因此避免了现有技术中建立等深度的哈希表时造成存储空间浪费和检索音频信息时效率低的问题。
[0099] 具体的,在本发明上述实施例中,优选的还可以包括:长度更新模块,用于将所述第一空间中保存的所述存储空间的可用空间长度更新为所述存储空间内已添加信息的长度。
[0100] 进一步的,在上述实施例中,若所述文件指纹为音频指纹,所述文件指纹对应的文件信息包括音频信号的属性信息或所述属性信息的索引,以及所述音频信号中所述音频指纹对应的时间片段,则还包括:时间片段划分单元,用于将音频信号分为至少一个时间片段;音频指纹提取单元,用于从每个时间片段中提取至少一个音频指纹。其中,所述音频指纹由矢量起点的频率值、矢量终点和矢量起点之间的频率差、矢量终点和矢量起点之间的时间差构成。
[0101] 本发明各实施例的文件指纹处理装置可用于执行本发明任意实施例所提供的文件指纹处理方法,具备相应的功能模块和有益效果。
[0102] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0103] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。