一种实时语音端点检测方法及装置与流程

文档序号:17252285发布日期:2019-03-30 09:08阅读:233来源:国知局
一种实时语音端点检测方法及装置与流程

本发明涉及语音技术领域,具体地说,涉及一种实时语音端点检测方法及装置。



背景技术:

语音活性检测(vad),即在信号中检测出语音段,也即是语音端点检测技术。端点检测在语音信号处理领域中一直有着重要的意义。作为语音识别的前端,准确的端点检测可以提高识别的准确率;用于语音增强系统中,可以进行准确的噪声模型估计;在语音编码领域中可以降低编码的平均比特率并降低功耗。

目前,端点检测大体上可以分为两类:基于模型的检测方法和基于特征的检测方法。

基于模型的方法是以数据统计分析为基础建立一个能够更好刻画语音信号内部联系的模型,常见的有基于隐马尔科夫模型(hmm)、矢量量化(vectorquantization,vq)和支持向量机(supportvectormachine,svm)等端点检测方法。该方法过程比较复杂、运算量大,并且实际应用环境复杂多变,噪声多种多样,建立的语音和噪声模型对环境的适应性比较差,检测准确率达不到实际应用的需求。比如:cn20141077954中公开的语音端点检测方法和装置、cn201510587721中公开的基于统计模型的语音端点检测方法及装置、cn201610192489中公开的语音端点检测方法及装置、cn201710076757中公开的一种语音端点检测方法及语音识别方法、cn201610886934中公开的一种语音激活检测方法及装置,这些检测方法都需要大量的训练。

基于特征的方法,一般都是在较高的信噪比下均能给出较高的检测率,但是在低信噪比下却不够理想。传统的能量和过零率特征在低信噪比下已不再适用。许多新的特征被提出,比如:倒谱、线性预测编码系数、基频及谐波特性、频带方差、频域能量、差分能量、幅度差、差分过零率、高阶统计量特征、高频能量和低频能量的特征等等。以上的多种特征在低信噪比噪下检测准确度仍然不够理想。比如:

1、基于单一参数的:cn200710179342中公开的一种孤立词语音端点检测的方法及系统,基于平均能量,对于强噪,能量法无法区分;cn201110071269中公开的一种语音识别的端点检测方法,基于线性预测编码系数,判断参数单一,需要背景噪声和语音的模板,对于变化的噪声和语音难以检测;

2、基于少量一些参数组合,但是参数并不是很好区分噪声和语音,或者不是很好计算的:cn200410083807中公开的基于滑动窗口的端点检测方法、装置和语音识别系统,主要是基于能量和信噪比,属于比较粗略的方法,信噪比难以估计准确,强噪基本都难以区分;cn200410090802中公开的一种应用于语音识别系统的语音端点检测方法,逐帧判断,频带划分不同信噪比的子带,再根据谐波特性来判断起始帧,同样,信噪比难于估计准确,判断参数较少;cn201410221983中公开的基于基频的端点检测系统及其处理方法,基于基频,以及基频的谐波位置辅助,基频位置确定容易出错,对于一些频谱成分及其丰富的强噪,比如强白噪,无法区分,判断参数还是比较少;

3、基于信息熵、谱熵这种容易计算且能很好区分噪声和语音的参数,并且和其他参数结合,参数较多的:cn201410292519中公开的一种利用短时时频值的自适应端点检测方法,基于短时能量、短时信息熵和短时幅度相对值,信息熵是逐频点处理,误差较大,计算量大;cn201710086400中公开的一种低信噪比环境下基于谱熵改进的语音端点检测方法,主要基于子带谱熵和能量比值,但是子带不是自适应划分,未加异常子带处理,并且未加平滑等处理。

所以需要一种有效的方法能对实时语音进行准确的检测。



技术实现要素:

本发明的内容是提供一种实时语音端点检测方法及装置,其能够克服现有技术的某种或某些缺陷。

根据本发明的一种实时语音端点检测方法,其包括以下步骤:

一、信号分帧、加重;

二、去脉冲处理;

三、去除直流成分;

四、计算每帧信号的短时能量和过零率;

五、加窗处理;

六、减谱处理;

七、计算谱熵,将功率谱的一半频带,取一个有效频带,将有效频带的功率谱按照设定数目的频点作为一个子带,平均分成若干个子带,设每个子带频点数为np,则子带个数为:

floor(nvald/np);

其中,floor函数表示向下取整,nvald/np表示有效频带频点数除以子带频点数;设结果是nb个;

计算每个子带的功率值占总功率的概率,设为p;

根据这些子带的功率谱概率,自适应重新划分子带,调整子带的频点个数和频带个数,得到自适应划分子带的谱熵值;谱熵的计算公式为;

其中,sp为谱熵,m为子带个数,p(i)为第i个子带概率;

八、计算变换平滑谱熵,先做一定的平滑处理,平滑处理后,平滑谱熵取相反数后平移,得到一个新的参数,将取值区间映射为比较合适的值,并且使语音帧的参数值比较大,噪声帧的参数值比较小,新的参数为变换平滑谱熵;设平滑谱熵为spm,平移值设为n,变换平滑谱熵为spt,则计算公式为:

spt=-spm+n;

九、语音帧和噪声帧初步判断:根据当前帧的短时能量是否超过设置的语音帧能量阈值、以及其过零率是否在设置阈值范围内,若是,初步判断当前帧是语音帧,若否,则是噪声帧;

a、若是语音帧,则再分析判断其谐波特性以及高频段的功率谱特性:

1)谐波特性分析:

a、考查当前帧的功率谱,在前述有效频带内搜寻前8个有效峰值位置;

b、根据这些峰值的位置,即对应频点序号,判断这些位置之间是否存在近似谐波倍数关系,第一个峰值位置是基频位置,判断后面每个位置是否对其有近似2倍、3倍、4倍、5倍、6倍、7倍和8倍关系,近似关系可以通过设置一个浮动区间实现,如果有则计有一个谐波,计算出这一帧信号的谐波个数;

c、对谐波个数设置阈值,当谐波个数超过阈值即满足要求,继续分析高频段特性;

2)高频段特性分析:

取当前帧的一定频点以后的功率谱,求其峰值,和基频信号功率值的一定比例做比较,若峰值大,则认为此帧不是语音帧,否则认为是语音帧;

3)当前帧通过上述谐波特性和高频段功率谱特性判断后,如果是语音帧,则用其变换平滑谱熵来更新当前变换平滑谱熵阈值,更新方式是通过加权因子处理,并用当前帧的能量更新当前语音帧能量阈值,同样是加权因子方式得到,利用加权因子更新当前阈值的表达式如下:

设更新因子为a,当前阈值为th,用来更新的变量值为x,则更新后的阈值为:

th=(1-a)*th+a*x;

如果不是语音帧,则也通过当前帧的变换平滑谱熵更新当前变换平滑谱熵阈值,采用不同的加权因子;同时也用当前帧的能量更新当前噪声帧能量阈值,同样采用加权因子更新;

b、若是噪声帧,则同样采用不同的加权因子更新当前变换平滑谱熵阈值,以及更新当前减谱去噪的功率谱阈值、当前噪声帧能量阈值;

十、计算当前帧的变换平滑谱熵和调整当前变换平滑谱熵阈值、当前语音帧能量阈值以及当前噪声帧能量阈值后,根据当前帧的变换平滑谱熵和当前变换平滑谱熵阈值之间的关系,对变换平滑谱熵阈值进行处理,即,若当前帧变换平滑谱熵值大于一定值,且减去当前变换平滑谱熵阈值的差值大于一定值,则判定当前变换平滑谱熵阈值过小,采用当前帧变换平滑谱熵值加权更新当前变换平滑谱熵阈值;反之,若当前帧变换平滑谱熵值小于一定值,且当前变换平滑谱熵阈值减去当前帧变换平滑谱熵值的差值大于一定值,则判定当前变换平滑谱熵阈值过大,采用当前帧变换平滑谱熵值加权更新当前变换平滑谱熵阈值;

十一、语音段起始帧、结束帧判断:

1)以帧号为顺序,设置搜寻标志,交替搜寻起始帧和结束帧;

2)判断起始帧:

a、初步判定语音段起始帧:以当前帧和之前一定数目的帧为一段,将这一段的变换平滑谱熵和当前变换平滑谱熵阈值比较,若大于阈值的帧数达到一定数目,则初步判定当前帧为语音段起始帧,进行步骤b;若没达到一定数目,从下一帧信号继续判断;

b、第二次判断:对当前帧的其他特性进行判断,所述其他特性为谱熵、短时能量、过零率、谐波特性和特定噪声特性;若当前帧不满足所述其他特性阈值要求,则判定当前帧为不是语音起始帧,从下一帧信号继续判断;若当前帧满足所述其他特性阈值要求,则进行步骤c;

c、第三次判断:在当前帧及向前推一定帧的帧段内,统计谱熵值小于阈值的帧数、具备谐波特性的帧数、过零率在阈值范围内的帧数和具备特定噪声特性的帧数,对所有这些帧数设定一些阈值,当任意一个帧数不满足这些阈值时,或者当上述帧段内平均能量均值小于起始帧段平均能量阈值,则排除当前帧是语音起始帧,即判断为非语音帧,从下一帧信号继续判断;反之则为语音段起始帧,并进行步骤d;

d、用当前帧的变换平滑谱熵值再次更新当前变换平滑谱熵阈值,用当前帧的能量再次更新当前语音帧能量阈值,用当前帧之前一定帧段内的平均能量更新当前起始帧段平均能量阈值;

3)若经过上述2)的判断,任何一步判断出当前帧不是语音帧,则采用当前帧的功率谱加权更新当前减谱阈值,用当前帧的能量值加权更新当前噪声帧能量阈值以及语音帧能量阈值;

4)判断结束帧:搜寻到起始帧后,设置间隔一定的帧数之后才开始搜寻结束帧,这个间隔为最小语音段长度;当检测出语音起始帧后,进入的帧数累计超过最小语音段长度的帧数,即开始判断结束帧,方法为:

考查当前帧向前推一定帧数的帧段,统计变换平滑谱熵值小于阈值的帧数、谱熵值大于阈值的帧数、无谐波特性的帧数、过零率不在阈值范围内的帧数和有特定噪声特性的帧数,对这些帧数设置阈值,若任意一个帧数超过阈值,或者这一帧段的平均能量小于结束帧段平均能量阈值,则判定当前帧为结束帧;将搜寻标志设置成搜寻起始帧标志,从下一帧起开始判断起始帧;

如果当前帧对于上个起始帧已经过去一定帧数,可设置一个较长帧数,在这个较长的帧段内,将每一帧的变换平滑谱熵值、短时能量值、每一帧的对应的变换平滑谱熵阈值和语音帧能量阈值都保存,则在这个较长的时间段内进行判断,若变换平滑谱熵值比阈值小的帧数太多或者太少,则认为是谱熵阈值自适应调整方式已经不适合,这时应给出结束帧,将阈值参数设置成初始值;若这一帧段的谱熵和变换平滑谱熵值参数都符合阈值,但是平均能量异常,这时也给出结束帧,将阈值参数设置成初始值;若时间太久,可设置一个最长语音段,超过这个时间直接给出结束帧;

5)若经过4)对当前帧进行结束帧判断,判断出不是结束帧,即当前帧仍是语音帧,则根据当前帧的变换平滑谱熵值加权更新当前变换平滑谱熵阈值,利用当前帧的能量值更新当前语音帧能量阈值,以及利用当前帧之前一定帧段的平均能量更新结束帧段平均能量阈值;若判断出是结束帧,则可以根据不同的情况,加权更新变换平滑谱熵阈值、噪声帧能量阈值、减谱功率谱阈值以及结束帧段平均能量阈值。

作为优选,去脉冲处理的方法如下:对于一个信号点,考查其前后一段区间内信号点的幅值均值,若此信号点幅值绝对值超过上述幅值均值一定比例,则认为当前信号点幅值是瞬间过大或者过小,有窄脉冲的特性,此时根据上述幅值将当前信号点幅值调小,幅值符号不变;若当前信号点幅值绝对值不超过上述均值的一定比例,则当前信号点不做处理。

作为优选,加窗处理中,可以是汉明窗和汉宁窗的一种,在频谱变换前对一帧信号做一个按信号点的幅值加权处理,以使频谱平滑。

作为优选,减谱处理的方法如下:设置开始检测的前一定帧段当成噪声帧,用于估计初始底噪,这个帧段可以是从打开检测功能即开始处理,也可以是之后一定帧再处理,以消除打开检测功能的按键开关以及参数初始化处理带来的干扰,使谱熵计算更准确,这里的减谱,只是为了后面计算谱熵更准确,并不真正对原始语音信号做减谱去噪,也就是减谱后信号不需要恢复到时域,这样就减小了计算量;可取前10帧,作为噪声段,得出平均功率,作为减谱初值;在10帧前,直接计算每帧的功率谱谱熵,10帧后,先减谱处理再计算谱熵。

作为优选,自适应重新划分子带的方法为:

1)若某个子带功率谱概率大于0.9,则在有效频带中去掉这个子带的所有频点,即有效频带点数变少,重新计算各个子带的功率谱概率;若没有子带功率谱概率大于0.9,则直接执行2);

2)计算最小子带概率的熵,用nmin表示,设:

nmin=-pmin*lg(pmin),设pmin是最小子带功率谱概率;

根据nmin取值,重新计算子带个数,设重新计算的子带个数为v,采用以下公式:

得出新的子带个数,其中第二个表达式最终得出结果向下取整数,然后,根据有效频带的频点数对每个子带均匀分频点数,设有效频带点数为n'vald,则重新分到每个子带的频点数为:

