语音增强及相关算法

一、概况及现状

1、语音增强的目标:

受体是机器,目标是提高语音的可懂度(intelligibility)

受体是人,目标是提高语音的质量(quality)

2、语音增强的任务:

语音降噪、语音分离、语音解混响,增强技术很多情况下并不是独立的,而是需要联合处理和优化。例如,语音解混
响与降噪,卷积盲源分离与降噪等等

3、研究现状和趋势:

语音增强主要包括三个方面:语音降噪、语音分离和语音解混响(可以包含回声消除)问题。根据接收信号的通道个数不同又分为单通道和多通道(特别强调二麦情况,因为与人类双耳对应)等不同情况。基本的算法都是从混合信号和干净信号建立的接收信号模型出发,考虑空间(spatial)、时间(temporal)和谱特性(spectra)三个维度的信息和信号处理问题;当然空间信息需要对应多麦克风情况,单麦克风没有spatial信息可以利用。

1)语音降噪研究现状

无监督语音降噪算法:

   谱减法

将估计的噪声的功率谱并将其从嘈杂语音中减去;

没有利用明确的语音模型,其性能在很大程度上叏决亍对干扰源的频谱跟踪的好坏,容易产生“无中生有”的音乐 噪声;

基于统计模型的方法

语音增强问题归入到一个统计的估计框架中,如Wiener滤波、最小均方误差(MMSE)和最大后验(MAP)法;

一般需要假设语音信号和噪声信号是统计独立的,且服从特定分布;
目前来说,模型参数的鲁棒估计还是一个比较困难的问题;

基于子空间的斱法
假设干净的语音信号子空间和噪声子空间是正交的;
这种子空间正交的假设在实际情况中,特别是短时的情冴下是非常不精确的;

传统的方法对平稳噪声的抑制效果比较显著,但是对于非平稳噪声,其往往不能得到很好的降噪效果

有监督条件下语音降噪算法:

基于模型的方法
因为跟二语音分离信号模型框架基本相似,参考语音分离部分的内容。

深度神经网络类算法

构造足够多的混响数据和对应干净数据进行MMSE或者其他标准下的训练得到模型。

关键点在于:数据规整、归一化/模型泛化/测试不训练的不匹配/Specific adaptation (如说话人、噪声环境、混响时间等等)。

有监督类算法对于非平稳噪声往往能得到更好的降噪效果

2)语音分离研究现状

无监督语音分离算法:

滤波法:

ICA滤波器;(单通道--时频域实现,多通道均可)

多通道波束滤波器;(Beamforming,多通道)

听觉场景分析:(CASA, 单通道,多通道均可)

基音周期的鲁棒估计和追踪问题;高频部分的浊音分离问题;序列聚类问题;清音的分离问题;聚类后的二值时频掩码平滑问题。

语音增强及相关算法_第1张图片


有监督条件下语音分离算法:

基于模型的方法:

采用预先训练的模型(参数戒者pattern)来描述每个源信号,而这个模型则作为分离阶段的先验知识。(训练(训练集)--测试(测试集))
参数类:正弦参数模型、AR和variance(LPC)参数、GMM参数描述各语音分布以及mix分布
Pattern类:矢量量化(VQ)、字典学习类算法(DL、SNMF和SCMF以及PLCA类)
测试:一般将混合信号带入到训练得到的参数模型构建的干净语音的可能组合所建立的距离目标凼数中,利用优化算法求解最优参数选择,然后利用得到的参数构建滤波器;
上述模型和HMM结合产生的更好描述信号Temporal性质的算法:
AR-HMM;FSHMM;以及N-FHMM。

深度神经网络类算法:

3)语音解混响研究现状:

无监督语音解混响算法:

基于复倒谱域的滤波算法(单、多通道):

在复倒谱域纯净语音信号的复倒谱通常分布在靠近原点的附近,而房间冲击响应的复倒谱主要分布在远离原点的地斱。一般采用低通滤波器的低时窗滤除相应的混响部分,然后再通过逆向操作,获得解混响的声源信号。

基于波束形成的算法(多通道):

