基于卡尔曼滤波的自适应去混响方法转让专利

申请号 : CN201810102375.7

文献号 : CN110111802A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 向腾卢晶

申请人 : 南京大学

摘要 :

本发明公开了一种基于卡尔曼滤波的自适应去混响方法。该方法包括以下步骤:(1)利用传声器获取信号,然后通过AD转换将模拟信号转换为数字信号;(2)对信号做短时傅里叶变换后,不同频带内的信号单独地利用卡尔曼滤波进行去混响;同时,采用声源定位方法判断声源位置是否改变,若声源位置发生改变,则将卡尔曼滤波的状态预测误差向量协方差矩阵重置为初始值;(3)将步骤2经卡尔曼滤波输出的时-频域去混响信号通过短时傅里叶变换,得到时域去混响信号。本发明的方法能够有效提升卡尔曼滤波在声源突变场景下的去混响的性能。

权利要求 :

1.基于卡尔曼滤波的自适应去混响方法,其特征在于,包括以下步骤:步骤1,利用传声器获取信号,然后通过AD转换将模拟信号转换为数字信号;

步骤2,对信号做短时傅里叶变换后,不同频带内的信号单独地利用卡尔曼滤波进行去混响;同时,采用声源定位方法判断声源位置是否改变,若声源位置发生改变,则将卡尔曼滤波的状态预测误差向量协方差矩阵K(n,k)重置为初始值K(0),其中,(n,k)代表第n帧第k个频带;

步骤3,将步骤2经卡尔曼滤波输出的时-频域去混响信号通过短时傅里叶逆变换,得到时域的去混响信号。

2.根据权利要求1所述的基于卡尔曼滤波的自适应去混响方法,其特征在于,所述传声器采用两个以上,并以线阵列的形式布放来采集信号。

3.根据权利要求1所述的基于卡尔曼滤波的自适应去混响方法,其特征在于,所述步骤

2中,利用卡尔曼滤波进行去混响时,先对参数进行估计及初始化,具体如下:

1)期望信号的方差σ2(n,k)通过下面的方法近似估计:σ2(n,k)=βσ2(n,k)+(1-β)|x(1)(n,k)|2,式中,β是加权平滑因子,x(1)(n,k)是第一个传声器采集到的信号;

2)误差向量协方差矩阵K(n,k)使用下列的方法初始化:K(0)=blockdiag{IM×M,γ-1IM×M,γ-2IM×M…},式中,K(0)是误差向量协方差矩阵K(n,k)的初始值,blockdiag{·}表示构造块对角矩阵,IM×M表示维度为M×M的单位矩阵,γ为一个常数权重因子;

3)状态转移矩阵F使用固定的状态转移矩阵:

F=(1-α)1/2I,

式中,α是一个常数,I为单位矩阵;

4)噪声协方差矩阵Q(n,k)设为定值:

Q(n,k)=αK(0)。

4.根据权利要求1所述的基于卡尔曼滤波的自适应去混响方法,其特征在于,所述声源定位方法中,根据下式估计声源方位:其中, 代表各个传声器接收到的信号之间的泛化互相关函数, 为声源信号到第m个传声器的时延,为声源相对于传声器阵列的方位角,Xm(n,k)是n时刻第m个传声器接收到的第k个频带的信号,K为快速傅里叶变换的点数,M是传声器的个数;

当方位角 取 使得函数 取得最大值时, 即为声源方位的估计结果,即:

说明书 :

基于卡尔曼滤波的自适应去混响方法

技术领域

[0001] 本发明属于语音增强的领域,具体涉及一种基于卡尔曼滤波的自适应去混响方法。

背景技术