floor(n'vald/v);

floor函数表示向下取整,/表示做除法;上述过程即是自适应重新划分子带;

再次计算个子带的概率,最终得出这一帧信号的谱熵值,即是自适应划分子带的谱熵值。

作为优选,步骤八中的平滑处理的方法为:以当前帧向前算起连续5帧,设谱熵值依次为s(i-4),s(i-3),s(i-2),s(i-1),s(i),即s(i)为当前帧的谱熵,平滑的计算为:

当i小于5时,即第5帧以前,不做平滑处理。

作为优选,交替搜寻起始帧和结束帧的方法为:初始状态为搜寻起始帧标志,当搜寻到起始帧时,将标志设置为搜寻结束帧标志,最小语音段之后开始搜索结束帧,当搜寻到结束帧时,将搜寻标志设置为搜寻起始帧标志,从下一帧起搜寻起始帧,如此交替搜寻和设置。

作为优选,特定噪声特性为汽车发动机、汽车喇叭、警报、敲击桌子、文具、餐具、键盘、空调和电扇的噪声特性的一种或多种;其他,特定噪声特性判断,是根据这些噪声本身的时频特性通过机器录制大量这些噪声来分析总结出来的。比如汽车发动机噪声,典型的是在小轿车旁边或者里面采集到的比较平稳的噪声,其频谱峰值在比较低的频点,谱峰很窄,且越高频越衰减,无谐波特性;汽车喇叭,属于宽频噪声,在频谱高频段依然有很高的峰值;警报信号,是指火警,是一个随时间变化的区间扫频信号、频谱主峰值在语音范围但是没有谐波特性;敲击桌子、文具、键盘等,类似于单频或者单频带信号,能根据若信号频谱太过于集中来加以判别;空调、电扇等强噪,和汽车发动机类似,频谱主要集中在一定频段,且主峰值对应频点比汽车发动机噪声更低。这些噪声和特征可以根据应用需要和方法的有效性来扩展或者减少,这里最重要的是提供了一种思路,并且在最后的产品中也考虑了我们产品实际应用的一些场景噪声,显示了良好的适应效果。

作为优选,当判断出语音起始帧时,加入信号延时处理。若不加延时处理,则在语音段起始帧为一些清音段时,容易漏判,若采用延时处理,当判断出语音起始帧时,将此帧之前一定数目的帧当成起始帧,即当前帧的判断是在一定帧之后才做出的,这样能非常有效地检测出语音起始段的清音段。此外,对于一些语音段之间偶尔有一些间隙被判断成非语音帧的情况,由于采用了延时处理,可以在出现非语音段帧数太少时直接将这段非语音帧改成语音帧,即不会漏掉语音段的间隙。

本发明基于变换平滑自适应子带功率谱熵,通过特定变换得到变换平滑谱熵参数作为主参数来判断语音和非语音信号,不受信号能量影响,在强噪声环境下能够很好的防止误判;计算谱熵是按照划分子带来处理,不是逐点处理,减小计算量以及误差;划分子带是自适应的,更加提高准确性和实用性;由于语音信号短时平稳性,对谱熵参数加平滑处理,消除不正常的随机干扰,并且,由于直接计算出的谱熵参数比较小,并且是宽频噪声的谱熵值比较大,语音或者含噪语音信号的比较小,对谱熵参数取相反数,并且做一个线性平移,得到一个新的参数,参数取值区间比较合理,且语音或含噪语音信号的值比较大,噪声的值比较小,这样比较符合判断习惯,并且阈值比较好设置和处理;将变换平滑谱熵作为判断的主参数,对其设置阈值,提高检测的准确性和适应性;辅助以语音信号帧能量阈值、噪声信号帧能量阈值、语音信号帧段平均能量阈值、噪声信号帧段平均能量阈值、过零率阈值以及谐波特性分析、高频段特性以及多种典型噪声的特性分析等特征判断,能够使检测结果更具鲁棒性,防止很多类型的强噪误判;多种典型噪声是指产品应用环境的典型噪声,比如敲击桌子、文具、餐具、键盘等噪声,汽车发动机、汽车喇叭噪、警报信号噪声,空调、电扇等噪声,专门用产品录制大量这些噪声,试验时若基本方法不能区分,则针对性分析这些噪声的时域、频域特征,确定排除方法;采用单帧和帧段结合判断,并加了一些符合实际情况和应用习惯的处理和异常处理,比如可设置最小语音段,最长语音段等;变换平滑谱熵、语音帧能量、噪声帧能量、语音段平均能量、减谱功率谱等阈值都是动态更新的;作为可选,采用一点点延时处理,这基本不影响算法实时性。具体有,为排除语音起始段的清音漏检,处理时采用延时存取一定帧数,判断出起始帧后向前推一定帧数当成起始帧,试验效果非常好,以及,对于一些语音段之间偶尔有一些间隙被判断成非语音帧的情况,由于采用了延时处理,可以在出现非语音段帧数太少时直接将这段非语音帧改成语音帧,即不会漏掉语音段的合理间隙,增强语音信号的连续性;加入一些去脉冲滤波、减谱等处理,还可以扩展更多前处理,使语音检测更加准确,其中减谱阈值也是自适应更新的,能够适应不同类型的非平稳背景噪声;程序空间小,对于一些需要保存当前帧以及之前一定帧段内的参数,可以设置循环移位寄存器,计算量少,远没有模型法复杂。可移植性好,已经在ti的浮点dsp平台上的产品中应用,初步优化后判断一帧20ms、采样率8k、量化位数16位数据的时间最大在4ms左右,完全满足实时处理要求。

本发明根据信号是根据何种条件判断出来以及判断的结果,加权更新谱熵、变换平滑谱熵、相应的短时能量、相应的短时平均能量等参数的阈值,以使各阈值越来越准确,最终判断出的语音起始帧、结束帧也越来越准确。

本发明还提供了一种实时语音端点检测装置,其包括:

信号分帧加重模块,用于接收信号数据,对其进行分帧、加重处理;

去脉冲处理模块,与信号分帧加重模块连接,用于消除一些脉冲噪声;

去除直流模块,与去脉冲处理模块连接,用于去除直流成分;

短时能量和过零率计算模块,与去直流模块连接,用于计算每一帧的短时能量和过零率;

加窗处理模块,与短时能量和过零率计算模块连接,用于在频谱变换前对一帧信号做一个按信号点的幅值加权处理,以使频谱平滑;

减谱处理模块,与加窗处理模块连接,用于使谱熵计算更准确;

谱熵计算模块,与减谱处理模块连接,用于计算自适应划分子带的谱熵值;

变换平滑谱熵计算模块,与谱熵计算模块连接,用于平滑、变换处理谱熵,得到变换平滑谱熵;

语音噪声帧初步判断模块,与变换平滑谱熵计算模块连接,用于初步判断当前帧是语音还是噪声,更新变换平滑谱熵阈值、语音帧和噪声帧能量帧阈值;

语音段处理模块,与语音噪声帧初步判断模块连接,用于起始帧、结束帧的判断;

阈值调整模块,与语音段处理模块连接,用于根据不同情况判断出每帧信号情况后,根据判断结果调整相应阈值。

本实时语音端点检测装置通过上述实时语音端点检测方法能有效准确的检测语音。

附图说明

图1为实施例1中一种实时语音端点检测装置的结构框图。

具体实施方式

为进一步了解本发明的内容,结合附图和实施例对本发明作详细描述。应当理解的是,实施例仅仅是对本发明进行解释而并非限定。

实施例1

本实施例提供了一种实时语音端点检测方法,其包括以下步骤:

一、信号分帧、加重;可以设置帧重叠,先做加重处理,加重方法属于现有技术;

二、去脉冲处理;消除一些脉冲噪声;

三、去除直流成分;即将所有信号点幅值减去这一帧信号所有点的幅值均值;

四、计算每帧信号的短时能量和过零率;计算方法属于现有技术;

五、加窗处理;加汉宁窗或汉明窗,属于现有技术;

六、减谱处理;减谱去噪属于现有技术,但本实施例中并不需要将频域减谱的信号恢复到时域中去,仅仅是为了使语音和噪声的谱熵计算更加准确;

七、计算谱熵,将功率谱的一半频带,取一个有效频带,通常是选择去掉0频点开始的一些低频点和奈奎斯特频点以下的一些高频点,将有效频带的功率谱按照设定数目的频点作为一个子带,平均分成若干个子带,设每个子带频点数为np,则子带个数为:

floor(nvald/np);

其中,floor函数表示向下取整,nvald/np表示有效频带频点数除以子带频点数;设结果是nb个;

计算每个子带的功率值占总功率的概率,设为p;

根据这些子带的功率谱概率,自适应重新划分子带,调整子带的频点个数和频带个数,得到自适应划分子带的谱熵值;谱熵的计算公式为;

其中,sp为谱熵,m为子带个数,p(i)为第i个子带概率;

八、计算变换平滑谱熵,先做一定的平滑处理,由于直接计算的谱熵参数,某些相邻帧之间由于有随机、突发噪声干扰可能造成抖动较大,并且,由于语音的短时平稳性,对相邻一定帧数的谱熵进行平滑处理,可以有效防止这些不正常的抖动,相邻帧的谱熵参数也更有连续性;平滑处理后,平滑谱熵取相反数后平移,得到一个新的参数,将取值区间映射为合适的值,并且使语音帧的参数值比较大,噪声帧的参数值比较小,新的参数为变换平滑谱熵;设平滑谱熵为spm,平移值设为n,变换平滑谱熵为spt,则计算公式为:

spt=-spm+n;

九、语音帧和噪声帧初步判断:根据当前帧的短时能量是否超过设置的语音帧能量阈值、以及其过零率是否在设置阈值范围内,若是,初步判断当前帧是语音帧,若否,则是噪声帧;

a、若是语音帧,则再分析判断其谐波特性以及高频段的功率谱特性,这是基于语音特别是浊音有谐波特性,即存在基频及各倍数的谐波成分;至于高频段功率谱特性,是指语音帧功率谱一般在高频的幅值比较小,不像一些宽频噪声,在高频段还存在较多的高幅度峰值。

1)谐波特性分析:

a、考查当前帧的功率谱,在前述有效频带内搜寻前8个有效峰值位置;谐波特性中的有效峰值,不仅仅是峰值,还需要大于一定的幅值,这里的幅值取当前帧功率谱最大峰值的一定比例,比例参数根据实验设置;

b、根据这些峰值的位置,即对应频点序号,判断这些位置之间是否存在近似谐波倍数关系,第一个峰值位置是基频位置,判断后面每个位置是否对其有近似2倍、3倍、4倍、5倍、6倍、7倍和8倍关系,近似关系可以通过设置一个浮动区间实现,如果有则计有一个谐波,计算出这一帧信号的谐波个数;

c、对谐波个数设置阈值,当谐波个数超过阈值即满足要求,继续分析高频段特性;

2)高频段特性分析:

取当前帧的一定频点以后的功率谱,求其峰值,和基频信号功率值的一定比例做比较,若峰值大,则认为此帧不是语音帧,否则认为是语音帧;

3)当前帧通过上述谐波特性和高频段功率谱特性判断后,如果是语音帧,则用其变换平滑谱熵来更新当前变换平滑谱熵阈值,更新方式是通过加权因子处理,并用当前帧的能量更新当前语音帧能量阈值,同样是加权因子方式得到,利用加权因子更新当前阈值的表达式如下:

设更新因子为a,当前阈值为th,用来更新的变量值为x,则更新后的阈值为:

th=(1-a)*th+a*x;