定方向信号,大幅降低其他方向的干扰和混响成分;
要实现比较好的效果的话,对麦克风数目要求比较多;
单通道的语音解混响问题丌能运用此类斱法。

抑制后期混响的谱减法(单、多通道):

该类算法一般区分混响语音为前期混响成分和后期混响成分。利用统计方法和混响时间模型估计后期混响成分的差,然后构建时滤波数实现去除后期混响成分的功能;
一般应用
单通道解混响者和其他解混响算法共同使用;
该类算法一般在能量谱域实现,算法比较稳健,但由
非线性变换破坏相位,能放置在其他需要相位信息的增强算法之前。

线性滤波器法(单、多通道—以多通道研究为主):

逆滤波器法:通过估计房间传递函数,然后对混响语音逆滤波实现解混响的目标。实际情况下,往往不能准确估计房间传递函数,并且由于房间传递函数是实时发化的,计算量大,效果不好;

基于概率模型类的算法:通过假定混响语音信号为房间传递函数和语音信号的自回归或者卷积传递函数模型且对语音建立零均值、时变方差的高斯分布,实现对解混响目标语音的建模,利用最大似然等方法求解模型中的所有参数,最后实现解混响得到估计的干净语音。该类算法一般要求通道个数大于1。

有监督条件下语音解混响算法:
基于非负矩阵分解/非负卷积信号模型:

对房间传递函数和语音信号的分析,建立对混响信号时频幅度谱或者能量谱行非负矩阵分解者非负矩阵反卷积的语音解混响和降噪模型;

该类模型通常利用已有语音数据训练得到关亍语音和噪声信号的模型表示。

二、语音增强方法分类及难点

(一)分类:

语音增强及相关算法_第2张图片

对于语音增强方法的分类,可以按照其运用方法的不同进行分类,于是便可以分成如下两大类:数字信号处理的语音增强方法和基于机器学习的语音增强方法。 其中,数字信号处理的语音增强方法是主流方法,历史悠久,且拥有很深的技术奠基,是目前工程界进行语音降噪的主要思路。而在传统的数字信号处理的方法中,按照其通道数目的不同,又可以进一步划分为:单通道语音增强方法和麦克风阵列的语音增强方法。

  在传统的单通道语音增强方法中,对数字信号处理的知识运用较多,时域和频域的方法都有,以频域处理为主,其中基于短时谱估计的语音增强方法是目前应用最为广泛的语音增强方法,具体的算法可以分为以下三大类:谱减法、维纳滤波法和基于统计模型的方法。除了上述提到的短时谱方法,在单通道的语音增强领域还有一种自适应滤波的方法,但是其需要事先知道噪声或者纯净语音,然后利用随机梯度下降的方式进行最优解的逼近,而在大多数情况下,噪声或者纯净语音等先验知识是无法获得的,因此大大限制了自适应滤波方法的应用,但是该方法在手机通话中的降噪应用比较广泛,通常手机中都会专门用一个降噪麦克风来收取环境中的噪音,以此作为参考输入来实现降噪。此外,在单通道的方法之中,还有一种基于子空间的方法也备受关注,但由于其运算度相对较高,所以在工程中的应用并不算广泛。近些年以来,小波变换的方法发展迅猛,它克服了短时傅里叶变换固定分辨率的缺点,可以获得信号在不同分别率上的信息,在近几年里得到了广泛的应用。

  而在麦克风阵列的语音增强方法中,由于利用了更多的麦克风,考虑了信号的空间信息,因此在抑制特定方向的干扰、进行语音分离等方面,比单通道的语音增强更有优势。麦克风阵列的语音增强方法目前在智能音箱、机器人等领域应用较多,利用其多麦克风的优势,这类产品可以实现在远场和更复杂的声学环境中进行语音增强。主流的麦克风阵列方法有:固定波束形成的方法和自适应波束形成的方法。固定波束形成的应用环境十分受限,但运算复杂度较低,所以一般应用于声学场景固定不变的环境中;而自适应波束形成的方法则表现出更好的鲁棒性,当然这也是以牺牲运算复杂度为代价,目前自适应波束形成方法主要有两大阵营:LCMV结构和GSC结构,如今的麦克风阵列语音增强算法基本上都是基于这两种结构进行地改进和优化。

  基于机器学习的语音增强方法算是奇巧之技,不同于传统的数字信号处理方法,它借鉴机器学习的思路,通过有监督的训练实现语音增强。该领域的算法算是刚刚起步,满打满算也没有二十年的历史,但是“存在即合理”,它之所以能够在语音增强领域占有一席之地,也有其优势所在,例如,在数字信号处理领域的一些比较棘手的问题,比如瞬时噪声的消除,这类方法另辟蹊径,可以较容易地将其解决,因此,这类算法也许会成为未来人工智能时代的语音增强主流方向。如今,运用机器学习的语音增强方法不多,大致梳理一下,可以分成以下几类:基于隐马尔科夫模型的语音增强、基于非负矩阵分解的语音增强、基于浅层神经网络的语音增强和基于深层神经网络的语音增强。其中,基于深度神经网络的语音增强方法,也就是深度学习语音增强,利用深度神经网络结构强大的非线性映射能力,通过大量数据的训练,训练出一个非线性模型进行语音增强,取得了十分不错的效果。此外,该类方法在工程界也刚刚实现落地,华为今年发布的mate10手机,已成功地将该技术应用到了复杂声学环境中的语音通话中,也算是开辟了深度学习应用于语音增强的先河,未来该何去何从,仍需要我们这一代人的不懈努力。

