用于噪声环境的语音检测系统的制作方法

文档序号:2820795阅读:650来源:国知局
专利名称:用于噪声环境的语音检测系统的制作方法
技术领域
本发明一般涉及语音处理和语音识别系统。更确切地说,本发明涉及用于检测输入信号内语音开始和语音结束的检测系统。
目前,用于语音识别和其他目的的自动语音处理是计算机能够进行的最具挑战性的任务之一。例如,语音识别采用对变化非常敏感的高度复杂的模式匹配技术。在用户应用中,识别系统需要处理各种各样的不同发言者,并且需要在各种互不相同的环境下运行。无关信号和噪声的出现可能严重降低识别质量和语音处理性能。
大部分自动语音识别系统按如下方式工作,首先建立声音模式的模型,然后使用该模式确定音素,字母,最后确定单词。对于精确识别而言,排除实际语音之前或之后的所有无关声音(噪声)是非常重要的。存在一些检测语音开始和语音结束的公知技术,尽管还有许多地方需要改进。
本发明将输入信号划分为各种频带,各频带代表不同的频率范围。然后将各频带内的短期能量与若干阈值进行比较,并利用比较结果驱动状态机,当至少某个频带的限带信号能量高于该频带的至少一个有关阈值时,状态机就从“无语音”状态切换到“有语音”状态。同样,当至少某个频带的限带信号能量低于该频带的至少一个有关阈值时,状态机就从“有语音”状态切换到“无语音”状态。该系统还包括一个基于实际语音开始之前的“无声段”假设的局部语音检测机制。
直方图数据结构累加与各频带内的能量均值和方差有关的长期数据,该信息用于调整自适应阈值。根据噪声特征分配频带。直方图表示能够明显区分语音信号、无声和噪声。在语音信号内,无声部分(仅有背景噪声)通常占主导地位,并且在直方图上有明显反映。相比为常量的背景噪声,在直方图上表示为明显峰值。
本系统非常适用于噪声环境中的语音检测,该系统检测语音的开始和结束并处理经过截短而丢失语音开始的情况。
参照以下详细说明书和附图,将更加理解本发明,其目的以及其优点。


