语音识别的前端处理

来源:互联网 发布:反转二叉树 js 编辑:程序博客网 时间:2024/06/10 11:49

语音识别主要有以下五个问题:

⒈对自然语言的识别和理解。首先必须将连续的讲话分解为词、音素等单位,其次要建立一个理解语义的规则。
语音信息量大语音模式不仅对不同的说话人不同,对同一说话人也是不同的,例如,一个说话人在随意说话和认真说话时的语音信息是不同的。一个人的说话方式随着时间变化。
语音的模糊性。说话者在讲话时,不同的词可能听起来是相似的。这在英语和汉语中常见。
⒋单个字母或词、字的语音特性受上下文的影响,以致改变了重音、音调、音量和发音速度等。
环境噪声和干扰对语音识别有严重影响,致使识别率低。

以上几个问题有一部分的关键在于声音的采集,在其中语音前端处理模块扮演着重要角色。通过前端处理模块在特征提取之前,先对原始语音进行处理,部分消除噪声和不同说话人带来的影响,抑制各种干扰,使待识别的语音更干净更能反映语音的本质特征。语音前端处理算法在语音通信和语音修复中也有着广泛的应用。
语音处前端处理主要会处理这几个方面接收到的声信号在时间序列可分为三部分:直达声、早期反射声(经过一次、两次的反射,能量较大、时延较短的反射声) 、混响声(经过多次反射以后到达的数目众多、能量较小、密集的反射声群),前期反射声是指未达到稳定状态时的反射声,也就是在直达声之后混响开始衰减之前的这段时间差内的反射声,以下是一些声音的来源
1.Echo:远端扬声器播放的声音回传给麦克。
2.Diffuse Noise:无向噪声的干扰。
3.Reflected Sound:声音通过墙壁反射,造成混响干扰。
4.Interference:其他方向的干扰源。
5.Target Speech:目标方向声音。

由于噪声来源众多,在不同的应用场合其特性各不相同,增加了语音增强算法的复杂性。而且语音增强不仅仅是一个数字信号处理技术方面的问题,还涉及人的听觉感知和语音学,是一门很复杂的技术。要想理想地设计出一种算法来消除所有的噪声是不现实的,只能针对不同的噪声情况,采取不同的语音增强算法。

语音采集的过程

麦克风阵列采集的语音首先利用参考源对各通道的信号进行回波消除,然后确定声源的方向信息,进而通过波束形成算法来增强目标方向的声音,再通过混响消除方法抑制混响;需要强调的是可以先进行多通道混响消除再进行波束形成,也可以先进行波束形成再进行单通道混响消除。经过上述处理后的单路语音进行后置滤波消除残留的音乐噪声,然后通过自动增益算法调节各个频带的能量后最为前端处理的输出,将输出的音频传递给后端进行识别和理解。

麦克风阵列
利用麦克风阵列拾音也就是说由一定数目的声学传感器组成,用来对声场的空间特性进行采样并处理的系统。是将一定数目的麦克风接受到的信号耦合为一个信号。即在两个麦克风的正前方形成一个接收区域,进而削减两个麦克风侧向的收音效果。在频率响应中也可以根据时域中波束形成与空间滤波器相仿的应用,分析出接收到语音信号音源的方向以及其变化。而这些分析都可以由极坐标图以波束形式来显示语音信号的强度与角度


回波消除
在远场语音识别系统中,回声消除最典型的应用是智能终端播放音乐,远端扬声器播放的音乐会回传给近端麦克风,此时需要有效的回声消除算法来抑制远端信号的干扰。回声消除的两个难点是双讲检测和延时估计,对于智能终端的回声消除模块,解决双讲条件下对远端干扰源的抑制是最为关键的问题,通过判断当前的模式(近讲模式、远讲模式、双讲模式)采用不同的策略对滤波器w1和w2进行更新,进而滤除远端干扰,在此基础上通过后置滤波算法消除残留噪声的干扰。一般分为有声回波和混合回波两种类型。在语音通话中由于语音压缩技术和包处理延迟会产生回波,通常需要回波消除以提高通话质量的过程。回波消除器监测接收路径上从远端来的话音,计算出回波的估值,然后在发送路径上减去这个估值,于是回波被去除了只有近端的话音被发送到远端。