(二)难点:

难点一:多通道同步采集硬件研发
首先多通道同步采集硬件是研究前端降噪算法的前提,只有先拿到一些麦克风阵列的数据,才能根据实际采集的数据进行算法的研发和调优。目前市面上主流的codec芯片最多支持4通道同步采集,这对于麦克风阵列来说是不够的,比如echo音响,采用了7个麦克风,再加上一个喇叭的参考信号,所以它至少需要8通道同步采集,即2个4通道的codec芯片。为了使两个codec芯片同步,需要一颗FPGA芯片来协助完成,同时麦克风还需要一些配套的模拟滤波放大电路,中间有很多都是经验性的东西,并且在echo以前,消费电子上很少有集成4个麦克风的情况,所以研究的人很少,这也增加了该硬件的研发难度。当然如果仅仅是为了研究可以直接购买一些多通道同步采集设备,节省硬件研发周期。


难点二:前端麦克风阵列降噪算法

其次是麦克风阵列降噪算法的研发。目前影响远场语音识别的难点是播放状态下打断,房间混响和非平稳噪声干扰等。播放状态下打断是指设备在播放音乐或tts的时候可以对它再次下达指令,这就需要回声消除技术,将设备自身播放的声音从麦克风接收到的信号除去,这个技术在手机上已经非常成熟了,比如上面@Kent Zhang提到的speex和webrtc的开源软件中都有该算法,但这两个开源软件为了达到更大的回声抑制效果,使用了大量的非线性处理手段,因此如果直接用在远场语音识别领域,效果并不好(我们已经做过测试)。在研究中我也发现,语音识别引擎对于语音信号的非线性处理非常敏感,简单的说就是语音失真少一些即使背景噪声有残留,也不会影响语音识别率。房间混响会造成麦克风接收到的信号有很长的拖尾,让人听起来感觉发闷,在实际中人耳具有自动解混响的能力,所以人在实际房间中相互交流并没有影响反而觉得声音饱满,但是这个对于语音识别来说是致命的,我觉得可能的原因是房间的冲击响应太长,一般有400ms-1000ms,而语音识别一帧的长度只有50ms,即使DNN有记忆能力,但也有限,所以在混响中语音识别率下降。远场语音识别以前,由于需求不大,对于去混响研究的不多,一般以倒谱平均、谱减法为主,但这类方法对远场语音识别率提升不大,目前比较好的去混响算法是日本NTT部门研究的多步线性预测方法,有兴趣的可以尝试一下。非平稳噪声干扰主要是利用波束形成去除,在做波束形成之前需要先知道说话人的方向,这就需要测向功能,即波达方向估计,学术上的论文一般研究如何提高测向的精度和分辨率,但这些指标在实际中意义不大,实际中更需要解决的是如何在混响的条件下提高波达方向估计的鲁棒性。知道方向之后,就可以做波束形成,抑制周围的非平稳噪声,由于消费产品价格和尺寸的限制,麦克风的个数间距有限,因此必须用自适应波束形成算法,简单说就是保护主方向说话人的同时,自动在噪声方向形成零点,对噪声进行抑制。经过测试,波束形成算法可以大幅提高语音识别率。

