一种通过多声源活动检测来改进双通道盲信号分离的方法与流程

文档序号:15562123发布日期:2018-09-29 02:29阅读:347来源:国知局

本发明涉及盲信号分离的技术领域,具体涉及一种基于双通道系统的通过多声源活动检测来改进盲信号分离性能的方法,在基于trinicon(triple-nicaforconvolutivemixtures)结构的频域盲信号分离过程中加入多声源活动检测的算法。



背景技术:

分离未知时间序列的卷积混合的问题在多个领域都有重要应用。一个重要的例子是所谓的鸡尾酒会问题,即将单个语音信号在混响的声学环境中从多个说话者的混合声中提取出来。由于混响的存在,这个分离问题的源信号在被传声器阵列采集前,先通过一个线性多输入多输出(mimo)系统进行滤波。盲信号分离(bss)是利用传声器阵列,不需要先验信息,基于不同声源信号相互统计独立的基本假设,即可将多个声源的信号进行分离的算法(s.makino,h.sawada,andt.w.lee,blindspeechseparation.springernetherlands,2007,pp.169-192.)。

基于独立分量分析(ica)的盲信号分离是从干扰语音信号中提取所需语音信号的有效方法。但是频域ica方法面临各频点排序模糊的问题,这需要基于频率间相关性信息的适当补充修复机制来修正。目前,该问题可以通过将ica扩展到多变量情况,进行独立矢量分析(iva)算法来解决,或者利用基于宽带标准的trinicon方案来解决。trinicon方法可以使用二阶统计量(sos)在频域中有效地实现。

频域的离线trinicon方法通常在声源进行连续混合时具有最佳性能。在实际应用中,语音信号有时会间断检错或者稀疏地进行混合,而离线的算法不考虑语音的活动状态,将每一段语音都平等地计入计算中,这样会导致性能恶化,尤其是当各个声源处于传声器阵列中线的一侧时,需要生成非因果滤波器。



技术实现要素:

本发明的目的是为了提高频域trinicon算法在间断交错混合及稀疏混合的情景下的性能,提供一种通过多声源活动检测来改进双通道盲信号分离的方法。

本发明为解决上述技术问题采取的技术方案是:

一种通过多声源活动检测来改进双通道盲信号分离的方法,包括如下步骤:

(1)对频域trinicon算法中的滤波器矩阵参数进行初始化;

(2)传声器接收到的声源信号输入双通道系统,将每个通道的输入信号分块,再用短时傅立叶变换将每一块的输入信号变换到频域;

(3)由y(k)x(k)w(k)计算每一块的输出信号,其中y(k)x(k)w(k)分别为频域的输出信号、频域的输入信号及频域的滤波器系数矩阵,上标(k)为短时离散傅立叶变换中频点的序号;然后计算各输出信号的功率谱密度矩阵φyy;

(4)按照自然梯度下降法更新滤波器系数,使用逆短时傅立叶变换将滤波器系数矩阵变换回时域并将时域的滤波器系数大于滤波器长度减1的部分置零;

(5)使用步骤(4)得到的滤波器系数,重复第(3)和第(4)步骤,直至达到最大迭代次数;

(6)得到初步的滤波器系数收敛结果,利用重叠保留法对输入信号进行卷积得到第一通道的初步输出信号和第二通道的初步输出信号;

(7)先根据以下两个公式分别计算两个通道中各块的输出和输入功率:

其中ex(m)为输入功率,eyp(m)为初步输出信号的功率,m为信号分块的序号,ku和kl分别表示计入计算的频点的上限和下限,下标p是输出通道的序号,下标1和2分别代表第一通道和第二通道;

然后对每一块信号的活动状态进行判断,并得到修正的权重函数;

(8)根据步骤(1)重新对权重函数进行初始化,修正后的梯度表达式为:

其中

nsig是整个信号的块数,εp(m)是修正权重,当第m块中第p个声源的状态为活动时,εp(m)等于1,否则,εp(m)等于0;

根据以上修正后的梯度表达式,重复第(3)和第(4)步骤,即重新进行一次迭代,这次迭代中只用第一通道要抑制的目标声源活动的数据更新第一通道的滤波器系数,只用第二通道要抑制的目标声源活动的数据更新第二通道的滤波器系数,直到达到最大迭代次数;

(9)得到最终的滤波器系数收敛结果,利用重叠保留法对输入信号进行卷积得到两个通道的最终输出信号。

本发明的检测方法可近似识别每个源的活动,提取出声源各自的有效活动帧并根据声源活动检测的结果对滤波器更新过程进行调整,能有效地改善在间断交错混合及稀疏混合的场景中trinicon方法的分离性能。

附图说明