波束形成算法
智能天线研究(指的是带有可以判定信号的空间信息(传播方向)和跟踪、定位信号源的智能算法,并且可以根据此信息进行空域滤波的天线阵列)中最核心的内容。波束形成算法的目的:融合多个通道的信息抑制非目标方向的干扰源,增强目标方向的声音。波束形成算法根据基于的对象不同可以分为基于方向估计的自适应算法。分类方法是根据是否需要发射参考信号,各个麦克风接收到的语音信号存在延时,这种时延信息能够反映出声源的方向,通过对齐各个通道的信号,能够增强目标语音信号,同时由于相位差异可以抵消掉部分干扰成分。波束形成算法需要解决的核心问题是估计空间滤波器,它的输入是麦克风阵列采集的多通道语音信号,它的输出是增强后的单路语音信号。对空间滤波器进一步细分,可以分为时不变线性滤波、时变线性滤波以及非线性变换模型。最简单的延时求和法属于时不变线性滤波,广义旁瓣滤波法属于时变线性滤波,基于深层神经网络的波束形成属于非线性变换模型。 
将波束形成的算法分为非盲算法和盲算法:
(1)非盲算法:通过发射训练序列或者导频信号来确定信道响应,然后根据一定的准则调整权值。常用非盲算法包括最小均方(LMS)算法、直接矩阵求逆(DMI)算法和递归最小二乘(RLS)算法。
(2)盲算法:不需要发射训练序列或者导频信号,接收端将自己发送的信号作为参考信号进行估计,然后调整权值。典型的盲算法包括两种:
一种是利用:信号特征的盲算法,比如利用信号恒模特性的恒模算法,利用信号循环平稳性的周期平稳性算法,还有有限符号集算法。
一种是利用:DOA的盲算法。提取DOA信息的算法如MUSIC、ESPRIT等。

空间滤波器:空间滤波是一种采用滤波处理的影像增强方法。其理论基础是空间卷积和空间相关。目的是改善影像质量,包括去除高频噪声与干扰,及影像边缘增强、线性增强以及去模糊等。分为低通滤波(平滑化)、高通滤波锐化)和带通滤波。处理方法有计算机处理(数字滤波)和光学信息处理两种。


混响消除方法
在声学上, 延迟时间达到约 50 ms 以上的反射波称为回声, 其余的反射波产生的效应称为混响,分为早期混响和晚期混响,由于早期混响成分有助于提高语音的可懂度所以在语音去混响任务中,更多的关注于对晚期混响的抑制。按照使用传声器数量分类, 去混响系统主要分为单传声器系统与传声器阵列系统:
(1)单通道传声器系统去混响技术只利用声场中接收位置一点的声信号时间和变换域的特性。
(2)多通道传声器阵列系统能利用声场的空间特性, 其主要优点是由阵列带来的接收方向性除了能直接提高信号与混响声能比之外, 同时还对本底噪声有显著的抑制作用。但阵列系统的硬件复杂度高, 数据处理量成倍增加, 对计算速度有较高要求。但随着计算机技术的发展, 采用阵列的去混响技术受到更多重视。

当前主流的混响消除方法主要包括以下四类:基于波束形成方法、基于逆滤波方法、基于语音增强方法、基于深度学习方法。
基于波束形成的混响消除方法假设干扰信号与直达信号之间是独立的,它对于抑制加性噪声非常有效,它并不适用于混响环境.
基于逆滤波算法可以获得较好的混响消除性能,但是缺少能够在实际环境中对混响等效滤波器进行盲估计的有效算法,因此很难实际应用。
基于谱增强算法根据预先定义好的语音信号的波形或频谱模型,对混响信号进行处理,但是该方法难以提取出纯净语音,从而难以有效实现混响消除。
基于深度学习的语音混响消除方法,这种方法的劣势是当训练集和测试集不匹配时,算法性能会下降。
目前使用比较广是的基于加权预测误差的混响消除方法。能够适用于单通道和多通道的混响消除。

自动增益算法
Speex AGC算法模型过于简单,只是一个纯粹的算法,在有人声激励的情况 ,表现比较好。能快速增益到合适的音量,缺点是当一段时间没有被正确的信号激励之后,会出现过多的增益噪声的问题,而且因为增益不稳定,变化速度比较快,会不断地出忽大忽小的背景噪声的情况。最简单的硬性增益处理是对所有音频采样乘上一个增益因子,它也等同于在频域每个频率都同时乘上这个增益因子,但由于人的听觉对所有频率的感知不是线性的,是遵循等响度曲线的,导致这样处理后,听起来感觉有的频率加强了,有的频率削弱了,导致语言失真的放大。
重写AGC算法主要就是解决上面提到的问题,除了算法本身以后,也考虑了实际中应用场景,总体的设计思路是前期增益变化会比较快,处于一个快速学习期,稳定之后,学习参数将降低,这样可以有效解决一段时间没有人声激励之后,会过大增益背景噪声的问题,保持一个相对稳定的增益,也可以避免忽大忽小的现象发生。要让整个频段的频率听起来响度增益都是“相同”的,就必须在响度这个尺度下做增益,而不是在频率域,即按照等响度曲线对语音的频率进行加权,不能采用一个固定的增益因子进行加权。由些可见,语音的自动增益处理可以大致分为两个部分:
(1)响度增益因子的确定。
(2)把响度增益因子映射到等响度曲线上,确定最终各频率的增益权重。


