一种适用于回声消除系统的语音状态检测方法

文档序号:10595515阅读:413来源:国知局
一种适用于回声消除系统的语音状态检测方法
【专利摘要】本发明是一种适用于回声消除系统的语音状态检测方法,涉及基于IP网络的语音交互技术领域。本发明利用噪声训练样本和语音训练样本构造支持向量机(SVM)分类器,待检测信号是分块后的远端和近端信号,使用构造好的基于高斯混合模型的SVM分类器对本分块远端信号进行VAD判决,如果判断结果为无语音,停止滤波器更新和滤波,直接输出近端语音信号,如果判断远端有语音,进行双端通话判决;当处于双端通话时,停止滤波器系数更新,对近端信号进行滤波;否则,根据远端信号进行滤波器系数更新和滤波。本发明提高了语音活动性检测的准确性,避免将双端静音状态误判为双端通话状态,防止了在没有参考信号的情况下滤波器的错误更新和滤波。
【专利说明】
-种适用于回声消除系统的语音状态检测方法
技术领域
[0001] 本发明设及基于IP网络的语音交互技术领域,具体是指一种适用于回声消除系统 的语音状态检测方法。
【背景技术】
[0002] 回声消除技术广泛应用于电话会议系统、车载蓝牙系统、IP电话等基于IP网络的 语音交互系统中,用W消除扬声器播放的声音经过多种路径传播后被麦克风拾取,并传回 到系统远端形成的声学回声。回声消除的核屯、思想是通过一个自适应滤波器模拟回声路 径,并将估计回声信号从麦克风拾取的信号中减去。
[0003] 语音状态检测在回声消除中起着至关重要的作用。在声音信号进入滤波器之前需 要首先对当前语音状态进行判断,根据系统所处的语音状态决定滤波器的工作状态。是否 能准确迅速地判断系统语音状态,对回声消除的效果有很大的影响。
[0004] 现有的回声消除系统通常直接使用DTD(Double Ta化Detection,双端通话检测) 算法判断系统是否处于双端通话状态,并在双端通话状态下停止滤波器系数更新,防止运 种情况下滤波器由于受到近端语音的干扰而发散。常用的DTD算法一一Geigel算法通过比 较近端信号和远端信号的幅度值判断是否存在近端语音,在近端信号与远端信号幅度的比 值大于特定值T时认为系统处于双端通话状态。即当:
[0005]
[0006] 时,认为存在近端语音,系统处于双端通话状态。其中Iy化)I是近端语音幅度值, max{ Ix化-1) I,...,Ix化-N) I }是远端语音信号前N个采样点的最大幅度值。n限巧良据回声 路径衰减来确定,通常可W取0.5; N通常与滤波器长度相等。
[0007] 但该方法存在如下缺点:
[000引 UGeigel算法假设了近端语音远大于远端的回声信号,并不完全符合回声消除的 实际情况,因此在某些情况下不是很准确。
[0009] 2、不进行远端VAD(Voice Activity Detection,语音活动性检测)就直接进行DTD 可能会导致双端静音状态被误判为双端通话状态。
[0010] 3、仅在双端通话状态下停止滤波器系数更新,在远端语音不存在的状态下持续进 行滤波和系数更新可能导致滤波器发散,并从近端信号中错误地减去并不存在的远端语 音。

【发明内容】

[0011] 为了克服上述的S个问题,本发明提出一种结合VAD和DTD的语音状态检测方法, 并根据检测结果设计新的滤波和更新策略W提高检测准确率,避免语音状态的误判,防止 滤波器的错误更新和滤波。
[0012] 本发明提供的一种适用于回声消除系统的语音状态检测方法,实现步骤如下:
[OOU]第一步:利用噪声训练样本和语音训练样本构造支持向量机SVM分类器。
[0014] 分别对噪声训练样本和语音训练样本进行特征值提取和高斯混合模型GMM训练, 构造对应的高斯超向量。利用高斯超向量构造 SVM分类器核函数,W及语音信号和噪声信号 对应的SVM模型,使用构造好的核函数和SVM模型构造得到SVM分类器。
[0015] 第二步:待检测信号是分块后的远端和近端信号。使用构造好的基于高斯混合模 型的SVM分类器对本分块远端信号进行VAD判决。
[0016] 对本分块远端信号进行特征值提取和GMM训练,构造高斯超向量。将本分块远端信 号对应的高斯超向量输入到构造好的SVM分类器中进行判决。如果分类为噪声,判断结果为 无语音,则停止滤波器更新和滤波,直接输出近端语音信号。否则说明远端有语音,进行下 一步的双端通话判决。
[0017] 第S步:判断系统是否属于双端通话状态。
[0018] 计算远端信号和误差信号的归一化互相关CxEGG,比较归一化互相关Cxegg和设置的 口限Txecc,当Cxecc<Txecc时,近端有语音,系统处于双端通话状态,停止滤波器系数更新,对 近端信号进行滤波。当时,近端无语音,根据远端信号进行滤波器系数更新和滤 波。
[0019] 本发明的优点与积极效果在于:
[0020] (1)使用基于高斯混合模型的支持向量机算法对远端信号进行语音活动性检测, 提高了语音活动性检测的准确性,克服了常用的基于能量的语音活动性检测方法存在的在 低信噪比条件下检测不准确的问题。
[0021] (2)在双端通话检测之前首先进行远端语音活动性检测,在远端有语音时再进行 双端通话检测,能够避免将双端静音状态误判为双端通话状态。采用基于互相关的双端通 话检测算法,提高了双端通话检测的准确性。
[0022] (3)根据系统所处的不同语音状态采取不同的滤波和更新策略。与传统回声消除 系统仅在双端通话时停止滤波器系数更新相比,在远端无语音的状态下也停止滤波器系数 更新和滤波,可W进一步防止在没有参考信号的情况下滤波器的错误更新和滤波。
【附图说明】
[0023] 图1是本发明的适用于回声消除系统的语音状态检测方法的整体流程示意图;
[0024] 图2是本发明实施例仿真所用的两段PCM流示意图;
[0025] 图3是本发明实施例仅使用基于能量的DlD检测进行回声消除的效果示意图;
[0026] 图4是本发明实施例采用本发明方法进行回声消除的效果示意图;
[0027] 图5是本发明实施例使用改进前的回声消除库的Sipdroid回声消除效果示意图; [00%]图6是本发明实施例使用改进后的回声消除库的Sipdroid回声消除效果示意图;
【具体实施方式】
[0029] 下面将结合附图和实施例对本发明作进一步的详细说明。
[0030] 本发明方法在DTD之前首先对远端信号进行VAD,在VAD检测出远端信号不存在时 直接停止滤波器系数更新和滤波,W防止滤波器发散及错误地滤波。在VAD检测出存在远端 语音时再进行DTD,并在双端通话时停止滤波器系数更新。其中使用的VAD算法是基于GMM (Gaussian Mix1:ure Model,高斯混合模型)的SVM(Suppo;rt Vector Machine,支持向量机) 算法,该算法利用GMM构造特征超向量,将GMM超向量用于SVM的特征值输入及核函数构造, 准确率高于常用的基于能量或相关性的VAD算法。使用的DlD算法是基于远端信号与误差信 号互相关的DTD,准确率也高于常用的基于能量的Geigel算法。通过将远端VAD和DlD结合起 来,可W提高语音状态检测的准确性。通过在不同语音状态下采取不同的滤波策略,可W防 止滤波器的发散及错误的滤波,大大改善回声消除的效果。
[0031] 结合图1说明本发明的适用于回声消除系统的语音状态检测方法的各步骤。
[0032] 步骤一,利用噪声训练样本和语音训练样本构造 SVM分类器,包括步骤SlOl~ S103。
[0033] 步骤SlOl:对噪声信号训练样本和语音信号训练样本进行特征值提取。运里采用 的特征值是Mel倒谱系数(MFCC)dMFCC具体提取过程:对信号进行预加重、分块及加窗处理, 将加窗后的分块经过快速傅里叶变换(FFT)求出每一分块的频谱参数。将每一分块的频谱 参数通过一组由K个S角形带通滤波器所组成的Mel刻度滤波器,K个Mel带通滤波器编号从 0到K-1,将每个频带的输出取对数,求出每一个输出的对数能量,对每个分块语音信号获得 对应的K个对数频谱。K为正整数,一般取值为20~30。最后将得到的K个对数频谱进行余弦 变换求出Mel倒谱系数。将对数频谱经过离散余弦变换变换到倒谱频域得到Mel倒谱系数的 公式化了-
[0034] (1)
[0035] 其中,Si(k)为第i个分块信号通过编号k的带通滤波器后对应得到的对数频谱,K 为Mel带通滤波器的个数,HU(I)为第i个分块语音信号的MFCC的第1阶参数,L为提取的MFCC 的总阶数,公式(1)中i表示对应第i个分块,i为正整数。
[0036] 步骤S102:生成噪声信号训练样本和语音信号训练样本对应的高斯超向量。
[0037] 分别利用噪声信号训练样本和语音信号训练样本的MFCC参数建立噪声信号和语 音信号对应的高斯混合模型。GMM本质上是一种多维概率密度函数,N阶高斯混合模型g(x) 是由N个单高斯分布的线性组合来描述帖特征在特征空间的分布,对某一分块,g(x)表示如 下:
[00;3 引 口)
[0039] 其中,X是训练样本本分块的MFCC参数构成的L维特征向量,N是高斯混合模型的阶 数,Pi(X)为高斯混合模型的第i个高斯分量,Wi为高斯混合模型分量Pi(X)的加权因子。
[0040] Pi(X)表示如下:
[0041]
W
[0042] 其中,Si是第i个高斯分量的协方差矩阵,m是第i个高斯分量的均值向量,因此, GMM模型的参数集A可表示如下:
[0043] A=(wi,化,5:i),i = l,2,...,N (4)
[0044] 相应的高斯混合模型g(x)可W表示为:
[0045]
O)
[0046] 其中,N(.)表示高斯概率密度函数。
[0047] 建立GMM模型的过程实际上就是通过训练估计GMM模型的参数的过程。可W采用最 大期望算法进行模型参数更新。该算法有两个主要步骤:期望E步和最大化M步。E步利用 当前的参数集计算完整数据的似然度函数的期望值,M步通过最大化期望函数获取新的参 数。E步和M步一直迭代直至收敛。最后分别可W得到语音和噪声的GMM模型,设为g(s)和g (n),s表示语音信号,n表示噪声信号。
[0048] 利用建立好的高斯混合模型构造高斯超向量。高斯超向量是高斯混合模型的参数 构造而成的,可W将语音和噪声的GMM高斯超向量ms和mn分别表示如下:
[0049] (6)
[00 加] (7)
[0051 ] K,知,...,/4为g(S)中各高斯分量的均值向量,片',知,...,/4为g(n)中各高斯分量 的均值向量。
[0052]步骤S103:利用构造好的高斯超向量构造 SVM分类器。分别利用噪声信号和语音信 号对应的高斯超向量mn和ms建立噪声信号和语音信号对应的SVM模型。利用噪声信号和语音 信号对应的高斯超向量Hin和ms构造 K-L核函数。该核函数使用两个GMM概率分布之间的K-L散 度构造而成。
[0053 ]由语音和噪声的GMM超向量mn和ms构造的核函数K (n,S)具体表达式如下:
[0054]
巧)
[0055] 确定核函数、语音信号的SVM和噪声信号的SVM后可W得到SVM分类器。
[0056] 步骤二,使用构造好的基于GMM的SVM分类器对本分块远端信号进行VAD判决。输入 SVM分类器的待检测信号是分块后的远端和近端信号。需要首先进行傅里叶变换转换到频 域,然后根据信号频谱计算信号分块的特征值,即MFCC、归一化互相关等。具体可分为步骤 S201~S203。
[0057] 步骤S201:本分块远端信号MFCC参数提取。MFCC参数的具体提取过程同步骤101, 通过公式(1)最终得到本分块远端信号对应的MFCC参数。
[005引步骤S202:本分块远端信号对应的高斯超向量生成。利用本分块远端信号MFCC参 数建立高斯混合模型,并利用建立好的高斯混合模型构造本分块远端信号对应的高斯超向 量。高斯超向量生成方法同步骤S102,如公式(6)和(7)所示。
[0059] 步骤S203:将本分块远端信号对应的高斯超向量输入到构造好的SVM分类器中,使 用基于GMM的SVM算法进行语音/噪声分类。得出远端语音的VAD判决结果。如果分类为噪声, 判断结果为无语音,则停止滤波器更新和滤波,直接输出近端语音信号。如果分类为语音, 说明远端有语音,进行下一步的双端通话判决。
[0060] 步骤S,判断系统是否属于双端通话状态。
[0061 ] 步骤S301:计算误差信号。
[0062]自适应滤波器系数模拟了回声路径,因此本分块远端信号与自适应滤波器系数进 行卷积可W得到估计回声信号xT(n)w(n),误差信号e(n)即为本分块的近端信号d(n)与估 计回声信号xT(n)w(n)之差。
[0063] 自适应滤波器系数是根据自适应算法,利用误差信号和远端信号不断更新的。一 种常用的更新算法一一LMS算法的更新公式如下:
[0064] w(n+l) =w(n)+2]ie(n)x(n) (9)
[0065] 其中,y是步长,w(n)是滤波器权重向量,e(n)是误差信号,x(n)是远端信号。n代表 第n个时刻(采样点)。
[0066] 步骤S302:计算远端信号和误差信号的归一化互相关。由于时域的互相关运算可 W转换为频域的点乘,即两个信号频谱值逐点相乘,因此可W直接利用远端信号频谱X化) 和误差信号频谱E化)求得该归一化互相关的值,计算复杂度较低。归一化互相关在频域的 计算方法:
[0067]
(…)
[0068] Cxegg表示远端信号和巧差信号的归一化互相关,k表示频点。
[0069] 步骤S303:DTD判决。比较远端信号和误差信号的归一化互相关Cxegg和归一化互相 关口限。当近端无语音时,远端信号和误差信号的归一化互相关Cxecc应该等于1,而近端有 语音时,归一化互相关Cxecc小于1。因此,可W设置一个略小于1的常数Txecc作为口限值,Txecc 通常取值在0.9到1之间,且该口限值根据检测结果实时更新。更新的算法根据实际情况选 取。一个好的口限值应该使误报概率和漏报概率都相对较小。例如:可W首先任意选择一个 略小于1的常数,然后设置近端语音为0,计算误报概率和漏报概率,在一定范围内调整 Txecc,直到误报概率和漏报概率都较小。
[0070] 当归一化互相关小于口限时,即:
[0071] Cxecc<Txecc (11)系统处于双端通话状态,停止滤波器系数更新,直接使用原来的 滤波器系数对近端信号进行滤波;否则,不存在近端语音,只存在远端语音,运时既进行滤 波器系数更新,也进行滤波。
[0072] 将本发明提出的语音状态检测方法应用于实际的回声消除系统中,包括两个终 端,使用VoIP软件Sip化Oid对实际通话效果进行验证。
[0073] 首先使用matlab对本发明提出的结合VAD和DlD的语音状态检测方法进行仿真。仿 真所用的语音信号包括1段30秒的远端语音PCM(PulSe Code Modulation,脉冲编码调制) 流W及1段与之对应的近端语音PCM流,采样频率均为8000化。在回声消除系统中,滤波器的 长度设为128,自适应滤波算法采用BFDAF算法(即频域的NLMS算法),而语音状态检测算法 采用本发明提出的语音状态检测方法。
[0074] 如图2所示,为仿真所用的两段PCM流。从上至下依次为远端信号波形、近端信号波 形。横坐标为时间,单位S;纵坐标为幅度值。采用原有的语音状态检测方法,即仅使用基于 能量的DlD检测,回声消除效果如图3所示。从图中可W看出,在VAD未改进的条件下,前半段 的回声消除效果较好,但还是存在少量残余回声;后半段的效果则不是很理想,原声被消除 得比较多,回声消除后的信号产生了较大失真。
[0075] 采用本发明提出的语音状态检测方法,回声消除的效果如图4所示。对比改进之前 和改进之后分别进行回声消除后得到的两段PCM流,可W看出回声消除效果在改进语音状 态检测方法后有明显的改善。残余回声消除更加彻底,近端语音也几乎没有出现失真现象。
[0076] 为了进一步验证本发明提出的语音状态检测方法在实际回声消除系统中的效果, 对该方法编写相应的C程序,并利用语音通信软件Sipdroid对该方法进行测试。
[0077] 根据本发明的语音状态检测方法的步骤修改回声消除库WebRTC中执行VAD和DTD 的部分,然后在Sipdroid中调用该回声消除库。在不同环境下使用Sipdroid进行实际双端 通话并进行录音,保存回声消除前后的语音PCM流,W便进行回声消除效果分析。
[0078] 为了在取出语音流后进行观察分析时比较方便和清晰,每次测试中,两位通话者 依次从1到10进行报数。在不同环境下,分别对改进前和改进后的Sipdroid版本进行多次通 话测试W便进行对比。
[0079] 首先对使用改进前的回声消除库的Sipdroid回声消除效果进行多次通话测试,并 取出远端、近端和回声消除后的PCM流。巧聯结果如图5所示,图中仅截取报数部分的PCM流。 其中,第一段PCM流是远端信号,第二段PCM流是近端信号,第S段PCM流是回声消除后的近 端信号。可见,回声消除效果不是很理想,报数部分有少许残余回声,虚线框圈出部分。其他 测试结果大部分与此类似。
[0080] 然后,对使用改进后的回声消除库的Sipdroid的回声消除效果也使用同样方法进 行多次通话测试,并取出远端、近端和回声消除后的PCM流。图6为比较有代表性的一次测试 结果。与图5类似,图中第一段PCM流是远端信号,第二段PCM流是近端信号,第S段PCM流是 回声消除后的近端信号。可见,使用本发明改进后的语音检测方法后,回声消除效果比较理 想,报数部分的残余回声消除比较彻底,如虚线框圈出部分,同时原声的保留也没有受到影 响。多次测试发现,在不同环境下,回声消除的效果会受到一定影响,稳定性还有待进一步 提高。但在大多数情况下,使用本发明的语音状态检测方法后的回声消除效果都较改进前 的回声消除效果有明显改善。
【主权项】
1. 一种适用于回声消除系统的语音状态检测方法,其特征在于,实现步骤如下: 第一步:利用噪声训练样本和语音训练样本构造支持向量机SVM分类器; 分别对噪声训练样本和语音训练样本进行特征值提取和高斯混合模型GMM训练,构造 对应的高斯超向量,然后利用高斯超向量构造SVM分类器的核函数,以及语音信号和噪声信 号对应的SVM模型;使用构造好的核函数和SVM模型构造得到SVM分类器; 第二步:待检测信号是分块后的远端和近端信号,使用构造好的SVM分类器对本分块远 端信号进行VAD判决;VAD表示语音活动性检测; 对本分块远端信号进行特征值提取和GMM训练,构造高斯超向量,然后本分块远端信号 对应的高斯超向量输入到构造好的SVM分类器中进行判决;如果判断结果为噪声,表示无语 音,则停止滤波器更新和滤波,直接输出近端语音信号,否则说明远端有语音,进行下一步 的双端通话判决; 第三步:判断系统是否属于双端通话状态; 计算远端信号和误差信号的归一化互相关ΙΧΕα;比较归一化互相关ξχΕ(Χ和设置的门限 TXECC,当|XEGG<TXEGG时,系统处于双端通话状态,停止滤波器系数更新,对近端信号进行滤 波;否则,近端无语音,根据远端信号进行滤波器系数更新和滤波。2. 根据权利要求1所述的一种适用于回声消除系统的语音状态检测方法,其特征在于, 所述的第一步构造SVM分类器,包括如下步骤: 步骤S101:对噪声信号训练样本和语音信号训练样本进行特征值提取;所采用的特征 值是Mel倒谱系数MFCC; MFCC的提取过程是:对信号进行预加重、分块及加窗处理,将加窗后的分块经过快速傅 里叶变换FFT求出每一分块的频谱参数;将每一分块的频谱参数通过一组由K个三角形带通 滤波器所组成的Mel刻度滤波器,并对每个频带的输出取对数,获得对数频谱;设K个带通滤 波器的编号从〇到K-1,则第i个分块通过编号k的带通滤波器后对应得到的对数频谱为Si (k),第i个分块的MFCC的第1阶参数nu(l)为:(1) 其中,L为提取的MFCC的总阶数; 步骤S102:生成噪声信号训练样本和语音信号训练样本的高斯超向量; 分别利用噪声信号训练样本和语音信号训练样本的MFCC参数建立噪声信号和语音信 号对应的高斯混合模型; 对某一分块,N阶高斯混合模型g(x)表示为:其中,X是训练样本本分块的MFCC参数构成的L维特征向量,Pi(x)为高斯混合模型的第i 个高斯分量,为第i个高斯分量的加权因子是第i个高斯分量的协方差矩阵,μι是第i 个高斯分量的均值向量; 高斯混合模型g(x)进一步表示为⑷= 疋凡,4);N(.)表示高斯概率密度函 i-1 数; 采用最大期望算法进行高斯混合模型参数的更新,设最后得到语音信号训练样本的高 斯混合模型为g(s),其中各高斯分量的均值向量为/<,長%…,/4表示语音信号;最后得到 的噪声信号训练样本的高斯混合模型为g(n),其中各高斯分量的均值向量为 η表示噪声信号;利用建立好的高斯混合模型构造语音信号训练样本和噪声信号训练样本 的尚斯超向量ms和Π?η分别为:步骤S103:利用构造好的高斯超向量构造SVM分类器; 分别利用高斯超向量施和!^建立噪声信号和语音信号对应的SVM模型; 利用高斯超向量mn和ms构造核函数K (η,s)如下:确定核函数、语音信号的SVM模型和噪声信号的SVM,得到SVM分类器。3. 根据权利要求1或2所述的一种适用于回声消除系统的语音状态检测方法,其特征在 于,所述的第三步中,计算误差信号的方法是:将本分块远端信号与自适应滤波器系数进行 卷积得到估计回声信号,误差信号为本分块近端信号与估计回声信号之差。4. 根据权利要求1或2所述的一种适用于回声消除系统的语音状态检测方法,其特征在 于,所述的第三步中,根据下面公式计算远端信号和误差信号的归一化互相关Ixecc:其中,k表示频点,X(k)为远端信号频谱,E(k)为误差信号频谱。5. 根据权利要求1或2所述的一种适用于回声消除系统的语音状态检测方法,其特征在 于,所述的第三步中,设置的门限Txecc为0.9到1之间的值,并根据判决结果进行实时更新。
【文档编号】G10L25/84GK105957520SQ201610519040
【公开日】2016年9月21日
【申请日】2016年7月4日
【发明人】王珂, 明萌, 纪红, 李曦, 张鹤立
【申请人】北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1