如果不是语音帧,则也通过当前帧的变换平滑谱熵更新当前变换平滑谱熵阈值,采用不同的加权因子;同时也用当前帧的能量更新当前噪声帧能量阈值,同样采用加权因子更新;

b、若是噪声帧,则同样采用不同的加权因子更新当前变换平滑谱熵阈值,以及更新当前减谱去噪的功率谱阈值、当前噪声帧能量阈值;

十、计算当前帧的变换平滑谱熵和调整当前变换平滑谱熵阈值、当前语音帧能量阈值以及当前噪声帧能量阈值后,根据当前帧的变换平滑谱熵和当前变换平滑谱熵阈值之间的关系,对变换平滑谱熵阈值进行处理,即,若当前帧变换平滑谱熵值大于一定值,且减去当前变换平滑谱熵阈值的差值大于一定值,则判定当前变换平滑谱熵阈值过小,采用当前帧变换平滑谱熵值加权更新当前变换平滑谱熵阈值;反之,若当前帧变换平滑谱熵值小于一定值,且当前变换平滑谱熵阈值减去当前帧变换平滑谱熵值的差值大于一定值,则判定当前变换平滑谱熵阈值过大,采用当前帧变换平滑谱熵值加权更新当前变换平滑谱熵阈值;

十一、语音段起始帧、结束帧判断:

1)以帧号为顺序,设置搜寻标志,交替搜寻起始帧和结束帧;

2)判断起始帧:

a、初步判定语音段起始帧:以当前帧和之前一定数目的帧为一段,将这一段的变换平滑谱熵和当前变换平滑谱熵阈值比较,若大于阈值的帧数达到一定数目,则初步判定当前帧为语音段起始帧,进行步骤b;若没达到一定数目,从下一帧信号继续判断;

b、第二次判断:对当前帧的其他特性进行判断,所述其他特性为谱熵、短时能量、过零率、谐波特性和特定噪声特性;若当前帧不满足所述其他特性阈值要求,则判定当前帧为不是语音起始帧,从下一帧信号继续判断;若当前帧满足所述其他特性阈值要求,则进行步骤c;

c、第三次判断:在当前帧及向前推一定帧的帧段内,统计谱熵值小于阈值的帧数、具备谐波特性的帧数、过零率在阈值范围内的帧数和具备特定噪声特性的帧数,对所有这些帧数设定一些阈值,当任意一个帧数不满足这些阈值时,或者当上述帧段内平均能量均值小于起始帧段平均能量阈值,则排除当前帧是语音起始帧,即判断为非语音帧,从下一帧信号继续判断;反之则为语音段起始帧,将搜寻标志设置为搜寻结束帧标志并进行步骤d;阈值判断示例为,若谱熵值大于谱熵阈值(谱熵值大,认为是噪声帧)的帧数大于设置阈值,则排除当前帧为语音帧;或者,若具有汽车发动机噪声特性的帧数大于设置阈值,则排除当前帧为语音帧,等等。

d、用当前帧的变换平滑谱熵值再次更新当前变换平滑谱熵阈值,用当前帧的能量再次更新当前语音帧能量阈值,用当前帧之前一定帧段内的平均能量更新当前起始帧段平均能量阈值;

3)若经过上述2)的判断,任何一步判断出当前帧不是语音帧,则采用当前帧的功率谱加权更新当前减谱阈值,用当前帧的能量值加权更新当前噪声帧能量阈值以及语音帧能量阈值;

4)判断结束帧:搜寻到起始帧后,设置间隔一定的帧数之后才开始搜寻结束帧,这个间隔为最小语音段长度;在语音起始帧检测不准时,能避免语音起始帧太快切换到语音结束帧,在语音起始帧检测准确时,又能避免后面连续一定帧不必要的语音检测,因为语音段都有一定长度,不止一两帧;当检测出语音起始帧后,进入的帧数累计超过最小语音段长度的帧数,即开始判断结束帧,方法为:

考查当前帧向前推一定帧数的帧段,统计变换平滑谱熵值小于阈值的帧数、谱熵值大于阈值的帧数、无谐波特性的帧数、过零率不在阈值范围内的帧数和有特定噪声特性的帧数,对这些帧数设置阈值,若任意一个帧数超过阈值,或者这一帧段的平均能量小于结束帧段平均能量阈值,则判定当前帧为结束帧;将搜寻标志设置成搜寻起始帧标志,从下一帧起开始判断起始帧;

如果当前帧对于上个起始帧已经过去一定帧数,可设置一个较长帧数,在这个较长的帧段内,将每一帧的变换平滑谱熵值、短时能量值、每一帧的对应的变换平滑谱熵阈值和语音帧能量阈值都保存,则在这个较长的时间段内进行判断,若变换平滑谱熵值比阈值小的帧数太多或者太少,则可能是谱熵阈值自适应调整方式已经不适合,这时应给出结束帧,将阈值参数设置成初始值;若这一帧段的谱熵和变换平滑谱熵值参数都符合阈值,但是平均能量异常,这时也给出结束帧,将阈值参数设置成初始值;若时间太久,可设置一个最长语音段,超过这个时间直接给出结束帧;这些相当于一些合理的异常处理;总之,这些可以防止语音段异常持续不能正常结束或者满足实际需求地去实现可以设置最大长度的语音段检测;