难点三:后端语音识别与前端信号处理算法的匹配

最后就是语音识别引擎要和前端降噪算法进行匹配。目前的识别算法还是训练数据和测试数据越匹配效果越好。目前各家的语音识别引擎主要是利用手机上收集的语音进行训练的,因此只适用于近讲情况。同样道理,为了提升远场语音识别,就需要用远场的语音数据训练声学模型,而远场语音数据又太复杂(混响、噪声),这就需要信号处理的手段让数据尽量变的单一一些,最佳的方法就是利用麦克风阵列采集的信号经过前端降噪算法后的数据去训练语音识别引擎,效果应该会有大幅提升。
此外,目前远场语音识别也分为两派,一派认为利用深度学习的办法也可以实现去混响降噪声的目的,另外一派是用麦克风阵列信号处理的方法去除混响和噪声,从目前的产品上看麦克风阵列信号处理的方式在实际中用的更多一些,echo用了7个麦克风,叮咚用了8个麦克风,google home也用了两个麦克风。个人觉得在远场语音识别这块,麦克风阵列信号处理还是一定需要的,因为人有这么聪明的大脑还长了两个耳朵,而目前DNN和人脑差别又很大,所以更需要多个麦克风做辅助,相信随着DNN的发展应该有一天可以只用两个麦克风就可以彻底解决远场语音识别问题,但这个时间估计还会很长。

三、相关算法及学习资料

(一) LMS自适应滤波器降噪

1.1. 基本原理

LMS自适应滤波器,利用前一刻已获得的滤波器参数,自动调节当前滤波器参数,以适应信号和噪声未知的或随机变化的统计特性,从而实现最优滤波。

1.2. 原理概述

输入信号序列xi(n),期望输出信号d(n),定义误差信号为:

语音增强及相关算法_第3张图片

其中wi为权系数。 
LMS算法的本质就是寻找最优的权系数wi,使得误差信号e(n)最小。 
经过一系列推导,得到权系数的迭代公式:

这里写图片描述

使用最陡下降法,那么LMS算法的关键问题就变为收敛因子μμ和梯度因子的求解。

(1). 收敛因子μμ控制收敛的速率,其取值范围:

语音增强及相关算法_第4张图片

其中λλ为相关矩阵的最大特征值。当它趋于无穷大,加权适矢量收敛于最优维纳解。

(2).梯度因子

近似计算得到梯度因子表达式:

这里写图片描述

因此权系数最终表达为:

这里写图片描述

1.3. 算法实施步骤

  1. 设定滤波器W(k)初值: 
    这里写图片描述

  2. 计算滤波器实际输出的估计值: 
    这里写图片描述

  3. 计算估算误差: 
    这里写图片描述
  4. 更新k+1时刻滤波器系数 
    这里写图片描述
  5. k变为k+1,重复步骤2-4

1.4. MATLAB仿真结果

语音增强及相关算法_第5张图片

说明: 加入白噪声信号,信噪比设定为snr = 5,降噪前后的信噪比为: 
这里写图片描述

(二) LMS的自适应陷波器

2.1. 基本原理

自适应陷波器法适用于单色干扰噪声,如单频正弦波噪声,希望陷波器的特性理想,缺口的肩部任意窄,可马上进入平坦区域。

2.2.原理概述

拿有两个权系数的滤波器为例,输入信号为纯语音和单频干扰的叠加:

这里写图片描述

采样后,

这里写图片描述

其中, 
这里写图片描述

参考输入为标准正弦波和余弦波的叠加, 
这里写图片描述;

