一种基于变速模板的音频样例检索方法与流程

文档序号:21408870发布日期:2020-07-07 14:43阅读:269来源:国知局
一种基于变速模板的音频样例检索方法与流程

本发明属于音频检索技术领域,具体涉及一种基于变速模板的音频样例检索方法。



背景技术:

音频样例检索是指从音频数据库中检索出与用户提交查询样例具有相似内容的音频信息并反馈给用户。其核心内容包括两部分:特征提取和特征检索。其中,音频特征提取比较关键,只有选取了合适的音频特征,才能继续后面的检索方法设计。在大多数的音频样例检索方法中,大部分都是通过音频指纹实现的。其中,音频指纹,可以理解为音频信号的独一无二标识,是通过提取算法,针对音频提取特定特征而形成的序列。因此,一段音频指纹就是一段音频内容的概括,并且能够唯一的表达这段音频信号。在音频指纹提取方面,有很多大量的提取算法。其中haitsma等人提出了一阶相邻能量差的方法。该方法通过对音频信号进行短时傅里叶变化,然后利用相邻音频帧的一阶能量差是否大于零来形成音频指纹,接着将音频指纹转换成32位比特关键字序列,形成哈希表并构建索引来进行样例检索。除此之外,还有很多其他科研机构提出的音频指纹算法。

在上述现有的算法中,一阶相邻能量差的方法由于指纹内容简单、容易实现、复杂度小、检索效率高等优点被广泛使用。但是,在实际应用中用户获取的音频片段容易遭受环境噪声和传输噪声的干扰,或有的应用场景中要求进行匹配的语音样例很短或者样例中噪声的存在可能会导致音频指纹间误码率超过阈值而导致无法命中。另外,由于静音帧的指纹容易出现不稳定性,在音频模板比较短时,很容易出现音频的误检和漏检。

目前,传统的检索匹配算法是采用比特误差率(biterror,ber),即比较两个音频片段数字音频指纹间的相似度来决定候选结果,其计算方法如下:

其中,f(n,m)和f'(n,m)分别代表查询音频和待检音频第n帧音频指纹的第m位的值,n为总帧数,m为指纹的位数,ber为预设的比特误差率,一般预设为0.35。当比对误差低于预设的门限时,则表明找到了目标音频文件。

但是,该比对方法并没有考虑到在一段音频片段中不同的指纹片段在音频中出现的错误概率并不相同。例如,在静音段中,音频指纹容易出现较高的误码率。在正常连续说话的语音段中,音频指纹则会有较低的误码率。因此,在短时音频模板匹配时,上面对所有帧差异比特(bit)数相加的方法,会导致大量的虚警存在。



技术实现要素:

本发明的目的在于,为解决现有的检索方法存在上述缺陷,本发明提出了一种基于变速模板的音频样例检索方法,在相邻能量差音频检索系统的基础上,将长模板音频拆分成短的音频模板进行检索,有效增加了系统对变速模板的鲁棒性;克服传统音频检索在待检音频变速时性能出现明显下降的问题。

为了实现上述目的,本发明提供了一种基于变速模板的音频样例检索方法,把一段较长的音频流拆分成n个较短的音频片段,对n各较短的音频片段依次进行音频检索。由于拆分后的音频片段比较短,因此针对短音频检索时,计算各个短音频静音能量的比例来进行命中结果筛检;最后,将所有命中结果进行组合,从而有效提高算法对变速音频的精度和召回。该方法具体包括:

针对长度5秒以上的变速模板的待检音频拆分为多个短音频片段,获取各个短音频片段的二进制音频指纹序列值,查找预先建立的哈希表;查找出各个短音频片段的二进制音频指纹序列值对应的模板音频的音频指纹序列值;计算各个短音频片段和模板音频之间指纹序列差异数d和模板音频与短音频片段之间允许指纹序列差异数的阈值reject;如果d<reject,则认为短音频片段与模板音频相似;如果d>reject,则认为短音频片段存在错误,并提取该短音频片段。

作为上述方法的改进之一,所述哈希表的预先建立的步骤具体包括:

步骤1)获取音频样例的音频指纹;

步骤2)根据步骤1)中获取的音频指纹,提取音频指纹的二进制音频指纹序列值,以二进制音频指纹序列值为关键字建立哈希表。