最常用的前端处理有端点检测、降噪和语音增强

端点检测(VAD,又称语音边界检测)
是指在语音信号中将语音和非语音信号时段区分开来,准确地确定出语音信号的起始点然后从连续的语音流中检测出有效的语音段。它包括两个方面,检测出有效语音的起始点即前端点,检测出有效语音的结束点即后端点。经过端点检测后,后续处理就可以只对语音信号进行,这对提高模型的精确度和识别正确率有重要作用
在语音应用中进行语音的端点检测是很必要的,首先很简单的一点,就是在存储或传输语音的场景下,从连续的语音流中分离出有效语音,可以降低存储或传输的数据量。其次是在有些应用场景中,使用端点检测可以简化人机交互,比如在录音的场景中,语音后端点检测可以省略结束录音的操作。有些产品已经使用循环神经网络( RNN)技术来进行语音的端点检测。
在分析一段音频时,首尾的静音部分声波的振幅很小而有效语音部分的振幅比较大,一个信号的振幅从直观上表示了信号能量的大小:静音部分能量值较小,有效语音部分的能量值较大。语音信号是一个以时间为自变量的一维连续函数,计算机处理的语音数据是语音信号按时间排序的采样值序列,这些采样值的大小同样表示了语音信号在采样点处的能量。
采样值中有正值和负值但计算能量值时不需要考虑正负,使用采样值的绝对值来表示能量值是自然而然的,由于绝对值符号在数学处理上不方便,所以采样点的能量值通常使用采样值的平方,一段包含N个采样点的语音的能量值可以定义为其中各采样值的平方和。一段语音的能量值既与其中的采样值大小有关,又与其中包含的采样点数量有关。为了考察语音能量值的变化,需要将语音信号按照固定时长(比如20毫秒)进行分割,每个分割单元称为帧,每帧中包含数量相同的采样点,然后计算每帧语音的能量值。如果音频前面部分连续M0帧的能量值低于一个事先指定的能量值阈值E0,接下来的连续M0帧能量值大于E0,则在语音能量值增大的地方就是语音的前端点。同样的,如果连续的若干帧语音能量值较大,随后的帧能量值变小,并且持续一定的时长,可以认为在能量值减小的地方即是语音的后端点。
关键在于能量值阈值E0怎么取而M0又是多少,理想的静音能量值为0,故上面算法中的E0理想状态下取0。不幸的是,采集音频的场景中往往有一定强度的背景音,这种单纯的背景音当然算静音,但其能量值显然不为0,因此,实际采集到的音频其背景音通常有一定的基础能量值。总是假设采集到的音频在起始处有一小段静音,长度一般为几百毫秒,这一小段静音是我们估计阈值E0的基础。总是假设音频起始处的一小段语音是静音,这一点假设非常重要!在估计E0时,选取一定数量的帧比如前100帧语音数据(这些是“静音”),计算其平均能量值,然后加上一个经验值或乘以一个大于1的系数,由此得到E0。这个E0就是我们判断一帧语音是否是静音的基准,大于这个值就是有效语音,小于这个值就是静音。至于M0其大小决定了端点检测的灵敏度,M0越小,端点检测的灵敏度越高,反之越低。语音应用的场景不同,端点检测的灵敏度也应该被设置为不同的值。例如,在声控遥控器的应用中,由于语音指令一般都是简单的控制指令,中间出现逗号或句号等较长停顿的可能性很小,所以提高端点检测的灵敏度是合理的,M0设置为较小值,对应的音频时长一般为200-400毫秒左右。在大段的语音听写应用中,由于中间会出现逗号或句号等较长时间的停顿,宜将端点检测的灵敏度降低,此时M0值设置为较大值,对应的音频时长一般为1500-3000毫秒。所以M0的值,也就是端点检测的灵敏度,在实际中应该做成可调整的,它的取值要根据语音应用的场景来选择。