[0002] 使用传声器在房间内采集到的说话人的语音信号时,会同时采集到房间壁面的反射声,这些反射声被称为混响。当混响时间较长时,混响会影响语音通信中语音的清晰度,也会降低语音识别系统的识别率。
[0003] 谱减法可以用来实现语音去混响(Lebart K,Boucher J M,Denbigh P N.A New Method Based on Spectral Subtraction for Speech Dereverberation[J].Acta Acustica United with Acustica,2001,87(3):359-366.)。中国专利CN102750956A中,利用短时傅里叶变换将单通道语音信号变换到时-频域,然后使用谱减法将当前帧的语音信号功率谱与估计的晚期混响功率谱相减,得到去混响信号的功率谱,最后通过短时傅里叶逆变换得到时域的去混响语音信号。然而,这种基于谱减法的去混响方法对语音音质有较大程度的损伤。
[0004] 卡尔曼滤波是常用的自适应滤波方法。将卡尔曼滤波与多通道预测模型相结合,可以用来作为自适应去混响的方法。文献(Braun  S,Habets  E  A  P.Online Dereverberation for Dynamic Scenarios Using a Kalman Filter With an Autoregressive Model[J].IEEE Signal Processing Letters,2016,23(12):1741-1745.)指出卡尔曼滤波具有较好的去混响性能。然而,由于该文中使用了单位矩阵作为状态转移矩阵,在声源位置发生突变之后,卡尔曼滤波的性能明显下降。文献(T.Dietzen,S.Doclo,A.Spriet,W.Tirry,M.Moonen,and T.van Waterschoot,“Low-Complexity Kalman filter for multi-channel linear-prediction-based blind speech dereverberation,”in 2017IEEE Workshop on Applications of Signal Processing to Audio and Acoustics(WASPAA),2017,pp.284–288.)使用了一个小于1的常数乘单位矩阵作为状态转移矩阵,没有出现声源位置改变前后算法性能相差显著的现象,但是算法总体的性能较差。
[0005] 在实际的应用中,说话者在语音间隙的移动或者说话者的改变都会导致声源位置发生突变的场景的产生。因此,使用卡尔曼滤波去混响时,需要解决好声源位置发生突变带来的问题。

发明内容

[0006] 现有技术在声源位置发生突变的场景中使用卡尔曼滤波的方法去混响时,难以保证在声源位置发生突变后算法具有较快的收敛速度的同时,还具有较好的稳态性能。本发明提出了一种基于卡尔曼滤波实现自适应去混响的方法,能够使得算法有效应对声源位置突变的场景,并保证算法在声源位置发生改变后的性能。
[0007] 本发明采用的技术方案为:
[0008] 基于卡尔曼滤波的自适应去混响方法,包括以下步骤:
[0009] 步骤1,利用传声器获取信号,然后通过AD转换将模拟信号转换为数字信号;
[0010] 步骤2,对信号做短时傅里叶变换后,不同频带内的信号单独地利用卡尔曼滤波进行去混响;同时,采用声源定位方法判断声源位置是否改变,若声源位置发生改变,则将卡尔曼滤波的状态预测误差向量协方差矩阵K(n,k)重置为初始值K(0),其中,(n,k)代表第n帧第k个频带;
[0011] 步骤3,将步骤2经卡尔曼滤波输出的时-频域去混响信号通过短时傅里叶逆变换,得到时域去混响信号。
[0012] 本发明将声源定位方法与卡尔曼滤波结合,实现了一种在声源位置发生突变的场景下的自适应去混响方法。该方法能够有效提升卡尔曼滤波在声源突变场景下的去混响的性能。

附图说明

[0013] 图1是本发明实施例中传声器阵列的示意图;其中,1-传声器,为声源相对传声器阵列的方位角。
[0014] 图2是本发明实施例中传声器阵列和声源相对位置示意图;其中,2-声源。
[0015] 图3是本发明结合声源定位方法的卡尔曼滤波处理流程图。
[0016] 图4是本发明方法的三通道输入处理流程图。
[0017] 图5是现有的卡尔曼滤波与本发明改进后的方法去混响的STOI评分曲线对比图。
[0018] 图6是本发明实施例中声源定位及声源位置突变判定结果示意图。

具体实施方式