x1, x2可以构成任意幅度和相位的正弦波y(n)。 
通过LMS自适应系数调整,使y(n)在幅度和相位与原始输入的单频干扰相同,从而清除单频干扰信号,达到陷波效果。

2.3. MATLAB仿真结果

语音增强及相关算法_第6张图片

说明:加入信噪比为snr = 5的单频噪声,滤波前后信噪比数值大小:

这里写图片描述

(三)基本谱减法

Tip: 由于基本谱减法带来明显噪声残留,需要进行算法改进。

3.1. 基本原理

语音信号处理最常用的方法,在频域进行降噪。

3.2. 算法步骤

语音增强及相关算法_第7张图片

语音信号对相位不灵敏,将谱减前的相位信息用到谱减后的信号中,在求出谱减后的幅值之后,结合相角,就能用IFFT求出谱减后的语音信号。

3.3. MATLAB仿真结果

语音增强及相关算法_第8张图片

说明:加入信噪比为snr = 5的白噪声,降噪后听到明显的噪声残留。

这里写图片描述

所以需要在谱减法的基础上做一些改进,传统的方法包括S.F.Boll提出的方法,E.Zavarehei根据其理论写了MATLAB函数 SSBoll79。具体细节这里就先不让谈。

(四)维纳滤波降噪

4.1. 基本原理

维纳滤波器降噪即设计一个数字滤波器h(n),使得输入的带噪语音信号与纯净语音信号的误差满足LMS准则

4.2. 当输入为y(n)时,滤波器输出为:

语音增强及相关算法_第9张图片

根据最小均方误差准则,要使得: 
这里写图片描述

取极小值。 
经过一系列推导,得到维纳滤波器谱估计器: 
语音增强及相关算法_第10张图片

引入先验信噪比和后验信噪比,定义:

语音增强及相关算法_第11张图片 
语音增强及相关算法_第12张图片

谱估计器可以进一步写成:

语音增强及相关算法_第13张图片 
(基于先验信噪比的维纳滤波器谱估计器) 
语音增强及相关算法_第14张图片 
(基于后验信噪比的维纳滤波器谱估计器)

引入平滑参数得到先验信噪比和后验信噪比的关系: 
这里写图片描述

表明由滴i-1帧的先验信噪比和第i帧的后验信噪比,就可求出第i帧的先验信噪比,一旦已知本帧的先验信噪比,就能导出本帧的维纳滤波器传递函数Hi(k)。 
语音增强及相关算法_第15张图片 
进一步可导出维纳滤波器的输出: 
这里写图片描述

4.3. MATLAB仿真结果

语音增强及相关算法_第16张图片
说明: 输入信噪比为10dB的白噪声,降噪前后的信噪比: 
这里写图片描述

资料:

  1. 传统单通道的语音增强方法:

    Yariv Ephraim 主页:http://ece.gmu.edu/~yephraim/
    
    Rainer Martin 主页:http://www.ruhr-uni-bochum.de/ika/mitarbeiter/martin_publik.htm#2017
    
    Isreal Cohen 主页:http://webee.technion.ac.il/people/IsraelCohen/
    
    Philip Loizou 主页:http://ecs.utdallas.edu/loizou/
    
    推荐书籍:
    《语音增强理论与实践》(Loizou)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  2. 麦克风阵列的语音增强方法:

    Sharon Gannot 主页:http://www.eng.biu.ac.il/gannot/
    
    Jacob Benesty 主页:http://externe.emt.inrs.ca/users/benesty/
    
    推荐书籍:
    《Wideband Beamforming Concepts and Techniques》(Wei Liu)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  3. 基于深度学习的语音增强方法:

    汪德亮主页:http://web.cse.ohio-state.edu/~wang.77/index.html
    
    推荐学习:
    吴恩达深度学习在线课程:http://mooc.study.163.com/smartSpec/detail/1001319001.htm
    博士论文:《基于深层神经网络的语音增强方法研究》(徐勇 2015)

参考文献

[1]. 宋知用. Matlab在语音信号分析与合成中的应用[M]. 北京:北京航空航天大学出版社:2013.

你可能感兴趣的:(信号处理,matlab,音频处理)