噪声抑制(降噪)
实际采集到的音频通常会有一定强度的背景音,这些背景音一般是背景噪音,当背景噪音强度较大时,会对语音应用的效果产生明显的影响,比如语音识别率降低,端点检测灵敏度下降等,因此在语音的前端处理中,进行噪声抑制是很有必要的。噪声抑制的一般流程:稳定背景噪音频谱特征,在某一或几个频谱处幅度非常稳定,假设开始一小段背景是背景噪音,从起始背景噪音开始进行分组、Fourier变换,对这些分组求平均得到噪声的频谱。降噪过程是将含噪语音反向补偿之后得到降噪后的语音。
噪声有很多种,有频谱稳定的白噪声,有不稳定的脉冲噪声和起伏噪声,但在语音应用中,稳定的背景噪音最为常见,技术也最成熟,效果也最好,所以只讨论稳定的白噪声,即总是假设背景噪声的频谱是稳定或者是准稳定的。语音端点检测是在时域上进行的,降噪的过程则是在频域上进行的,为此,先来简单介绍或者说复习一下用于时域-频域相互转换的重要工具——傅里叶变换。
为了更容易理解,先看高等数学中的傅里叶级数,高等数学理论指出一个满足条件的周期为2T的函数f(t),可以展开成傅里叶级数,信号的傅里叶级数展示的是构成信号的频率以及各个频率处的振幅,因此这个式子的右端又可以看做是信号f(t)的频谱,信号的频谱就是指这个信号有哪些频率成分,各个频率的振幅如何。式子从左到右的过程是一个求已知信号的频谱的过程,从右到左的过程是一个由信号的频谱重构该信号的过程。虽然由信号的傅里叶级数很容易理解频谱的概念,但在实际中求取信号的频谱时,使用的是傅里叶级数的一种推广形式——傅里叶变换。
在实际应用中,将数字采样信号进行傅里叶变换后,可以得到信号的频谱。频域上的处理完成后,可以使用傅里叶逆变换将信号由频域转换到时域中。傅里叶变换是一个可以完成由时域向频域转换的重要工具,一个信号经傅里叶变换后,可以得到信号的频谱。只要明白,一个时域信号进行傅里叶变换后,可以得到这个信号的频谱。时域信号一般关注的是什么时间取什么值,频域信号关心的是频率分布和振幅。噪音抑制的关键是提取出噪声的频谱,然后将含噪语音根据噪声的频谱做一个反向的补偿运算,从而得到降噪后的语音。
降噪过程:同端点检测类似,假设音频起始处的一小段语音是背景音,这一假设非常重要,因为这一小段背景音也是背景噪声,是提取噪声频谱的基础。首先将这一小背
景音进行分帧,并按照帧的先后顺序进行分组,每组的帧数可以为10或其他值,组的数量一般不少于5,随后对每组背景噪声数据帧使用傅里叶变换得到其频谱,再将各频谱求平均后得到背景噪声的频谱。得到噪声的频谱后,降噪的过程就非常简单了,噪声的频谱和有效语音信号的频谱,两者共同构成含噪语音的频谱,用含噪语音的频谱减去噪音频谱后得到降噪后语音的频谱,再使用傅里叶逆变换转回到时域中,从而得到降噪后的语音数据。
在实际应用中,降噪使用的噪声频谱通常不是一成不变的,而是随着降噪过程的进行被持续修正的,即降噪的过程是自适应的。原因一方面是语音数据前部的静音长度有时不够长,背景噪声数据不足导致得到的噪声频谱往往不够准确,另一方面背景噪声往往不是绝对稳定的,而是渐变的甚至会突变到另一种稳定的背景噪声。这些原因都要求在降噪的过程中对使用的噪声频谱做及时修正,以得到较好的降噪效果。修正噪声频谱的方法是使用后继音频中的静音,重复噪声频谱提取算法,得到新的噪声频谱,并将之用于修正降噪所用的噪声频谱,所以降噪的过程中仍然要使用端点检测中用到的如何判断静音。噪声频谱修正的方法或者是新旧频谱进行加权平均,或者使用新的噪声频谱完全替换使用中的噪声频谱。
以上介绍的是降噪非常简单的原理,实际中降噪算法远比上面的复杂,不仅因为现实中的噪声源多种多样而且其产生的机理和特性也较为复杂。


语音增强
主要任务就是消除环境噪声对语音的影响。目前,比较常见的语音增强方法可分为以下几类。其中基于短时谱估计增强算法中的谱减法及其改进形式是最为常用的,这是因为它的运算量较小,容易实时实现,而且增强效果也较好。此外,人们也在尝试将人工智能、隐马尔科夫模型、神经网络和粒子滤波器等理论用于语音增强,但目前尚未取得实质性进展。

