本申请涉及音频检索技术领域,尤其涉及一种音频检索方法及装置。
背景技术:
随着计算机技术及其相关网络技术的迅猛发展,多媒体信息的数据量急剧增多,互联网中包含了文字、声音、图片、视频等等内容丰富多彩的信息数据,然而其中也广泛地充斥了许多不良的音频信息,如何快速的发现并过滤掉这些不良信息引起了国内外研究者的关注。在音频样例检索方法中,有很多是通过音频指纹实现的。在音频检索中应用的音频指纹区别于数字水印中的音频指纹,数字水印中音频指纹是人为运用通信理论经过设计和制作的附加信息,主要用于盗版的确认和追踪。
音频检索中的音频指纹是原始音频数据的重要声学特征表示。音频指纹是指通过特定的算法从音频信号中提取的一段数字摘要,音频指纹可以代表一段音频重要声学特征的紧致数字签名。音频指纹检索比较的是其相应较小的数字指纹,而不是直接比较很大的音频数据本身。因此,用音频指纹作为音频检索中音频数据元数据的索引,能够大大降低音频检索的搜索量,并且比较显著地提高音频匹配的效率。
但在实际应用环境中,不良信息的模板经常会缺失几个字或者是添加上背景音乐干扰,导致这些不良信息片段无法被实时检测出来。
技术实现要素:
本申请实施例提供了一种音频检索方法,在频域上将指纹序列分为多段,然后进行指纹比对,可解决现有技术中音频中存在背景干扰存在错误地检索成功的问题。
第一方面,本申请实施例提供了一种音频检索方法,该方法包括:获取待检索的音频信号的指纹序列;根据所述指纹序列,采用哈希索引在音频指纹库中获得所述音频信号的相似指纹序列;在频域维度分别将所述指纹序列和各个相似指纹序列划分为数量相同的多段指纹;根据所述各个相似指纹序列中各段指纹与所述指纹序列中各段指纹的差异性,确定所述音频信号被检索成功。
本申请的该方案,在对指纹序列和相似指纹序列进行差异性比较之间,在频域维度,进行分段处理,然后比较每段之间的差异性来确定是否被检索成功,从而避免由于总体差异性较低,而导致音频信号被错误的检索成功的问题。
在一种可能的实施方式中,所述指纹序列包括多个指纹向量,所述根据所述指纹序列,采用哈希索引在音频指纹库中获得所述音频信号的相似指纹序列包括:
分别将所述多个指纹向量转换为哈希值;
根据各个指纹向量对应的哈希值,在所述音频指纹库对应的哈希表中进行索引查询,获得所述音频信号的相似指纹序列。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中各段指纹与所述指纹序列中各段指纹的差异性,确定所述音频信号被检索成功包括:
根据所述指纹序列中的各段指纹,计算所述各个相似指纹序列中各段指纹的差异比特数;
根据所述各个相似指纹序列中各段指纹的比特差异数,与所述各个相似指纹序列中各段指纹的比特总数的比值,确定所述各个相似指纹序列中各段指纹的误码率;;
根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功包括:
根据所述各个相似指纹序列中每段指纹的误码率和第一误码率阈值,确定所述各个相似指纹序列对应的音频信号样本包含所述音频信号,所述音频信号被检索成功。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功还包括:
根据所述各个相似指纹序列中每段指纹的误码率,获得所述各个相似指纹序列的总体误码率;
根据所述各个相似指纹序列的总体误码率和第二误码率阈值,确定所述各个相似指纹序列对应的音频信号样本包含所述音频信号,所述音频信号被检索成功。
在一种可能的实施方式中,所述获取待检索的音频信号的指纹序列包括:
获取所述音频信号中各帧信号对应的频域信号;
对所述各帧信号对应的频域信号进行子带划分,并获取每个频域信号对应的子带能量差向量;所述能量差向量包括:相邻子带间的能量差;
对所述各帧信号对应的子带能量差向量进行二值量化,获得所述各帧信号的指纹向量;
按时间顺序排列所述各帧信号的指纹向量,获得所述音频信号的指纹序列。
在一种可能的实施方式中,在所述获取所述音频信号中各帧信号对应的频域信号之前,所述方法还包括:
采用汉宁窗对所述音频信号进行分帧处理,以及对分帧处理后的各帧信号进行预加重处理。
在一种可能的实施方式中,在对所述各帧信号对应的子带能量差向量进行二值量化之前,所述方法还包括:
采用前一帧信号对应的子带能量差向量,对当前帧信号对应的子带能量差向量进行滤波;其中,当所述当前帧信号为第一帧信号时,采用预设的标准子带能量差向量对所述当前帧信号对应的子带能量差向量进行滤波。
第二方面,本申请实施例提供了一种音频检索装置,该装置包括:获取模块,用于获取待检索的音频信号的指纹序列;匹配模块,用于根据所述指纹序列,采用哈希索引在音频指纹库中获得所述音频信号的相似指纹序列;分段模块,用于在频域维度分别将所述指纹序列和各个相似指纹序列划分为数量相同的多段指纹;比对模块,用于根据所述各个相似指纹序列中各段指纹与所述指纹序列中各段指纹的差异性,确定所述音频信号被检索成功。
在一种可能的实施方式中,所述指纹序列包括多个指纹向量,所述匹配模块具体用于:
分别将所述多个指纹向量转换为哈希值;
根据各个指纹向量对应的哈希值,在所述音频指纹库对应的哈希表中进行索引查询,获得所述音频信号的相似指纹序列。
在一种可能的实施方式中,所述比对模块具体用于:
根据所述指纹序列中的各段指纹,计算所述各个相似指纹序列中各段指纹的差异比特数;
根据所述各个相似指纹序列中各段指纹的比特差异数,与所述各个相似指纹序列中各段指纹的比特总数的比值,确定所述各个相似指纹序列中各段指纹的误码率;;
根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功包括:
根据所述各个相似指纹序列中每段指纹的误码率和第一误码率阈值,确定所述各个相似指纹序列对应的音频信号样本包含所述音频信号,所述音频信号被检索成功。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功还包括:
根据所述各个相似指纹序列中每段指纹的误码率,获得所述各个相似指纹序列的总体误码率;
根据所述各个相似指纹序列的总体误码率和第二误码率阈值,确定所述各个相似指纹序列对应的音频信号样本包含所述音频信号,所述音频信号被检索成功。
在一种可能的实施方式中,所述获取单元具体用于:
获取所述音频信号中各帧信号对应的频域信号;
对所述各帧信号对应的频域信号进行子带划分,并获取每个频域信号对应的子带能量差向量;所述能量差向量包括:相邻子带间的能量差;
对所述各帧信号对应的子带能量差向量进行二值量化,获得所述各帧信号的指纹向量;
按时间顺序排列所述各帧信号的指纹向量,获得所述音频信号的指纹序列。
在一种可能的实施方式中,在所述获取所述音频信号中各帧信号对应的频域信号之前,所述获取模块还用于:
采用汉宁窗对所述音频信号进行分帧处理,以及对分帧处理后的各帧信号进行预加重处理。
在一种可能的实施方式中,在对所述各帧信号对应的子带能量差向量进行二值量化之前,所述所述获取模块还用于:
采用前一帧信号对应的子带能量差向量,对当前帧信号对应的子带能量差向量进行滤波;其中,当所述当前帧信号为第一帧信号时,采用预设的标准子带能量差向量对所述当前帧信号对应的子带能量差向量进行滤波。
第三方面,本申请还提供一种计算设备,该计算设备包括:存储器和处理器;所述存储器存储有计算机指令,当所述处理器执行所述计算机指令时,实现权利要求1~8中任一项所述的方法。
附图说明
图1是本申请提供的一种应用场景中两个音频文件的指纹块的示意图;
图2是本申请实施例提供的一种音频检索方法的流程图;
图3是本申请实施例提供的一种获取音频信号的指纹序列的流程图;
图4是本申请实施例提供的一种对指纹序列进行频域分段的示意图;
图5是本申请实施例提供的一种比对指纹序列和相似指纹序列确定被检出的示意图;
图6是本申请实施例提供的一种音频检索装置的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
图1是本申请提供的一种应用场景。在图1中,(a)和(b)表示具有相同背景音乐的两个音频文件的指纹块,(c)是(a)和(b)的指纹差异图。其中,(a)是音频样本,(b)是待检索的音频,(a)中的内容是“静夜思”的朗诵音频,(b)中的内容是“春晓”的朗诵音频。显然,这种场景下,(b)所示的指纹块是不可能被(a)检索出的,但是由于两个文件具有相同的背景音乐,整体的误码率可能会满足阈值条件,导致(b)被错误的检索成功。
为此,本申请实施例提供一种音频检索方法流程图,如图2所示,该方法包括步骤s1~步骤s2。
在步骤s1中,获取待检索音频信号的指纹序列。
本实施例中,由于人耳声音最敏感的频率是3000至4000hz,所以为了满足人耳特性以及节省计算资源,在采集音频信号时,降采样到5000hz来获取待检索的音频信号。本步骤具体如图3所示的步骤s101~步骤s107。
在步骤s101中,对待检索的音频信进行分帧处理,获得多个帧信号。
本实施例中,采用汉明窗对原始音频信号进行分帧处理,设定帧长为0.4s(秒),帧叠为0.0256s,汉明窗加权如公式(1)所示,在其他实施例中,还可采用其他分帧方法,本申请不做具体限定。
公式(1)中,w(n)为音频信号中第n个采样点的值的权重;n为汉宁窗的长度,大小为一帧音频信号的采样点数。
在步骤s102中,对每帧信号进行预加重,获得预加重的输出信号,然后进行离散傅里叶变换,获得每帧信号对应的频域信号。
本实施例中,首先采用一阶fir高通滤波器实现预加重,具体的差分方程如公式(2)所示;然后采用公式(3)进行傅里叶变换。
yi[n]=xi(n)-axi(n-1)(2)
公式(2)中,xi(n)为预加重前的第i帧信号,a为预加重系数,yi[n]为预加重后的第i帧信号。
公式(3)中,yi(k)为yi[n]对应的频域信号,l为傅里叶变换的音频点数。
在步骤s103中,对每帧信号对应的频域信号进行子带划分,并计算每个频域信号中相邻子带间的能量差,获得每帧信号对应的子带能量差向量。
本实施例中,在每帧信号的频域信号的200hz-3000hz之间进行子带划分,一共分为33个子带。其中,帧的个数用i表示,1<i<k,k表示最大帧数;子带的个数用m表示,1<m<m,m表示子带总数,此处m=33。第m个子带的起始频域也即第m-1个子带的终止频率,计算方式如公式(4)所示。
公式(4)中,fmin为子带频率的下限值,本实施例设为200hz;fmax为子带频率的上限值,本实施例设为3000hz。
在获得各个子带之后,先计算各个子带的能量,获得各个频域信号的子带能量向量,然后计算相邻子带间的能量差,获得各个频域信号的子带能量差向量,也即各帧信号对应的子带能量差向量。
其中,第i帧信号对应的子带能量向量可以表示为ei=(ei,1,……,ei,m,……,ei,33),第i帧信号对应的子带能量差向量可以表示为e′i=(ei,1-ei,2,……,ei,m-ei,m+1,……,ei,32-ei,33),ei,m为第i帧信号第m个子带的能量。
在步骤s104中,采用前一帧信号对应的子带能量差向量对当前帧信号对应的子带能量差向量进行滤波。
本实施例中,按公式(5)进行滤波,滤波后的向量可表示为si=(si,1,……,si,m,……,si,32)。其中,当前帧为第一帧时,不进行滤波,或者采用标准子带能量差向量进行滤波,标准子带能量差向量可以是零向量。
公式(5)中,si,m为第i帧第m个子带能量差滤波后的值。
在步骤s105中,对滤波后的向量进行二值量化,获得每帧信号的指纹向量。
本实施例中,可采用公式(6)进行二值量化,获得指纹向量ti=(ti,1,...,ti,m,…ti,32),ti为第i帧信号的指纹向量,ti,m为第i帧第m个子带能量差滤波后的指纹。此外,在其他实施例中,可直接对滤波前的向量进行二值量化,获得指纹向量。各帧信号的指纹向量即可构成待检索音频信号的指纹序列(或指纹块)。
继续参阅图1,在步骤s2中,根据指纹序列,在音频指纹库的哈希表中检索,获得相似指纹序列。
本实施例中,具体将音频信号的指纹序列中每个指纹向量转换为哈希值,在音频指纹库的哈希表中进行检索查询,将命中的位置作为候选位置,将候选位置对应的指纹序列作为相似指纹序列。其中,音频指纹库根据多个音频信号样本构建,并根据多个音频信号样本的指纹序列创建其哈希表,以便于检索查询。本实施例中,多个音频信号样本的指纹序列同样采用步骤s1所述的方法获得。
在步骤s3中,在频域维度分别将指纹序列和各个相似指纹序列划分为数量相同的多段指纹。
本实施例中,如图4所示,以相似指纹序列为例,将其在频域200hz~3000hz分为h段,a1~ah。图4中竖向表示帧数,本实施例中,帧数设为256帧。
在步骤s4中,比较各个相似指纹序列中各段指纹,与指纹序列中各段指纹的差异性,来音频信号在所述音频指纹库中的检索结果。
本实施例中,各个相似指纹序列和指纹序列中均包括h段指纹,在比较差异性时,依次比较每个相似指纹序列中第h段指纹和指纹序列中第h段指纹,并获得其差异比特数,其中,1≤h≤h。获得每个相似指纹序列各段指纹的差异比特数之后,逐个计算相似指纹序列中每段指纹的误码率。
具体地,如图5所示,如果有一段指纹的误码率d超出了第一误码率阈值r,则表明该相似指纹序列对应的音频信号样本不包含待检索的音频信号,该音频信号未被检出。反之,表明该相似指纹序列对应的音频信号样本包含待检索的音频信号,该音频信号被检索成功。第一误码率阈值是单段指纹的阈值,用来判断各段指纹的误码率。
如果相似指纹序列各段指纹的误码率d均未超过第一误码率阈值r,则将其求和获得总体误码率d,如果总体误码率d超出第二误码率阈值r,则同样表明该相似指纹序列对应的音频信号样本不包含待检索的音频信号,该音频信号未被检出。反之,表明该相似指纹序列对应的音频信号样本包含待检索的音频信号,该音频信号被检索成功。第二误码率阈值是总体的误码率阈值,用来判断误码率之和。
本申请的方法实施例,在基于指纹序列进行检索匹配时,将指纹序列在频域上划分为多段,先计算各段指纹的误码率,再计算总体的误码率,从段指纹的误码率和总体的误码率两个层面进行判断,可减小信号检索的误差,提高检索的准确度。
基于上述方法实施例,本申请还提供一种音频检索装置,如图6所示,该装置包括:获取模块,用于获取待检索的音频信号的指纹序列;匹配模块,用于根据所述指纹序列,采用哈希索引在音频指纹库中获得所述音频信号的相似指纹序列;分段模块,用于在频域维度分别将所述指纹序列和各个相似指纹序列划分为数量相同的多段指纹;比对模块,用于根据所述各个相似指纹序列中各段指纹与所述指纹序列中各段指纹的差异性,确定所述音频信号被检索成功。
在一种可能的实施方式中,所述指纹序列包括多个指纹向量,所述匹配模块具体用于:
分别将所述多个指纹向量转换为哈希值;
根据各个指纹向量对应的哈希值,在所述音频指纹库对应的哈希表中进行索引查询,获得所述音频信号的相似指纹序列。
在一种可能的实施方式中,所述比对模块具体用于:
根据所述指纹序列中的各段指纹,计算所述各个相似指纹序列中各段指纹的差异比特数;
根据所述各个相似指纹序列中各段指纹的比特差异数,与所述各个相似指纹序列中各段指纹的比特总数的比值,确定所述各个相似指纹序列中各段指纹的误码率;;
根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功包括:
根据所述各个相似指纹序列中每段指纹的误码率和第一误码率阈值,确定所述各个相似指纹序列对应的音频信号样本包含所述音频信号,所述音频信号被检索成功。
在一种可能的实施方式中,所述根据所述各个相似指纹序列中每段指纹的误码率,确定所述音频信号被检索成功还包括:
根据所述各个相似指纹序列中每段指纹的误码率,获得所述各个相似指纹序列的总体误码率;
根据所述各个相似指纹序列的总体误码率和第二误码率阈值,确定所述各个相似指纹序列对应的音频信号样本包含所述音频信号,所述音频信号被检索成功。
在一种可能的实施方式中,所述获取单元具体用于:
获取所述音频信号中各帧信号对应的频域信号;
对所述各帧信号对应的频域信号进行子带划分,并获取每个频域信号对应的子带能量差向量;所述能量差向量包括:相邻子带间的能量差;
对所述各帧信号对应的子带能量差向量进行二值量化,获得所述各帧信号的指纹向量;
按时间顺序排列所述各帧信号的指纹向量,获得所述音频信号的指纹序列。
在一种可能的实施方式中,在所述获取所述音频信号中各帧信号对应的频域信号之前,所述获取模块还用于:
采用汉宁窗对所述音频信号进行分帧处理,以及对分帧处理后的各帧信号进行预加重处理。
在一种可能的实施方式中,在对所述各帧信号对应的子带能量差向量进行二值量化之前,所述所述获取模块还用于:
采用前一帧信号对应的子带能量差向量,对当前帧信号对应的子带能量差向量进行滤波;其中,当所述当前帧信号为第一帧信号时,采用预设的标准子带能量差向量对所述当前帧信号对应的子带能量差向量进行滤波。
本申请实施例还提供一种计算设备,该计算设备包括:存储器和处理器;所述存储器存储有计算机指令,当所述处理器执行所述计算机指令时,前述方法实施例中的方案。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。