作为上述方法的改进之一,所述步骤1)具体包括:

通过对音频信号进行频域变换和特征分析,通过频域特征,保留与音频听觉相关的重要信息,提取二进制音频指纹序列值,形成音频指纹。具体地,

步骤1-1)将音频样例的音频信号降低到适合人耳特性的音频信号,获得第一音频信号;

步骤1-2)将步骤1-1)获得的第一音频信号,以每0.064秒为一帧,对其进行分帧,获得多帧音频,帧与帧之间保持50%的重叠率,根据公式(2),对每一帧音频用相同的汉明窗长度进行加权,加权方式如公式(3),以获得每一帧音频的第n个样点的第二音频信号x(n)

其中,n为汉明窗长度,即每一帧音频的样点数;x'(n)为原始的第n个音频样点的值;w(n)为第n个音频样点的权重值;x(n)为加权后的第n个音频样点的值;

步骤1-3)针对步骤1-2)获得的每一帧音频的第n个样点的音频信号,采用一阶fir高通滤波器,根据公式(4),进行预加重,获得预加重后的输出信号y(n);

y(n)=x(n)-ax(n-1)(4)

其中,x(n)为每一帧音频的第n个样点的原始信号;y(n)为预加重后的输出信号;a为预加重系数,0.9<a<1.0;

步骤1-4)采用快速傅里叶算法,对步骤1-3)中的输出信号y(n),利用公式(5),进行离散傅立叶变换,获得音频帧经傅里叶变化后的频点值x(k);

其中,x(k)为音频帧经傅里叶变化后的频点值;n'为傅里叶变化采取的音频点数;k为频点编号;j为虚数;

步骤1-5)在频域,针对步骤1-4)中的x(k)在梅尔域进行子带划分,一共分成33个子带,根据公式(6),获得第m子带的起始频率,即第m-1子带的终止频率f(m)的计算方式如下:

其中:fmin为映射下限;fmax为映射上限;m为子带个数;

步骤1-6)利用公式(7),计算第m子带所包含的能量e(m);假设第m子带的起始频率为f(m),第m+1子带的终止频率为f(m+1);

其中,音频帧经离散傅里叶变化后的频点值x(k)的绝对值的平方为第m子带所包含的能量e(m);

步骤1-7)假定第i帧音频信号的第m子带的能量为eim,其对应的二进制音频指纹序列值为tim,则音频指纹的每个比特定义为:

其中,sim为第i帧音频信号的第m子带与第i-1帧音频信号的第m+1子带之间的一阶相邻能量差;tim为第i帧音频信号第m子带的二进制音频指纹序列值;

根据获得的tim,获得第i帧音频信号的音频指纹。

作为上述方法的改进之一,所述步骤2)具体包括:

根据音频样例的音频指纹的二进制音频指纹序列值,建立哈希表,作为索引机构,用于储存音频指纹。

具体的,

所述步骤1)中每帧音频信号的音频指纹均由32位二进制序列值表示,记为key,也就是,所述步骤1)中每帧音频信号的音频指纹均对应一个key值。所以在进行建立索引时可以选用哈希表来存放音频指纹,即按照key值来建立哈希表。若存在多帧音频信号的音频指纹对应的key值相等,则通过在哈希表表项后添加链表来存放,每个链表节点保存一些必要信息:音频帧所在音频文件的标志,音频帧在音频文件中的位置信息。

作为上述方法的改进之一,所述查找出短音频的音频指纹的二进制音频指纹序列值对应的模板音频的音频指纹序列值具体包括:

设一段音频时常为l秒的待检音频a,按2秒长度,将待检音频a拆分为多个短音频片段,如公式(10),形成短音频片段组合;其中,拆分待检音频a后,剩余的待检音频a不够2秒的短音频片段单独成为短音频片段:

(a1,a2,a3,a4...ak)(10)

其中,ak表示待检音频a拆分后的第k个短音频片段;

针对每一个短音频片段,根据步骤1)的提取步骤,提取出各个短音频片段的音频指纹,进而提取各个短音频片段的音频指纹的二进制音频指纹序列值,查找预先建立的哈希表,查找出各个短音频片段的音频指纹的二进制音频指纹序列值对应的模板音频的音频指纹序列值。

作为上述方法的改进之一,所述计算各个短音频和模板音频之间指纹序列差异数d具体包括:

针对短音频片段组合(a1,a2,a3,a4...ak)中的各个短音频片段,根据按公式(11),

计算每个短音频片段与模板音频之间指纹序列差异数d:

其中,t(i,m)为待检音频第i帧音频指纹序列中第m位的二进制音频指纹序列值。t'(i,m)为模板音频第i帧音频指纹序列中第m位的二进制音频指纹序列值;

m为子带数,即一共多少个子带;r为模板音频与短音频片段之间应比较的帧音频指纹总数。

作为上述方法的改进之一,所述计算模板音频与短音频片段之间允许指纹序列差异数的阈值reject;

再根据公式(12),依次对其中的各个短音频片段,计算模板音频与短音频片段之间允许指纹序列差异数的阈值reject;

其中,r表示模板音频与待检音频之间应比较的帧音频指纹总数,t表示预先设置好的比例值,一般取0.35;

计算短音频片段与模板音频之间指纹序列差异数d和模板音频与短音频片段之间允许指纹序列差异数的阈值reject;

如果d<reject,则认为待检音频与模板音频相似;如果d>reject,则认为待检音频存在错误,并提取该短音频片段。

当d>reject时,针对提取的短音频片段,按照该短音频片段在模板音频中命中的结束时间进行排序,获得短音频序列,如公式(13);

(b11,b12,b13...b1j;b21,b22,b23...b2j;....;bk1,bk2,bk3...bkj)(13)

其中,bkj表示第ak个短音频片段在模板音频中出现的第j个结果;

利用短音频序列中的bkj进行判定,如果发现某一组合bij与bi-1l满足公式(14),则认为命中的短音频片段是连续的,并提取该组合bij和bi-1l,形成命中短音频片段组合(b1q;b2r;......;bkt),获得最终命中的长时模板长度:

|bij-bi-1l|≤θ(14)

其中,||符号为取绝对值的含义;θ为拆分的短音频片段的长度,p的取值

为预先设置好的长度秒数,一般可以设置为2秒;bij表示第ai个短音频片段在模板音频中出现的第j个结果。bi-1l表示第ai-1个短音频片段在模板中出现的第l个结果;b1q表示第a1个音频片段在模板中出现的第q个结果;b2r代表第a2个音频片段在模板中出现的第r个结果;bkt表示第ak个音频片段在模板中出现的第t个结果。

本发明的优点在于:

在实际应用场景中,当待检音频流数据通过解码或者压缩后会经常出现音频缺失、变速等情况。此时待检音频流的二进制指纹序列值与模板音频的二进制指纹序列值不会一一对应,此时按照原来的阈值匹配方法会造成很多音频的漏检。本发明针对较长的待检音频流按照拆分为多个短音频来进行二进制指纹序列值对比的思想来进行匹配检索,通过短音频分批检索匹配的方式再进行结果合并,即可解决在待检音频流较长时因为时域拉伸、变速或频谱缺失等环境下导致二进制指纹序列值匹配不上的问题。有效的增加了对变速、缺帧等环境下的鲁棒性;克服了传统音频检索在待检音频变速、缺帧时性能出现明显下降的问题。

附图说明

图1是正常的待检音频的二进制指纹序列值与模板音频的二进制指纹序列值对应图;

图2是变速或拉伸后的待检音频的二进制指纹序列值与模板音频的二进制指纹序列值对应图;

图3是将待检音频拆分为多个短音频片段后的二进制指纹序列值与模板音频的二进制指纹序列值的对应图;

图4是本发明的一种基于变速模板的音频样例检索方法的流程图。

具体实施方式

现结合附图对本发明作进一步的描述。

本发明提供了一种基于变速模板的音频样例检索方法,把一段较长的音频流拆分成n个较短的音频片段,对n各较短的音频片段依次进行音频检索。由于拆分后的音频片段比较短,因此针对短音频检索时,计算各个短音频静音能量的比例来进行命中结果筛检;最后,将所有命中结果进行组合,从而有效提高算法对变速音频的精度和召回。如图4所示,该方法具体包括:

步骤1)获取音频样例的音频指纹;通过对音频信号进行频域变换和特征分析,通过频域特征,保留与音频听觉相关的重要信息,提取二进制音频指纹序列值,形成音频指纹。

所述步骤1)具体包括:

步骤1-1)将音频样例的音频信号降低到适合人耳特性的音频信号,获得第一音频信号;一般来说,人耳能听见的声音频率在20-20000hz之间,但是人耳对频率为4khz左右的声音最敏感,所以为了满足人耳特性和降低程序的计算复杂度,通常把音频降采样到5khz;

步骤1-2)将步骤1-1)获得的第一音频信号,以每0.064秒为一帧,对其进行分帧,获得多帧音频,帧与帧之间保持50%的重叠率,根据公式(2),对每一帧音频用相同的汉明窗长度进行加权,加权方式如公式(3),以获得每一帧音频的第n个样点的第二音频信号x(n)

其中,n为汉明窗长度,即每一帧音频的样点数;x'(n)为原始的第n个音频样点的值;w(n)为第n个音频样点的权重值;x(n)为加权后的第n个音频样点的值;

步骤1-3)针对步骤1-2)获得的每一帧音频的第n个样点的音频信号,采用一阶fir高通滤波器,根据公式(4),进行预加重,获得预加重后的输出信号y(n);

y(n)=x(n)-ax(n-1)(4)

其中,x(n)为每一帧音频的第n个样点的原始信号;y(n)为预加重后的输出信号;a为预加重系数,0.9<a<1.0;

步骤1-4)采用快速傅里叶算法,对步骤1-3)中的输出信号y(n),利用公式(5),进行离散傅立叶变换,获得音频帧经傅里叶变化后的频点值x(k);

其中,x(k)为音频帧经傅里叶变化后的频点值;n'为傅里叶变化采取的音频点数;k为频点编号;j为虚数,即j2=-1;

步骤1-5)在频域,针对步骤1-4)中的x(k)在梅尔域进行子带划分,一共分成33个子带,根据公式(6),获得第m子带的起始频率,即第m-1子带的终止频率f(m)的计算方式如下:

其中:fmin为映射下限,此处为300hz;fmax为映射上限,此处为2000hz;m为子带个数,此处为33;

步骤1-6)利用公式(7),计算第m子带所包含的能量e(m);假设第m子带的起始频率为f(m),第m+1子带的终止频率为f(m+1);

其中,音频帧经离散傅里叶变化后的频点值x(k)的绝对值的平方为第m子带所包含的能量e(m);

步骤1-7)假定第i帧音频信号的第m子带的能量为eim,其对应的二进制音频指纹序列值为tim,则音频指纹的每个比特定义为:

其中,sim为第i帧音频信号的第m子带与第i-1帧音频信号的第m+1子带之间的一阶相邻能量差;tim为第i帧音频信号第m子带的二进制音频指纹序列值;

根据获得的tim,获得第i帧音频信号的音频指纹。

步骤2)根据步骤1)中获取的音频指纹,提取音频指纹的二进制音频指纹序列值,以二进制音频指纹序列值为关键字建立哈希表;所述步骤2)具体包括:

根据音频样例的音频指纹的二进制音频指纹序列值,建立哈希表,作为索引机构,用于储存音频指纹。具体地,

所述步骤1)中每帧音频信号的音频指纹均由32位二进制序列值表示,记为key,也就是,所述步骤1)中每帧音频信号的音频指纹均对应一个key值。所以在进行建立索引时可以选用哈希表来存放音频指纹,即按照key值来建立哈希表。若存在多帧音频信号的音频指纹对应的key值相等,则通过在哈希表表项后添加链表来存放,每个链表节点保存一些必要信息:音频帧所在音频文件的标志,音频帧在音频文件中的位置信息。

步骤3)针对长度5秒以上的变速模板的待检音频拆分为多个短音频片段,获取各个短音频片段的二进制音频指纹序列值,查找预先建立的哈希表;查找出各个短音频片段的二进制音频指纹序列值对应的模板音频的音频指纹序列值;具体地,

设一段音频时常为l秒的待检音频a,按2秒长度,将待检音频a拆分为多个短音频片段,如公式(10),形成短音频片段组合;其中,拆分待检音频a后,剩余的待检音频a不够2秒的短音频片段单独成为短音频片段:

(a1,a2,a3,a4...ak)(10)

其中,ak表示待检音频a拆分后的第k个短音频片段;