1、基于短时谱估计的语音增强法
基于短时谱估计是应用最广泛的语音增强方法,包括谱相减法(简称谱减法)、维纳滤波法、最小均方误差法等。
经典谱减法:是通过假设噪声是平稳的或者变化缓慢的加性噪声,并且语音信号与噪声信号不相关,估计噪声频谱并减去该估值来实现语音增强的。该方法能够抑制背景噪声影响,和其他方法结合产生了许多有效的语音增强方法,虽然非平稳环境下处理效果还不够理想,但这种方法运算量比较少,容易实时实现,是最常用的一种语音增强方法,但在低信噪比的情况下,对语音的可懂度和自然度损害比较大,并且在重建语音过程中会产生音乐噪声。
维纳滤波法:该法是统计意义上、平稳条件下的最优滤波法,或者说是波形的最优线性估计,即通过设计一个线性滤波器,使通过滤波操作后的输出信号达到最小均方误差期望值,那么输出信号就是原本纯净的最优线性估计,但该方法对语音这种非平稳信号不是很适合,但是卡尔曼滤波法克服了维纳滤波的平稳条件限制,在非平稳条件下也可以保证最小均方误差最优,但仅适用于清音。自适应滤波是效果最好的一种语音增强方法,但是由于需要一个在实际环境中很难获得的参考噪声源,而且和谱减法一样伴有音乐噪声,因此实际应用并不十分广泛。

2、噪声对消法
如果能直接从带噪声语音中,通过时域或者频域,将噪声分量减去,则能有效增强带噪声语音,噪声对消法就是以此作为出发点。其最大特点是需要采集背景噪声作为参考信号,参考信号准确与否直接决定着噪声对消法的性能好坏。在采集背景噪声时,往往采用自适应滤波技术,以便使信号尽可能接近带噪声语音中的噪声分量。
自适应对消是通过自适应滤波器来完成的。自适应滤波器在输入信号和噪声的统计特性未知或变化的情况下,通过调整自身的参数,来达到最佳滤波效果。当输入过程的统计特性变化时,自适应滤波器调整自己参数的过程称为“跟踪”过程。

3、谐波增强法
由于语音中的浊音具有明显的周期性,这种周期性反映到频域中则作为一系列分别对应基频(基音)及其谐波的一个个峰值分量,这些频率分量占据了语音的大部分能量,可以利用这种周期性来进行语音增强。这时可以采用自适应梳妆滤波器来提取基音及其谐波分量,抑制其他周期性噪声和非周期性的宽带噪声。由于语音是时变的,语音的基音周期也是不断变化的,能否准确地估计出基音周期以及能否及时跟踪基音变化,是谐波增强法的关键。

4、基于语音生成模型的语音增强法
语音的发声过程可以建模为一个线性时变滤波器,对不同类型的语音采用不同的激励源。在语音的生成模型中,应用最广泛的全极点模型。基于语音生成模型可以得到一系列语音增强方法,例如,时变参数维纳滤波法、卡尔曼滤波法。维纳滤波的背景噪声白化效果很好,卡尔曼滤波能有效消除有色噪声。但基于语音生成模型的增强方法运算量比较大,系统性能也有待于进一步提高。

5、基于听觉掩蔽的语音增强法
听觉掩蔽法是利用人耳听觉特性的一种增强法。人耳可以在强噪声的干扰下,分辨出需要聆听的信号,也可以在多个说话者同时发声时,分别将它们提取出来。正是由于以上这些原因,随着对人耳特性了解的加深,听觉掩蔽法会得到更深入的发展。

6、基于小波变换的语音增强法
小波变换语音增强算法是随着小波分解这一新的数学分析工具发展起来的,结合了谱减法的一些基本原理。它是一种时频域局部分析方法,克服了短时傅里叶变换固定分辨率的缺点,能够将信号在多尺度多分辨率上的信息。小波变换与人耳的听觉特性非常相似,便于研究者利用人耳的听觉特性来分析语音这种非平稳信号。
它语音增强原理是:语音信号的能量集中在低频段,而噪声能量则主要集中在高频段,就可以将噪声小波系数占主要成分的那些尺度上的噪声小波分析量置零或者给予很小的权重,然后用处理后的小波系数重构恢复信号。随着小波变换技术的发展,小波变换去躁实现语音增强的技术也在不断丰富,比如利用小波变换模极大值去噪法、非线性小波变换阈值去噪法、利用信号小波变换后空域相关性的信噪分离法、平移不变量小波去噪法等。






原创粉丝点击