图1为本发明实施例中的信号模型图:(a)仅需要因果滤波器,(b)需要因果和非因果滤波器。

图2为本发明实施例中多声源活动检测的流程图。

图3为本发明加入多声源活动检测的频域盲信号分离算法的流程图。

图4为本发明实施例中最终的优化滤波器的空间响应图:(a)普通频域trinicon输出通道1,(b)普通频域trinicon输出通道2,(c)加入多声源活动检测的频域trinicon输出通道1,(d)加入多声源活动检测的频域trinicon输出通道2。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

1、双通道频域trinicon算法

本发明适用于双通道的传声器阵列系统,假设声源个数为一个或两个,算法的信号模型如图1(只有一个信号时则模型中两个声源只有一个发声)。

trinicon算法的代价函数为:

其中,是第q通道的d维的多元概率密函数的估计,是所有输出通道(这里q=2)的联合概率密度的估计,m是块序号,j=0,…,n-1长度为n的块中时移的序号,β(i,m)是一个权重函数,根据归一化。

使用sos的trinicon的代价函数表示为(h.buchner,r.aichner,andw.kellermann,"ageneralizationofblindsourceseparationalgorithmsforconvolutivemixturesbasedonsecond-orderstatistics,"ieeetransactionsonspeech&audioprocessing,vol.13,no.1,pp.120-134,2004):

其中bdiag操作是将一个分块矩阵的非对角子矩阵都置零。

滤波器系数w根据自然梯度下降的方法来进行更新:

其中

jiter是迭代的次数,μ为步长。

在频域的方法中,滤波器矩阵和信号分别表示为:

其中l是滤波器的长度,f4l×4l是傅立叶变换矩阵。带下划线的变量为频域的变量。

输出信号的功率谱密度矩阵φyy和输入信号的功率谱密度矩阵φxx分别表示为

其中不同维度的约束矩阵g的作用是防止各个频率点之间的去耦以避免频域盲信号分离中的排序模糊问题和圆周卷积效应。应用到频域计算时,将g近似为单位阵,则可以在每个频点上单独进行迭代(式中省略了块序号m):

其中上标(k)是stft中频率点的序号。每步迭代完成后,分界矩阵必须转换回时域,并将l>l-1的wqq,l的值置零,以避免圆周卷积效应。

2、加入多声源活动检测的双通道频域trinicon方法

在离线的trinicon方法中,当信号不是连续混合,尤其是当无语音段或者只有一个声源活动的时间较长时,对功率谱密度矩阵φ的估计会有偏差,从而错误地引导了分离系统收敛的方向,导致语音分离的效果不佳。这种情况在图1(b)所示的需要非因果滤波器的状况下更加明显。

本发明将离线trinicono执行两次,并使用第一次的收敛的初步结果来进行一个粗糙的多声源活动估计,并根据估计的结果调整第二次的迭代过程,从而得到改进的语音分离效果。对于需要非因果滤波器的情况,一般的算法采用一个位移l/2的单位冲激响应来进行初始化,但是在频域算法中这种初始化的方法收敛特性较差,本实施例采用的方法是采用一个位移点数略微大于两个传声器之间的最大声程差的单位冲激响应来对滤波器进行初始化。

首先要计算各块中输入和输出的功率:

其中ku和kl是计入计算的频点的上下限(下标u是upperbound的缩写,表示上限,下标l是lowerbound的缩写,表示下限),可以根据信号的频谱特性自行调整以更好地估计信号功率和节省计算量。需要注意的是在低频段盲信号分离的效果一般很差,所以低频段一般不计入计算。

计算了各个通道的输入和输出功率后,根据第一次处理前后的功率对比,可以对各块中两个声源的活动情况进行一个大致的判断。具体的判断步骤见图2。假设在输出通道y1中声源s1被抑制。首先如果输入信号的功率小于设定的最低功率阈值emin(该阈值可以通过mcra等方法估计的平稳噪声功率来确定),则判断为两个声源都不发声,并设定ε1(m)=0,ε2(m)=0。如果功率大于阈值,则判断为至少有一个声源发声,进入下一步判断:若通道y1处理前后的功率比大于通道y2处理前后的功率比乘上系数λ,则认为声源s1不活动,声源s2处于活动状态,并设定ε1(m)=0,ε2(m)=1;若通道y2处理前后的功率比大于通道y1处理前后的功率比乘上系数λ,则认为声源s2不活动,声源s1处于活动状态,并设定ε1(m)=1,ε2(m)=0;如果以上情况都不符合,则认为两个声源都活动,并设定ε1(m)=1,ε2(m)=1。其中系数λ可以根据具体声源和使用场景进行调整,一般是大于1的实数。

对声源的活动状态进行判断后,式(9)的梯度被修正为