针对每一个短音频片段,根据步骤1)的提取步骤,提取出各个短音频片段的音频指纹,进而提取各个短音频片段的音频指纹的二进制音频指纹序列值,查找预先建立的哈希表,查找出各个短音频片段的音频指纹的二进制音频指纹序列值对应的模板音频的音频指纹序列值。

步骤4)计算各个短音频片段和模板音频之间指纹序列差异数d、模板音频与短音频片段之间允许指纹序列差异数的阈值reject;具体地,

针对短音频片段组合(a1,a2,a3,a4...ak)中的各个短音频片段,根据按公式(11),计算每个短音频片段与模板音频之间指纹序列差异数d:

其中,t(i,m)为待检音频第i帧音频指纹序列中第m位的二进制音频指纹序列值。t'(i,m)为模板音频第i帧音频指纹序列中第m位的二进制音频指纹序列值;m为子带数,即一共多少个子带,一般取值为33,r为模板音频与短音频片段之间应比较的帧音频指纹总数;

再根据公式(12),依次对其中的各个短音频片段,计算模板音频与短音频片段之间允许指纹序列差异数的阈值reject;

其中,r表示模板音频与待检音频之间应比较的帧音频指纹总数,t表示预先设置好的比例值,一般取0.35;

计算短音频片段与模板音频之间指纹序列差异数d和模板音频与短音频片段之间允许指纹序列差异数的阈值reject;

如果d<reject,则认为待检音频与模板音频相似;如果d>reject,则认为待检音频存在错误,并提取该短音频片段。

当d>reject时,针对提取的短音频片段,按照该短音频片段在模板音频中命中的结束时间进行排序,获得短音频序列,如公式(13);

(b11,b12,b13...b1j;b21,b22,b23...b2j;....;bk1,bk2,bk3...bkj)(13)

其中,bkj表示第ak个短音频片段在模板音频中出现的第j个结果;

利用短音频序列中的bkj进行判定,如果发现某一组合bij和bi-1l满足公式(14)的要求,则认为命中的短音频片段是连续的,并提取该组合bij和bi-1l,形成命中短音频片段组合(b1q;b2r;......;bkt),获得最终命中的长时模板长度:

|bij-bi-1l|≤θ(14)

其中,||符号为取绝对值的含义;θ为拆分的短音频片段的长度,p的取值为预先设置好的长度秒数,一般可以设置为2秒;bij表示第ai个短音频片段在模板音频中出现的第j个结果。bi-1l表示第ai-1个短音频片段在模板中出现的第l个结果;b1q表示第a1个音频片段在模板中出现的第q个结果;b2r代表第a2个音频片段在模板中出现的第r个结果;bkt表示第ak个音频片段在模板中出现的第t个结果。

如图1所示,实时待检音频与模板音频之间的指纹二进制流的正常比对方式,在理想情况下待检音频的二进制指纹与模板之间的指纹二进制流是一一对应的。此时通过阈值匹配能够很好的进行模板音频的检出。

如图2所示,是经过变速或者音频帧缺失后待检音频流的二进制指纹与模板音频之间的音频指纹二进制流的对应情况,此时如果按照原来阈值匹配一一对应比较的方法会造成指纹差异数大于预先设置的阈值而造成音频的漏检。

如图3所示,是按照长音频拆分为短音频后比对的示意图。不同于原来指纹序列值一一比较的方法。每个待检音频在比对时分成多个短的比对区间,每个区间的音频指纹流单独与模板音频进行音频指纹匹配,最后进行结果组合和阈值判定待检音频流是否可以检出。

当待检实时音频流长度要求5秒以上时,传统的二进制指纹序列值对比如图1所示;图1中dna即为二进制指纹序列值。当待检音频流数据发生不同程度的时域拉伸或者变速后,实时待检音频流的二进制指纹序列值与模板音频的二进制指纹序列值可能如图2所示,并非一一对应。此时通过二进制指纹差异数进行比较会造成大量的漏检。本发明对较长的待检音频流拆分为多个短音频来进行二进制指纹序列值对比,此时待检音频与模板音频的二进制指纹序列值对应关系如图3所示。最后,

针对检索出的结果进行合并,形成长模板音频,即可解决在待检音频流较长时因为拉伸或者变速导致二进制指纹序列值匹配不上的问题。其中,图1、图2、图3中的dna均代表整个待检音频流的二进制指纹的序列值。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1