[0019] 本发明改进的卡尔曼滤波的自适应去混响方法主要包括以下几个部分:
[0020] 1、信号获取
[0021] 将两个以上的传声器1以线阵列的形式布放来采集声源2的信号,然后通过AD转换将模拟信号转换为数字信号。
[0022] 2、利用卡尔曼滤波去混响
[0023] 1)对信号做短时傅里叶变换
[0024] 若第m个传声器采集到的信号为x(m)(t),对其进行短时傅里叶变换,变换到时-频域,第n帧第k个频带的信号表示为x(m)(n,k)。
[0025] 2)卡尔曼滤波迭代公式
[0026] 不同频带内的信号被视为独立的信号,并单独地进行去混响处理。本发明实施例中仅关注第一个传声器采集到的信号的去混响流程。若第k个频带n时刻的滤波器系数用w(n,k)表示,那么去混响的期望信号d(1)(t)在时-频域内第n帧第k个频带的信号d(1)(n,k)可以通过多通道线性预测表示为
[0027] d(1)(n,k)=x(1)(n,k)-xT(n-D,k)w(n,k),   (1)
[0028] 式中,(·)T表示转置,
[0029]
[0030] D为预测延时,M是传声器的个数,Lw为预测阶数。
[0031] 将滤波器系数w(n,k)视为卡尔曼理论中的状态向量,x(1)(n,k)视为观测值,x(n-D,k)视为测量矩阵,d(1)(n,k)视为测量噪声。那么卡尔曼滤波理论中的状态方程可以表示为:
[0032] w(n+1,k)=Fw(n,k)+ω(n,k),(3)
[0033] 式中,F为状态转移矩阵,ω(n,k)是过程噪声。测量方程可以表示为:
[0034]
[0035] 因此,卡尔曼滤波的迭代公式为:
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042] (5)-(10)式中,K(n,k)为预测系数的误差向量的协方差矩阵;σ2(n,k)是期望信号的方差; 和“A+”分别表示参数A的预测值和预测修正值,Q(n,k)为过程噪声的协方差矩阵,g(n,k)被称为卡尔曼增益。
[0043] 3)卡尔曼滤波的参数估计及初始化
[0044] A.期望信号的方差估计:期望信号的方差可以通过下面的方法近似估计:
[0045] σ2(n,k)=βσ2(n,k)+(1-β)|x(1)(n,k)|2,   (11)
[0046] 式中,β是加权平滑因子。
[0047] B.误差向量协方差矩阵初始化:预测系数的误差向量协方差矩阵K(n,k)的初始化值K(0)与算法初始性能密切相关。本发明实施例使用下列的初始化方法:
[0048] K(0)=blockdiag{IM×M,γ-1IM×M,γ-2IM×M…}   (12)
[0049] 式中,blockdiag{·}表示构造块对角矩阵,IM×M表示维度为M×M的单位矩阵,γ为一个常数权重因子。
[0050] C.状态转移矩阵:由于声源2的位置大部分时刻不会发生改变,故需要使得状态转移矩阵非常接近单位矩阵才能保证卡尔曼滤波去混响的性能。本发明实施例中,使用固定的状态转移矩阵:
[0051] F=(1-α)1/2I,   (13)
[0052] 式中,α是一个常数。
[0053] D.噪声协方差矩阵估计:本发明实施例中,噪声的协方差矩阵被设为定值:
[0054] Q(n,k)=αK(0),   (14)
[0055] 式中,K(0)是误差向量协方差矩阵K(n,k)的初始值。
[0056] 3、声源定位方法
[0057] 本发明实施例中声源定位方法采用PHAT加权的GCC(Generalized  Cross Correlation,泛化互相关)算法。各个传声器1接收到的信号之间的泛化互相关函数为:
[0058]
[0059] 式中,为声源相对于传声器阵列的方位角; 为声源信号到第m个传声器的时延,可以表示为
[0060]
[0061] c0是空气中的声速,(xm,ym)是第m个传声器的坐标。Xm(n,k)是n时刻第m个传声器接收到的第k个频带的信号,K为快速傅里叶变换(FFT)的点数,M为传声器的个数。值得注意的是,Xm(n,k)是通过多帧信号平均得到的信号频谱。
[0062] 当方位角 取 使得函数 取得最大值时, 即为声源方位的估计结果:
[0063]
[0064] 4、结合声源定位的卡尔曼滤波去混响算法
[0065] 在卡尔曼滤波中,若将转移矩阵设为
[0066] F=λ-1/2I,   (18)为了保证算法在声源位置不发生改变的稳态情况下具有良好的性能,通常λ会取非常接近1的值。
[0067] 在忽略过程噪声的情况下,协方差矩阵的迭代公式可以写为:
[0068]
[0069] 在声源位置发生突变之后,算法会进入重新收敛的过程。假设n+1时刻为声源2位置改变之后的时间点,那么K(n,k)的值可以视为声源2位置突变之后重新收敛过程中协方差矩阵的初始值。由于λ非常接近1,故不适当的协方差矩阵初始值会在很长一段时间内影响卡尔曼滤波的收敛结果,导致声源2位置发生改变之后算法性能下降。
[0070] 因此,本发明将声源定位方法与卡尔曼滤波结合,利用声源定位算法检测声源位置,利用卡尔曼滤波实现去混响。当声源定位算法检测到声源位置发生改变时,卡尔曼滤波的参数K(n,k)将被重置为K(0)。
[0071] 下面结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0072] 1、测试样本及客观评价标准
[0073] 本实施例的测试样本的干净语音来源于TIMIT语音库,混响语音通过在混响时间约为1.2s的房间内录制得到。录制混响语音时,使用扬声器播放干净语音。参见图1和2,本实施例使用三个传声器1采集信号,传声器1以间隔为6cm排列成线阵列,距地面1.5m,离声源2的距离为1.5m。扬声器与阵列处于同一水平面,分别放置在阵列的两侧录制两组数据,通过后期拼接为在10s处声源位置发生突变的样本,共64段不同语音。同时,在距离阵列2m左右的地方放置了一个-20dB的干扰声源。信号的采样频率为16000Hz。
[0074] 本发明采用STOI(Short-Time Objective Intelligibility)评分作为客观评价标准。计算STOI评分时,以干净语音作为参考信号,以2s为帧长0.5s为帧移逐帧计算。最后将64个不同的语音样本的平均评分作为最终的STOI评分结果。
[0075] 2、参数设置
[0076] 1)卡尔曼滤波
[0077] 短时傅里叶变换使用汉宁窗,窗长为512(32ms),帧移为128(8ms),预测延时为2,预测阶数为40。方差估计的加权平滑因子β为0.6。本实施例对比了设置不同的转移矩阵时卡尔曼滤波的性能,α分别设为-60dB和-45dB。K(0)的初始值中,γ取1.5.
[0078] 2)声源定位
[0079] 在声源定位算法中,FFT长度为2048(128ms),FFT的帧移为512(32ms),用来定位的数据帧的帧长为FFT长度的5倍。定位扫描时,在0–180°范围内每隔3°取一个值。
[0080] 3)声源位置改变的判定
[0081] 由于较强的混响的影响,声源定位结果会有一些偏差。故需要设置合理的阈值对声源位置是否发生改变进行判定。本实施例中设置定位偏差的阈值为10°,即当当前声源定位结果与之前稳态情况下定位结果的平均值相差10°时,判定为声源位置突变,当出现3帧数据以上定位结果判定为声源位置突变时,则最终判定声源位置发生了突变,否则认为是定位误差。当声源位置发生改变时,判定程序将声源位置改变的信息返回给卡尔曼滤波参数重置的程序,同时声源位置改变的判定程序重置。
[0082] 图6是本实施例声源定位的结果,图中“*”表示程序判定的声源位置发生改变的时刻。
[0083] 3、方法的具体实现流程
[0084] 参见图3和4,按照(12)(13)(14)式和上述的参数设置对算法初始化,建立声源定位时域信号缓存,用于缓存在声源定位中使用的数据,建立卡尔曼滤波时-域信号缓存,用于缓存在卡尔曼滤波中使用的数据,对于任意时刻,按照下列方式计算:
[0085] 1)获取新的一帧数据,更新用于声源定位的时信号缓存,对新一帧数据加窗进行短时傅里叶变换,更新时-频域信号缓存;
[0086] 2)按照声源定位中的参数设置,对时信号缓存数据分帧,加窗,计算多帧信号平均的频谱。根据(16)式估计声源方位。
[0087] 3)按照上述声源位置改变判定方案的参数设置对声源位置进行检测。
[0088] 4)对于所有频带,单独按下列的方式计算:
[0089] 41)若步骤3)中判定声源位置发生了改变,则将卡尔曼滤波的参数K(n,[0090] k)置为K(0);
[0091] 42)选取一定的窗函数、帧长、帧移,对信号做短时傅里叶变换,更新卡尔曼滤波时-频域信号缓存,按照(2)式排列为信号向量;
[0092] 43)用(5)(6)两式分别对滤波器系数和协方差矩阵进行一步预测,得到预测值和
[0093] 44)用(7)式计算时-频域的期望信号d(1)(n,k),然后使用式(11)估计期望信号的方差;
[0094] 45)使用(8)式计算卡尔曼增益g(n,k);
[0095] 46)用(9)(10)两式分别对预测的滤波器系数 和协方差矩阵
[0096] 进行修正,得到修正的预测值w+(n,k)和K+(n,k);
[0097] 5)将时-频域的期望信号d(1)(n,k)通过短时傅里叶逆变换合成时域期望信号d(1)(t)。
[0098] 为了体现本发明方法在声源突变场景下去混响的性能,本实施例对现有卡尔曼滤波和本发明改进后的方法进行对比,图5给出了现有卡尔曼滤波与本发明改进后的STOI评分曲线对比图,图中“REV.”表示混响语音,“DRV.”表示去混响语音,“KF”代表现有的卡尔曼滤波,“KF with DOA”代表改进的方法。从图5的STOI评分曲线可以看出,本发明改进后的卡尔曼滤波在声源位置发生突变时具有更快的收敛速度,能够在较短时间内达到较好的稳态性能。