图1为本发明之最佳实施方式(2频带实施方式)中语音检测系统的框图;图2为用于调整自适应阈值的系统的详细框图;图3为局部语音检测系统的框图;图4表示本发明的语音信号状态机;图5表示用于理解本发明的典型直方图;图6为一个波形图,该图表示为进行语音检测而比较信号能量时所使用的若干阈值;图7为一个波形图,该图表示为避免错误检测强噪声脉冲而使用的开始语音延迟检测机制;图8为一个波形图,该图表示为允许连续语音内的停顿而使用的结束语音延迟判定机制;图9A为表示局部语音检测机制的一方面的波形图;图9B为表示局部语音检测机制的另一方面的波形图;图10为一组波形图,该图表示为了选择与有语音状态相对应的最终范围,如何综合多频带阈值分析;图11表示出现强噪声时使用S阈值的波形图;以及图12表示当自适应阈值适应背景噪声电平时,自适应阈值的性能。
本发明将输入信号划分为多个信号路径,各路径代表一个不同频带。图1表示采用两频带实施方式的本发明的实施方式,一个频带表示输入信号的总频谱,另一频带表示总频谱的高频子集。所示实施方式特别适用于检测具有较低信噪比(SNR)的输入信号,如在正在行驶的汽车内或噪杂的办公环境中所获得的信号。在以上常见环境中,大部分噪声能量分布在2,000Hz以下。
尽管本文说明了两频带系统,可以将本发明轻易扩展为其他多频带结构。通常,各频带覆盖不同的频率范围,其目的是从噪声中分离信号(语音)。本实施方式为数字式。当然,也可以利用本文包含的详细说明实现模拟实施方式。
参照图1,在20提供包含潜在语音信号和噪声的输入信号。利用汉明窗口22数字化处理输入信号,以便将输入信号数据划分为帧。本发明之最佳实施方式采用时长为10ms的预定采样频率(8,000Hz情况下)的帧,每帧80个数字采样。所示系统被设计成能够在其频率范围为300Hz到3,400Hz的输入信号下运行。因此,选择采样频率为频率上限的两倍(2×4,000=8,000)。如果在输入信号的信息传送部件中发现不同频谱,就适当调整采样频率和频带。
汉明窗口22的输出为表示输入信号(语音和噪声)的数字采样序列,并且将其排列为预定尺寸的帧。随后将以上各帧馈入到快速傅立叶变换(FFT)变换器24,后者将输入信号数据从时域变换到频域。此时,将该信号分裂为若干路径,位于26的第一路径和位于28的第二路径。第一路径表示包含输入信号所有频率的频带,而第二路径28表示输入信号总频谱的高频子集。由于利用数字数据表示频域含量,所以分别利用累加部件30和32实现频带分裂。
请注意,累加部件30累加范围10-108内的频谱分量;而累加部件32累加范围64-108内的频谱分量。这样,累加部件30选择输入信号内的所有频率,而部件32仅选择高频频带。此时,部件32抽取部件30所选频带的一个子集。这正是检测通常在行驶的汽车内或噪杂的办公室中所获得的噪声输入信号中语音含量的最佳实施方式。其他噪声环境可以规定其他频带分裂方式。例如,如果需要,可以配置若干信号路径以覆盖各个非重叠频带和部分重叠频带。
累加部件30和32每次累加一帧的频率分量。因此,部件30和32的结果输出表示信号内的限带短期能量。如果需要,可以经过平滑滤波器,如滤波器34和36,传送原始数据。在本发明的最佳实施方式中,采用3-抽头平均器作为两处的平滑滤波器。
正如下文中将要更加全面说明的那样,根据若干受限频带短期能量与若干阈值的比较,进行语音检测。根据与讲话前之无声部分(假设在系统运行后但在发言者开始发言之间,出现无声部分)有关的能量的长期平均值与方差,自适应更新以上阈值。以上实施方式采用直方图数据结构生成自适应阈值。在图1中,组合框38和40分别表示信号路径26和28的自适应阈值更新部件。将结合图2和有关波形图,提供以上部件的细节。
尽管沿快速傅立叶变换部件24的下行方向保持不同的信号路径,各通过自适应阈值更新部件38和40,但有关输入信号中有无语音的最终决定是同时考虑两条信号路径产生的。因此,语音状态检测部件42以及与其有关的局部语音检测部件44从两条路径26和28考虑信号能量数据。语音状态部件42实现将在图4中进一步说明其细节的状态机。图3更详细地说明了局部语音检测部件。
现在参照图2,以下将说明自适应阈值更新部件38。本发明的最佳实施方式对各频带采用3个不同阈值。因此,在所示实施方式中,共有6个阈值。通过考虑波形图以及其有关论述,各阈值的目的将变得更加显而易见。对各能量频带,确定3个阈值Threshold,WThreshold和SThreshold。第一阈值Threshold为用于检测语音开始的基本阈值。WThreshold为用于检测语音结束的弱阈值。SThreshold为用于评估语音检测判定之有效性的强阈值。以上阈值的更正式的定义为Threshold=Noise_Level+OffsetWThreshold=Noise_Level+Offset*R1;(R1=0.2..1,这里最好为0.5)SThreshold=Noise_Level+Offset*R2;(R2=1..4,这里最好为2)其中Noise_Level为长期平均值,即直方图中所有过去的输入能量的最大值。
Offset=Noise_Level*R3+Variance*R4;(R3=0.2..1,这里最好为0.5;R4=2..4,这里最好为4)。
Variance为短期方差,即M个刚刚过去的输入帧的方差。
图6表示叠加在某个典型信号上的3个阈值之间的关系。请注意,SThreshold高于Threshold,而WThreshold通常低于Threshold。以上阈值以噪声电平为基础,利用直方图数据结构确定输入信号的讲话前的无声部分中包含的所有过去输入的能量的最大值。图5表示叠加在某个波形上的典型直方图,该波形表示典型噪声电平。该直方图记录讲话前无声部分包含预定噪声电平能量的次数的“计数”。从而直方图作为能量电平的函数(在x轴上)绘制计数(在y轴上)。请注意,在图5所示的示例中,最普通的(最大计数)噪声电平能量具有能量值Ea。值Ea将与预定噪声电平能量相对应。
直方图(图5)中记录的噪声电平能量数据是从输入信号的讲话前的无声部分中抽取的。关于这一点,假设提供输入信号的音频通道是有效的,并且在实际讲话开始之前向语音检测系统发送数据。因此,在讲话前的无声部分,系统正在对环境噪声电平本身的能量特征进行有效采样。
本发明的最佳实施方式采用固定尺寸的直方图,以便降低计算机存储需求。正确配置直方图数据结构能够提供精度估计要求(意味着小的直方图步长)与宽阔动态范围(意味着大的直方图步长)之间的折衷。为了解决精度估计(小的直方图步长)与宽阔动态范围(大的直方图步长)之间的冲突,本系统根据实际操作环境,自适应地调整直方图步长。以下伪码说明了在调整直方图步长大小时所采用的算法,其中M为步长大小(表示各直方图步长中能量值的范围)。
自适应直方图步长的伪码在初始化步骤之后计算缓冲区内过去各帧的平均值M=前一所述平均值的十分之一If(M<MIN_HISTOGRAM_STEP)
M=MIN_HISTOGRAM_STEPEnd请注意,在上述伪码中,根据开始时在初始化步骤中放入缓冲区的假设无声部分的平均值,修改直方图步长M。这里,假设所述平均值能够表现实际背景的噪声环境。请注意,直方图步长以MIN_HISTOGRAM_STEP为下界。此后,固定直方图步长。
通过为各帧插入一个新值来更新直方图。为了适应缓慢变化的背景噪声,每10帧引入一个遗忘因子(在本实施方式中为0.90)。
用于更新直方图的伪码<pre listing-type="program-listing"><![CDATA[If(value<HISTOGRAM_SIZE*M){ ∥利用遗忘因子更新直方图 if(frame_in_histogram%10==0) { for(I=0;I<HISTOGRAM_SIZE;I++) histogram[I]*=HISTOGRAM_FORGETTING_FACTOR; } ∥通过插入新值更新直方图 histogram[value+M/2)/M]+=1; histogram[value-M/2)M}+=1; }]]></pre>现在参照图2,图2表示自适应阈值更新机制的基本框图。该框图表示部件38和40(图1)所执行的操作。在更新缓冲器50中存储短期(当前数据)能量,部件52按上述方式使用该能量以便更新直方图数据结构。
随后,由部件54检查更新缓冲器,部件54计算缓冲器50中所存储的刚刚过去的若干数据帧的方差。
期间,部件56确定该直方图内的最大能量值(即图5中的值Ea),并将该值提供给阈值更新部件58。阈值更新部件利用以上最大能量值以及来自部件54的统计数据(方差)修改主要阈值Threshold。如上所述,Threshold等于噪声电平与预定偏移量之和。偏移量以利用直方图中的最大值所确定的噪声电平和部件54所提供的方差为基础。按照上面所列方程,根据Threshold计算剩余阈值,即WThreshold和SThreshold。
在正常操作中,通常经过跟踪讲话前的信号部分内的噪声电平,自适应调整阈值。图12说明以上概念。在图12中,100表示讲话前的信号部分,200表示开始讲话。已经将Threshold电平叠加到该波形中。请注意,以上阈值电平跟踪讲话前的信号部分内的噪声电平,外加一个偏移量。因此,应用于某个给定讲话范围的Threshold(以及SThreshold和WThreshold)为以下阈值,即刚开始讲话前的实际阈值。
现在回到图1,以下将说明语音状态检测和局部语音检测部件42和44。根据当前帧以及当前帧后面的某几帧进行有语音/无语音判定,而不是根据某个数据帧进行判定。就检测语音开始而言,考虑当前帧后面的附加帧(超前)避免了出现短暂但却是强噪声脉冲时,如电脉冲,的错误检测。就检测语音结束而言,帧超前防止连续语音信号中的暂停或短暂无声造成的语音结束的错误检测。通过在更新缓冲器50(图2)中缓冲数据并采用以下伪码所描述的处理,实现以上延迟判定或超前策略。
语音开始测试开始延迟判定=FALSELoop M个顺序帧(M=3;30ms)If Energy_All>Threshold或Energy_HPF>ThresholdThen 开始延迟判定=TRUE语音结束测试结束延迟判定=FALSELoop N个顺序帧(N=30;300ms)If Energy_All<Threshold与Energy_HPF<Threshold
Then结束延迟判定=TRUEEnd of Loop参见图7,图7表示语音开始测试中30ms的延迟是如何避免错误检测超过阈值的噪声峰值110的。同时参见图8,图8表示语音结束测试中300ms的延迟是如何防止语音信号中的短暂暂停120触发语音结束状态的。
上述伪码设置了两个标记,开始延迟判定标记和结束延迟判定标记。图4所示的语音信号状态机使用以上标记。请注意,语音开始使用30ms的延迟,相当于3帧(M=3)。通常该延迟足以筛去由于短暂噪声峰值而造成的错误检测。语音结束使用较长的延迟,相当于300ms,业已证明该延迟足以处理连续语音中的出现的正常暂停。300ms延迟相当于30帧(N=30)。为了避免语音信号消波或削波而造成的误差,可以根据检测的语音开始与语音结束的语音部分,利用附加帧填充以上数据。
语音开始检测算法假设讲话前存在至少某个指定的最小长度的无声部分。实际上,某些时候以上假设可能无效,如由于信号漏失或电路切换突变而消波输入信号,从而缩短或消除假定的“无声段”。当出现以上情况时,可能会错误更新阈值,这是由于该阈值是以噪声电平能量为基础,利用无语音信号估计的。此外,当消波输入信号,从而该信号不包含无声段时,语音检测系统可能不能识别该输入信号包含语音,或许丢失输入阶段的语音,从而使随后的语音处理无效。
为了避免局部语音状态,采用图3所示的或非策略。图3表示局部语音检测部件44(图1)所采用的机制。局部语音检测机制通过监视阈值(Threshold)确定自适应阈值电平是否存在瞬时跳变而起作用。跳变检测部件60首先通过累加表示一连串帧的阈值变化的某个值,完成以上分析。产生累加阈值变化Δ的部件62完成该步处理。在部件64,比较累加阈值变化Δ与某个预定绝对值Athrd,并且根据Δ是否大于Athrd,经由分支66或分支68继续该处理。如果Δ小于Athrd,就激活部件70(否则,激活部件72)。部件70和72保持独立平均阈值。部件70保持并更新阈值T1,T1表示所测跳变之前的阈值,部件72保持并更新阈值T2,T2表示跳变之后的阈值。随后在部件74,将两个阈值之比率(T1/T2)与第三阈值Rthrd进行比较。如果以上比率大于第三阈值,则设置ValidSpeech(有效语音)标记。图4的语音信号状态机使用ValidSpeech标记。
图9A和9B表示运转中的部分语音检测机制。图9A表示采取Yes分支68(图3)的状态,而图9B表示采取No分支66的状态。参照图9A,请注意,从150到160存在阈值跳变。在所示示例中,该跳变大于绝对值Athrd。在图9B中,从152到162的阈值跳变表示并不大于Athrd的跳变。在图9A和9B中,虚线170表示跳变位置。T1表示跳变位置之前的平均阈值,T2表示跳变位置后的平均阈值。随后比较比率T1/T2与比率阈值Rthrd(图3中框74)。按下述方式,仅从讲话前范围内的杂散噪声中区分ValidSpeech。如果阈值跳变小于Athrd,或者比率T1/T2小于Rthrd,就将引起阈值跳变的信号识别为噪声。另一方面,如果比率T1/T2大于Rthrd,就将引起阈值跳变的信号看作部分语音,但不用来更新阈值。
现在参照图4,300表示的语音信号状态机启动初始化状态310。随后转到无声状态320,语音信号状态机保持在无声状态320直到在无声状态执行的步骤确定要转到语音状态330。一旦进入语音状态330,当满足某些条件时,如语音状态框330所示步骤所指示的那样,状态机将转回到无声状态320。
在初始化状态310,在缓冲器50(图2)中存储数据帧,并且更新直方图步长的大小。我们记得最佳实施方式利用额定步长大小M=20开始运行。根据上面提供的伪码所述,在初始化状态期间可以修改步长的大小。此外,在初始化状态期间,初始化直方图数据结构,以便删除早期操作的所有预先存储数据。执行完这些步骤后,状态机转到无声状态320。
在无声状态内,比较各受限频带短期能量值与基础阈值Threshold。如上所述,各信号路径具有其特有的阈值集。在图4中,Threshold_All表示适用于信号路径26(图1)的阈值,而Threshold_HPF表示适用于信号路径28的阈值。对于语音状态330中采用的其他阈值,使用类似名称。
如果任一短期能量值超过其本身的阈值,就测试开始延迟判定标记。如上所述,如果已经将该标记设置为TRUE,就返回语音开始消息,并且状态机转到语音状态330。反之,状态机保持无声状态,并且更新直方图数据结构。
本发明之最佳实施方式利用遗忘因子0.99更新直方图,以使非当前数据的影响随时间推移消失。通过在累加与当前帧能量有关的Count(计数)数据之前用0.99乘直方图中的现有数据,完成以上处理。这样,历史数据的影响随时间推移逐渐消失。
沿类似路径继续语音状态330内的处理,尽管使用不同的阈值集。语音状态把信号路径26和28内的有关能量同WThreshold比较。如果任一信号路径大于WThreshold,则与SThreshold进行类似比较。如果任一信号路径中的能量大于SThreshold,则将ValidSpeech标记设置为TRUE。在随后的比较步骤中使用该标记。
如上所述,如果预先将结束延迟判定标记设置为TRUE,并且如果已经将ValidSpeech标记设置为TRUE,则返回结束语音消息,并且状态机返回到无声状态320。另一方面,如果并未将ValidSpeech标记设置为TRUE,则发送消息以便取消前述语音检测,并且状态机返回到无声状态320。
图10和图11表示不同电平如何影响状态机的操作。图10比较两条路径,即全频频带Band_All和高频频带Band_HPF,的并发操作。请注意,由于信号波形包含不同的频谱,所以其信号波形不同。在所示示例中,识别为被检测语音的最终范围对应于b1处阈值与全频频带相交所产生的语音开始,而语音结束对应于高频频带在e2处的相交点。当然,根据图4所描述的算法,不同输入波形将产生不同结果。
图11表示在出现强噪声电平时,如何使用强阈值SThreshold来证实存在ValidSpeech。如图所示,区域R表示低于SThreshold的强噪声,该区域对应于将ValidSpeech标记设置为FALSE的区域。
根据上述说明可以理解,本发明提供一种检测输入信号内语音开始和语音结束的系统,解决了用户在噪声环境中应用时遇到的许多问题。尽管以本发明之最佳实施方式说明了本发明,然而可以理解的是,在不背离权利要求书所规定之发明实质下,可以对本发明作某些修改。
权利要求
1.用于检测输入信号以确定有无语音信号的语音检测系统,该系统包括一个频带分裂器,用于将所述输入信号分裂为若干频带,各频带表示与不同频率范围相对应的限带信号能量;一个能量比较系统,用于把所述若干频带的限带信号能量同若干阈值比较,从而把各频带同至少一个与该频带有关的阈值比较;以及一个与所述能量比较系统相连的语音信号状态机,该状态机完成以下切换(a)当至少一个所述频带的限带信号能量高于至少一个与该频带有关的阈值时,从无语音状态切换到有语音状态,以及(b)当至少一个所述频带的限带信号能量低于至少一个与该频带有关的阈值时,从有语音状态切换到无语音状态。
2.权利要求1的系统还包括自适应阈值更新系统,该系统采用直方图数据结构累加表示至少一个所述频带内的能量的历史数据。
3.权利要求1的系统还包括一个与各所述频带有关的独立的自适应阈值更新系统。
4.权利要求1的系统还包括根据各所述频带内的能量均值和方差,修改所述若干阈值的自适应阈值更新系统。
5.权利要求1的系统还包括对至少一个所述若干阈值的变化率的预定跳变敏感的局部语音检测系统,如果所述跳变之前与所述跳变之后的所述某个阈值的平均值的比率超过某个预定值,所述局部语音检测系统就阻止所述状态机切换到有语音状态。
6.权利要求1的系统还包括定义以下阈值的多阈值系统第一阈值为噪声基数上的预定偏移;第二阈值为所述第一阈值的预定百分比,所述第二阈值小于所述第一阈值;以及第三阈值为所述第一阈值的预定倍数,所述第三阈值大于所述第一阈值;以及其中所述第一阈值控制从所述无语音状态切换到所述有语音状态;以及其中所述第二和第三阈值控制从所述有语音状态切换到所述无语音状态。
7.权利要求6的系统,其中如果至少一个所述频带的限带信号能量低于所述第二阈值并且如果至少一个所述频带的限带信号能量低于所述第三阈值,所述状态机就从所述有语音状态切换到所述无语音状态。
8.权利要求1的系统还包括延迟判定缓冲器,该缓冲器存储代表所述输入信号的预定时间增量的数据,并且如果至少一个所述若干频带的限带信号能量不超过至少一个整个所述预定时间增量期间的阈值,该缓冲器就阻止状态机从所述无语音状态切换到所述有语音状态。
9.确定输入信号内有无语音信号的方法,该方法包括以下步骤将所述输入信号分裂为若干频带,各频带表示与不同频率范围相对应的限带信号能量;把所述若干频带的限带信号能量同若干阈值比较,从而把各频带同至少一个与该频带有关的阈值比较;以及确定(a)当至少一个所述频带的限带信号能量高于至少一个与该频带有关的阈值时,存在有语音状态,以及(b)当至少一个所述频带的限带信号能量低于至少一个与该频带有关的阈值时,为无语音状态。
10.权利要求9的方法还包括利用直方图累加表示至少一个所述频带内的能量的历史数据,以定义至少一个所述若干阈值。
11.权利要求9的方法还包括分别对各所述频带自适应更新至少一个所述若干阈值。
12.权利要求9的方法还包括根据各所述频带内的能量均值和方差,修改所述若干阈值。
13.权利要求9的方法还包括检测至少一个所述若干阈值的变化率的预定跳变,并且如果所述跳变之前的与所述跳变之后的所述某个阈值的平均值的比率超过某个预定值,就确定不存在所述有语音状态。
14.权利要求9的方法还包括定义以下阈值第一阈值为噪声基数上的预定偏移;第二阈值为所述第一阈值的预定百分比,所述第二阈值小于所述第一阈值;以及第三阈值为所述第一阈值的预定倍数,所述第三阈值大于所述第一阈值;以及根据所述第一阈值确定存在所述有语音状态;以及根据所述第二和第三阈值确定存在所述无语音状态。
15.权利要求14的方法,其中如果至少一个所述频带的限带信号能量高于所述第二阈值并且如果至少一个所述频带的限带信号能量高于所述第三阈值,就确定存在所述无语音状态。
16.权利要求9的方法还包括如果至少一个所述若干频带的限带信号能量在整个预定时间增量期间不超过至少一个阈值,就确定不存在所述有语音状态。
全文摘要
将输入信号变换到频域,随后划分为与不同频率范围相对应的频带。分别对各频带的数据施加自适应阈值。从而测试短期限带能量,以确定有无语音信号。通过利用直方图数据结构累加表示有关频带能量均值和方差的长期数据,独立更新各信号路径的自适应阈值。利用状态机完成端点检测,其中状态机根据阈值比较结果,从无语音状态变换到有语音状态,反之亦然。局部语音检测系统处理输入信号被截短的情况。
文档编号G10L11/00GK1242553SQ9910409
公开日2000年1月26日 申请日期1999年3月23日 优先权日1998年3月24日
发明者赵翊, 金-克劳德·军全 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1