5)若经过4)对当前帧进行结束帧判断,判断出不是结束帧,即当前帧仍是语音帧,则根据当前帧的变换平滑谱熵值加权更新当前变换平滑谱熵阈值,利用当前帧的能量值更新当前语音帧能量阈值,以及利用当前帧之前一定帧段的平均能量更新结束帧段平均能量阈值;若判断出是结束帧,则可以根据不同的情况,加权更新变换平滑谱熵阈值、噪声帧能量阈值、减谱功率谱阈值以及结束帧段平均能量阈值。具体哪些方式采用怎样的加权因子,可以通过大量试验确定。

之所以判断出结束帧之后下一帧就开始判断起始帧,是因为有些结束帧是误判,此时若下一帧或者几帧能马上判断出起始帧,则这个误判带来的一帧或几帧损失,是没多大影响的,所以这样处理能尽可能减小结束帧误判造成的语音帧缺失。

本实施例中,去脉冲处理的方法如下:对于一个信号点,考查其前后一段区间内信号点的幅值均值,若此信号点幅值绝对值超过上述幅值均值一定比例,则认为当前信号点幅值是瞬间过大或者过小,有窄脉冲的特性,此时根据上述幅值将当前信号点幅值调小,幅值符号不变;若当前信号点幅值绝对值不超过上述均值的一定比例,则当前信号点不做处理。

本实施例中,加窗处理中,可以是汉明窗和汉宁窗的一种,在频谱变换前对一帧信号做一个按信号点的幅值加权处理,以使频谱平滑。

本实施例中,减谱处理的方法如下:设置开始检测的前一定帧段当成噪声帧,用于估计初始底噪,这个帧段可以是从打开检测功能即开始处理,也可以是之后一定帧再处理,以消除打开检测功能的按键开关以及参数初始化处理带来的干扰,使谱熵计算更准确;本实施例取前10帧,作为噪声段,得出平均功率,作为减谱初值;在10帧前,直接计算每帧的功率谱谱熵,10帧后,先减谱处理再计算谱熵。每一帧信号我们做512点的fft,功率谱取前257点。这里的减谱,只是为了后面计算谱熵更准确,并不真正对原始语音信号做减谱去噪,也就是减谱后信号不需要恢复到时域,这样就减小了计算量。

本实施例中,自适应重新划分子带的方法为:

1)若某个子带功率谱概率大于0.9,则在有效频带中去掉这个子带的所有频点,即有效频带点数变少,重新计算各个子带的功率谱概率;若没有子带功率谱概率大于0.9,则直接执行2);

2)计算最小子带概率的熵,用nmin表示,设:

nmin=-pmin*lg(pmin),设pmin是最小子带功率谱概率;

根据nmin取值,重新计算子带个数,设重新计算的子带个数为v,采用以下公式:

得出新的子带个数,其中第二个表达式最终得出结果向下取整数,然后,根据有效频带的频点数对每个子带均匀分频点数,设有效频带点数为n'vald,则重新分到每个子带的频点数为:

floor(n'vald/v);

floor函数表示向下取整,/表示做除法;上述过程即是自适应重新划分子带;

再次计算个子带的概率,最终得出这一帧信号的谱熵值,即是自适应划分子带的谱熵值。

本实施例中,步骤八中的平滑处理的方法为:以当前帧向前算起连续5帧,设谱熵值依次为s(i-4),s(i-3),s(i-2),s(i-1),s(i),即s(i)为当前帧的谱熵,平滑的计算为:

当i小于5时,即第5帧以前,不做平滑处理。

本实施例中,交替搜寻起始帧和结束帧的方法为:初始状态为搜寻起始帧标志,当搜寻到起始帧时,将标志设置为搜寻结束帧标志,最小语音段之后开始搜索结束帧,当搜寻到结束帧时,将搜寻标志设置为搜寻起始帧标志,从下一帧起搜寻起始帧,如此交替搜寻和设置。

本实施例中,特定噪声特性为汽车发动机、汽车喇叭、警报、敲击桌子、文具、餐具、键盘、空调和电扇的噪声特性的一种或多种;特定噪声特性判断,是通过产品录制大量这些噪声来分析其时频特性总结出来的。比如汽车发动机噪声,典型的是在小轿车旁边或者里面采集到的比较平稳的噪声,其频谱峰值在比较低的频点,谱峰很窄,且越高频越衰减,无谐波特性;汽车喇叭,属于宽频噪声,在频谱高频段依然有很高的峰值;警报信号,是指火警,是一个随时间变化的区间扫频信号、频谱主峰值在语音范围但是没有谐波特性;敲击桌子、文具、键盘等,类似于单频或者单频带信号,能根据若信号频谱太过于集中来加以判别;空调、电扇等强噪,和汽车发动机类似,频谱主要集中在一定频段,且主峰值对应频点比汽车发动机噪声更低。这些噪声和特征可以根据应用需要和方法的有效性来扩展或者减少,这里最重要的是提供了一种思路,并且在最后的产品中也考虑了我们产品实际应用的一些场景噪声,显示了良好的适应效果。

本实施例中,当判断出语音起始帧时,加入信号延时处理。若不加延时处理,则在语音段起始帧为一些清音段时,容易漏判,若采用延时处理,当判断出语音起始帧时,将此帧之前一定数目的帧当成起始帧,即当前帧的判断是在一定帧之后才做出的,这样能非常有效地检测出语音起始段的清音段。此外,对于一些语音段之间偶尔有一些间隙被判断成非语音帧的情况,由于采用了延时处理,可以在出现非语音段帧数太少时直接将这段非语音帧改成语音帧,即不会漏掉语音段的间隙。

本发明基于变换平滑自适应子带功率谱熵,通过特定变换得到变换平滑谱熵参数作为主参数来判断语音和非语音信号,不受信号能量影响,在强噪声环境下能够很好的防止误判;计算谱熵是按照划分子带来处理,不是逐点处理,减小计算量以及误差;划分子带是自适应的,更加提高准确性和实用性;由于语音信号短时平稳性,对谱熵参数加平滑处理,消除不正常的随机干扰,并且,由于直接计算出的谱熵参数比较小,并且是宽频噪声的谱熵值比较大,语音或者含噪语音信号的比较小,对谱熵参数取相反数,并且做一个线性平移,得到一个新的参数,参数取值区间比较合理,且语音或含噪语音信号的值比较大,噪声的值比较小,这样比较符合判断习惯,并且阈值比较好设置和处理;将变换平滑谱熵作为判断的主参数,对其设置阈值,提高检测的准确性和适应性;辅助以语音信号帧能量阈值、噪声信号帧能量阈值、语音信号帧段平均能量阈值、过零率阈值以及谐波特性分析、高频段特性以及多种典型噪声的特性分析等特征判断,能够使检测结果更具鲁棒性,防止很多类型的强噪误判;多种典型噪声是指产品应用环境的典型噪声,比如敲击桌子、文具、餐具、键盘等噪声,汽车发动机、汽车喇叭噪、警报信号噪声,空调、电扇等噪声,专门用产品录制大量这些噪声,试验时若基本方法不能区分,则针对性分析这些噪声的时域、频域特征,确定排除方法;采用单帧和帧段结合判断,并加了一些符合实际情况和应用习惯的处理和异常处理,比如可设置最小语音段,最长语音段等;变换平滑谱熵、语音帧能量、噪声帧能量、语音段平均能量、减谱功率谱等阈值都是动态更新的;作为可选,采用一点点延时处理,这基本不影响算法实时性。具体有,为排除语音起始段的清音漏检,处理时采用延时存取一定帧数,典型如5至10帧,判断出起始帧后向前推一定帧数当成起始帧,试验效果非常好,以及,对于一些语音段之间偶尔有一些间隙被判断成非语音帧的情况,由于采用了延时处理,可以在出现非语音段帧数太少时直接将这段非语音帧改成语音帧,即不会漏掉语音段的合理间隙,增强语音信号的连续性;加入一些去脉冲滤波、减谱等处理,还可以扩展更多前处理,使语音检测更加准确,其中减谱阈值也是自适应更新的,能够适应不同类型的非平稳背景噪声;程序空间小,对于一些需要保存当前帧以及之前一定帧段内的参数,可以设置循环移位寄存器,计算量少,远没有模型法复杂。可移植性好,已经在ti的浮点dsp平台上的产品中应用,初步优化后判断一帧20ms、采样率8k、量化位数16位的数据的时间最大在4ms左右,完全满足实时处理要求。

如图1所示,本实施例还提供了一种实时语音端点检测装置,其包括:

信号分帧加重模块,用于接收信号数据,对其进行分帧、加重处理;

去脉冲处理模块,与信号分帧加重模块连接,用于消除一些脉冲噪声;

去除直流模块,与去脉冲处理模块连接,用于去除直流成分;

短时能量和过零率计算模块,与去直流模块连接,用于计算每一帧的短时能量和过零率;

加窗处理模块,与短时能量和过零率计算模块连接,用于在频谱变换前对一帧信号做一个按信号点的幅值加权处理,以使频谱平滑;

减谱处理模块,与加窗处理模块连接,用于使谱熵计算更准确;

谱熵计算模块,与减谱处理模块连接,用于计算自适应划分子带的谱熵值;

变换平滑谱熵计算模块,与谱熵计算模块连接,用于平滑、变换处理谱熵,得到变换平滑谱熵;

语音噪声帧初步判断模块,与变换平滑谱熵计算模块连接,用于初步判断当前帧是语音还是噪声,更新变换平滑谱熵阈值、语音帧和噪声帧能量帧阈值;

语音段处理模块,与语音噪声帧初步判断模块连接,用于起始帧、结束帧的判断;

阈值调整模块,与语音段处理模块连接,用于根据不同情况判断出每帧信号情况后,根据判断结果调整相应阈值。

本实时语音端点检测装置通过上述实时语音端点检测方法能有效准确的检测语音。

以上示意性的对本发明及其实施方式进行了描述,该描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。所以,如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。

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