其中

式中nsig是整个信号的块数,εp(m)是修正权重,当第m块中第p个声源的状态为活动时,εp(m)等于1,否则,εp(m)等于0。

使用修正后的梯度表达式(12)来更新系数,即只使用声源s1活动的数据来更新输出通道y1的滤波器,只使用使用声源s2活动的数据来更新输出通道y2的滤波器。这样可选取有效的帧分别对两个滤波器进行更新,改善收敛性能,有效地提高语音分离的效果。需要注意的是上述的多声源活动检测在初始的信扰比为10db以下时会比较准确,但也并不是完全精确的,在本实施例中只需要大致地判断各个声源活动的时间段即可。

调整后整个算法的流程如图3。使用传声器接收到的输入信号x1,x2,先使用一般的频域trinicon方法进行一次语音分离,然后使用第一次频域trinicon的分离结果,按前文所述的多声源活动检测方式,确定两个声源各自的活动时间段;接着以两个声源各自的活动时间段分别更新两个滤波器系数,进行调整后的第二次频域trinicon的语音分离,得到最终的输出信号y1和y2。

图4展示了在一组仿真数据中使用普通频域trinicon方法和采用加入了多声源活动检测的频域trinicon方法各自收敛得到的滤波器的空间响应。声源位置为-70度和-15度,房间混响时间0.2秒,传声器阵列单元间距10厘米。

可以看到加入了多声源活动检测后,滤波器优化得到的谷点更加准确,且深度更深,对声源的抑制更加明显。

表1给出了多组数据的仿真结果,对比了不同情景下本发明对分离效果的提升。仿真的输入信号由纯净的语音信号经过imagemodel工具声生成的房间冲激响应卷积得到。测试的指标有信号干扰比(signaltointerferenceratio,sir)和信号失真比(signaltodistortionratio,sdr),测试工具为bsseval。表中给出的评分为4次实验下的两个通道的评分的平均。sir越高,说明干扰声被抑制得越好,目标语音更纯净;sdr越高,说明输出的语音对比纯净语音的失真越小。

可以看到在大部分情况下本发明对分离效果的提升是非常明显的,sir的提升可以达到5db至10db以上,同时可以保持音质不严重失真。

表1不同情景下普通方法和本发明处理结果的sir和sdr评分

实施例

1、测试条件:

设定房间大小为6m×6m×4m,混响时间为250ms,传声器阵列单元间距为10cm,放置于靠近房间中心的位置。声源离阵列中心1.5m,分别位于-70度和-15度方向。两个声源的纯净信号来自timit数据库,各自发声的时长占录制信号总时长的60%,其中有约总时长三分之一的时长两个声源同时发声。两个声源的信号的信扰比(sir)设置为0db,即发声功率基本相同。另外,整个信号中加入了比声源信号低30db的白噪声。信号的采样频率为16000hz。使用imagemodel根据上述条件生成房间冲激响应并用其与纯净语音卷积得到输入信号。

2、算法流程:

1)算法初始化:将(5)式中的w11、w22设为位移点数为10个点的移位单位冲激响应(即w11,10=1,其余值为0),w12、w21设为零矢量;步长μ设为0.02,最大迭代次数设置为200,滤波器长度l设置为1024。帧移设为l的一半。权重函数设置为1/nsig。

2)输入传声器接收到的信号x1、x2,按照(6)式将输入信号分成长度为4l,帧移为l/2的块,并用短时傅立叶变换变换到频域。

3)由y(k)x(k)w(k)计算每一块的输出信号,并根据(7)式计算输出信号的功率谱密度矩阵φyy。

4)根据(3)式和(9)式,按照自然梯度下降法更新滤波器系数w,使用逆短时傅立叶变换变换回时域并将w大于l-1的部分置零。

5)使用更新得到的滤波器系数w,重复第3)步和第4)步,直至达到最大迭代次数。

6)得到初步的滤波器系数收敛结果w,利用重叠保留法对输入信号进行卷积得到两个通道的初步输出信号y10和y20。

7)根据(10)式及(11)式分别计算两个通道各块的输出和输入功率,并根据图2的流程,对每一块信号的活动状态进行判断,并得到修正的权重函数b(m)。

8)根据步骤1)重新对权重函数进行初始化,将步骤4)中的(9)式改为(12)式,并重复第3)步和第4)步,即重新进行一次迭代,这次迭代中只用声源s1活动的数据更新通道y1的滤波器系数,只用声源s2活动的数据更新通道y2的滤波器系数,直到达到最大迭代次数。

9)得到最终的滤波器系数收敛结果w,利用重叠保留法对输入信号进行卷积得到最终的两个通道的输出信号y1和y2。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1