在远场语音识别场景,不可避免的会遇到同时有多个人说话的场景(鸡尾酒效应),也可能会遇到周围有噪声源的情景(电器,风扇等),通过前面章节的方法基于单个麦克风并不能获得很好的性能,基于多通道的声源分离在现今也是广泛被采用的技术. 和基于单麦克的语音增强技术相比,多通道语音增强技术利用阵列带来的空间信息使得在降噪性能提升的同时语音失真度更小。基于DD的方法相较ML在估计语音存在概率SPP具有更大的优势。
声源分离技术主要分为三类:
1.波束形成技术(BF, beamforming) 2.盲源分离技术(BSS, blind source seperation) 3.时频掩码技术(T-F masking, time-frequency masking)
以上的单个方法是可以实现声源分离,并增强信噪比(SNR)的,但是也有将上述类别融合的方法.本偏文章主要是阐述各个方法的基本思想和基本原理,了解了这些后,可以看第十一章,将BF和T-F技术集合在一起的一个声源分离的c代码实例.
10.1波束形成技术
为了提高语音识别的准确性,在做语音增强时引起的语音失真应尽量的小。随之而来的就有多种方法,SDW-MWF(speech distortion weighted multichannel wiener filter), MVDR(minimum variance distortion less response),以及GSC(generalized sidelobe canceller)算法,这些算法依赖于PSD(power spectral density)估计。在这些方法上还有一些改进算法,如:CGMM-MVDR算法。
在正式的波束形成方法之前,先补充一下频域处理的一些点: 1.FFT时的重叠保留法2.FFT的重叠相加法3.如果要回顾FFT3.子带技术
阵元的空间分布以及波束形成的算法对最终的结果都会有影响.
- 线阵模型 线阵模型就是麦克风在同一条直线上。下面绘制的是8麦克,间距1cm时的直角坐标和极坐标图,在直角坐标系中,横坐标是-90度到90度,纵坐标是阵列增益方向图,最高点在横坐标是0度位置,相比第二个峰值约大13dB左右。由极坐标同样可以看出,一圈是360度,从内到外同心圆是增益等高线。从图中依然可以看到增益,另外还有一个指标也可以在这两张图体现出来,即空间分辨率。从直角坐标可以看出约-8~+8度,从这个角度进来的信号相对于其它角度进来的信号会全部被放大约10dB,如果这个角度有多个人声或者离人很近的地方有噪声,则会降低SNR。解决方法是根据使用场景设计合适的空间角分辨率。
图10.1线阵直角和极坐标增益图
阵元对天线方向图的影响 3个麦克可达到的SNR在6dB左右,空间分辨率(3dB带宽)比8麦克大。此处8麦克空域混叠,导致增益下降。
可以看到,图中d的单位是米,即3阵元间距在0.75cm,1cm,以及1.5cm时增益图。即间距越大,可达到的增益越大,但其空间分辨率变低。增益差值超过一倍。
阵元对频率影响综合来说,3麦克需要考虑麦克风之间间距,输入信号空间分辨率,以及使用场景。间距越大其指向的方向信号增益会越大,但空间分辨率随之降低,线阵模型可得到增益约6dB左右,圆阵增益也可达到这个指标.
声场
对于中高音,声音在室内以反射和散射为主,这一过程不断重复和往复直到能量变成零(吸收和传输损耗),这一过程约有16次之多。对于低音室内更像一个谐振腔,波长满足谐振条件的声波将会被放大,随着说话位置的位置变化,增强和对消的低音频率也会变化。
Schroeder frequency: 室内声音的谐振腔频率和反射/散射频率的分界点。对于居家室内场景该频率一般在100Hz~200Hz之间,在室内播放一个谐振频率的声波,人在室内不同的位置听到的音量差异是比较明显的,而对于中高音差别并不明显。
散射噪声场: 散射噪声场中,噪声能量向各个方向传播的概率是相等的。 包含若干个来自方向上均匀分布的相位随机的平面波,
假设空间中任意一点的声波压强表达式如下:p(t,r1→)=limn→∞1n√∑ni=1Aicos(ω+φi)(10.0)(10.0)p(t,r1→)=limn→∞1n∑i=1nAicos(ω+φi)r⃗ 1r→1位置向量,参考点可以任意选取,则另外一点的声压表达时如下:p(t,r2→)=limn→∞1n√∑ni=1Aicos(ω+φi+(r⃗ 2−r⃗ 1)⋅k⃗ i)(10.1)(10.1)p(t,r2→)=limn→∞1n∑i=1nAicos(ω+φi+(r→2−r→1)⋅k→i)其中k⃗ 1,k⃗ 2,k⃗ 3,...k→1,k→2,k→3,...是平面波的波数向量。
相干和非相干噪声
相干噪声
非相干噪声
波数(k) 沿着波的传播方向单位长度内波的全周期数。$k=1/波长=\frac{f}{c}$,也可定义成$k=2\pi/波长$,这样可以理解成相位随距离的变化率。
远场和近场
远场模型可以看成是平面波(左),传播方向是$\vec {\zeta^0}$,远场要看成是球面波(右),传播方向$\vec {\zeta_m^0}$
远场和近场的临界值是2d2/λmin2d2/λmin(d为两个阵元之间的距离,λminλmin是声波波长最小值),当声源距离大于临界值时,使用远场模型,反之使用近场模型.
delay-sum 波束形成
对非相干噪声效果较好,如空间白噪声,然而,如果噪声源是相干的,降噪的程度依赖于噪声的方向,在室内混响场景下,并不能获得很好的效果。 设输入信号是s(t)s(t),叠加噪声是加性的n(t)n(t),则第m个麦克风观测到的信号是:xm(t)=s(t)+nm(t)xm(t)=s(t)+nm(t)对于线阵模型的实例是:则将每一路信号经过冲击响应延迟后再相加可以得到时间匹配上的信号。则延迟和输出是:y(t)=∑m=0M−1wmxm(t−[M−m−1]T)y(t)=∑m=0M−1wmxm(t−[M−m−1]T)
filter-and-sum
和delay-sum相比其使用了幅度和相位不一致的权重。
自适应波束形成
基于目标和干扰声源的统计特性,根据一些准则,如最大信噪比准则(MSNR,maximum signal-to-noise ratio), 最小均方误差(MMSE, minimum mean-squared error),最小方差无失真响应(MVDR, minimum variance distortionless reponse), 以及线性约束最小方差(LCMV, linear constriant minimum variance),其在增强目标信号的同时,抑制干扰信号。 典型的bf有,Frost beamformer, GSC beamformer, LCMV beamformer, MVDR beamformer。Frost/mvdr等,在相干噪声场,可以得到较高的信噪比改善,但是在弱相干噪声场和在散射噪声场中,性能不如固定波束形成。其一种结构可以如下:
后置滤波作用 可以用来去除非相干噪声,但是在相干噪声情况下性能退化,甚至不可用。zelinski后置滤波器的结构体如下: apab(adaptive post-filter for an arbitrary beamformer) 后置滤波器: 通常将自适应滤波器和后置滤波器结合起来以抑制相干和非相干噪声。 一张频谱图,可以反映它们之间的对比关系:
10.2盲源分离问题
盲源分离技术仅根据观察到的每一路混叠信号估计原始多路信号,独立成分分析(independent component analysis)卷积混合情况的盲源分离技术。第一部分麦克风数量大于声源数量的ICA的方法,第二部分是麦克风数量小于声源数量的时频分集方法,第三部分是基于最大后验概率的单麦克盲源分离技术。 盲源分离解决的问题:
- 线性模型,又称瞬时模型
卷积模型,语音更符合这个模型 盲源分离存在两种不确定性:分离后信号的排列顺序和复振幅(幅值和相位)。当源信号之间相互独立时,如果对源信号矢量进行变换,当且仅当变换后的信号之间保持相互独立,该变换矩阵可以分解为一个满秩对角阵和一个转置矩阵的乘积,仅改变源信号的幅度和排列顺序,并没有改变信号波形。 独立分量分析证明了只要通过适当的线性变换,使得变换后的各个信号之间相互独立就可以实现源信号的盲分离,即将盲源分离问题,转换为对独立分量分析的求解问题。可以使用的判决准则:
> 1.自然梯度 2.随机梯度
信息论法: 1.基于互信息法:对比函数是一个用来衡量变换后各个信号之间相互独立程度的实值标量函数,当且仅当各个输出信号之间相互独立时,对比函数取得最大值或最小值。 2.基于信源的非高斯性测度(仅指峭度) 3.近似负嫡准则,成为FastICA。计算简单,收敛速度快,不需要任何步长参数,且迭代稳定,占用内存少。还可以通过非线性函数的适当选取来找到最优解。
- 统计量方法: 1.基于二阶统计量 2.基于高阶统计量,BP网络分离信号方法,能分离线性和非线性混合,
PCA主成份分析。高斯噪声分离。 ICA,非高斯噪声分离,(前提假设线性,静态混合)
研究集中于以下几点: 1.欠定问题,源数目多于传感器(麦克风) 2.单通道问题,只有一个传感器,分离出多个源 3.多维BSS, 4.非线性BSS, 5.盲解卷积(声源场景) 6.全局收敛算法 7.非平稳环境下的BSS
信号预处理,分离前 1.中心化,即去均值。 2.白化,
项目 | 波束形成算法 | 基于ICA的盲源分离算 |
---|---|---|
优势 | 已经商用 | 能够动态跟踪声源 |
劣势 | 动态跟踪声源性能差 | 分离矩阵计算量较大;硬件和麦克风成本较高 |
ICA方法
语音信号的卷积盲分离:
- 基于块扩展的自然梯度法
- 空时扩展的FastICA方法
瞬时混合模型BSS分离
mm是位置语音源si(k),1≤i≤msi(k),1≤i≤m数量,观察到$n$个输出xj(k),1≤j≤nxj(k),1≤j≤n.xj(k)=∑mi=1ajisi(k)+vj(k)xj(k)=∑i=1majisi(k)+vj(k)ajiaji是矩阵A(n∗m)A(n∗m)线性时不变系统的系数,vj(k)vj(k)是加性噪声。瞬时混合盲源分离技术就是要找到一个$m*n$的解混合矩阵$B$.yi(k)=∑nj=1bij(k)xj(k)yi(k)=∑j=1nbij(k)xj(k)然而室内语音由于反射和混响,其要使用卷积混合模型进行分离。
卷积混合分离模型
xj(k)=∑∞l=−∞∑mi=1bjilsi(k−l)xj(k)=∑l=−∞∞∑i=1mbjilsi(k−l)这里忽略了噪声,其响应的矩阵表示是:y(k)=∑L−1l=0BlX(K−l)y(k)=∑l=0L−1BlX(K−l)这里要求输入信号之间是统计独立的,短时平稳的。
使用空域独立特性的时域卷积盲分离
使用信源统计独立性进行BSS的方法可以分为两类:
- 基于密度匹配法
基于对比函数法
密度匹配法使用自然梯度
对于瞬时混合,仍然可以从ICA的信息最大化的推导出密度匹配法。在线性混合条件下,上面两个准则认为联合概率密度函数如下: p ( s ) = ∏ m k = 1 p s ( s k ) p ( s ) = ∏ k = 1 m p s ( s k ) 将观察到的信号 X ( k ) = [ x 1 ( k ) . . . x m ( k ) ] T X ( k ) = [ x 1 ( k ) . . . x m ( k ) ] T 根据系统解混合矩阵$B$线性变换得到的输出向量$y(k)=B(k)X(k)$,密度匹配BSS方法是使输出向量的概率密度函数 p y y p y y 匹配模型的概率密度函数$\widehat{p}_y(y)$. p y y p y y 和$\widehat{p}_y(y)$的差异可以使用相对熵(KL散度)来度量: D ( p y | | p ˆ y ( y ) ) = ∫ p y ( y ) l o g ( p y p ˆ y ( y ) ) D ( p y | | p ^ y ( y ) ) = ∫ p y ( y ) l o g ( p y p ^ y ( y ) ) 式中 d y = d y 1 . . . d m d y = d y 1 . . . d m . 此外还有对比函数法等方法
频域卷积BSS
对中等程度的混响就需要较长的多通道FIR滤波,这可以放到频域来做,因为时域卷积对应频域相乘。从时域变换到频域可以通过滑窗DFT或者通过短时傅里叶变换(STFT)。窗长内的信号要是准静态的,将T时间内的采样点写成矩阵$X(k)$: X ( k ) = [ X ( k ) , X ( k + 1 ) , . . . , X ( k + T − 1 ) ] X ( k ) = [ X ( k ) , X ( k + 1 ) , . . . , X ( k + T − 1 ) ] 其DFT如下: X ( ω , k ) = ∑ T − 1 τ = 0 X ( k + τ ) e − j 2 π ω τ / T X ( ω , k ) = ∑ τ = 0 T − 1 X ( k + τ ) e − j 2 π ω τ / T 做FFT通常会进行加窗处理。观测信号和源信息源的关系如下: X ( ω , k ) ≈ A ( ω ) s ( ω , k ) X ( ω , k ) ≈ A ( ω ) s ( ω , k )
频域盲分离框图
y(ω,k)=B(ω,k)A(ω)s(ω,k)=G(ω,k)S(z)y(ω,k)=B(ω,k)A(ω)s(ω,k)=G(ω,k)S(z)
分离准则
盲源分离方法建立在对声源和混合矩阵的不同假设的基础上,一般声源是独立的,至少是不相关的。分离的判决准则可以分为两类,一类是基于高阶统计量(HOS,higher-order statics),和二阶统计量(SOS,second-order statics)。N表示声源数,M表示麦克风数。这在后文一个实例中使用到这一准则。
N | < | M | N | < | M | N | = | M | N | = | M | N | > | M | N | > | M |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
子空间方法 | 二阶或者三阶累积量 | 非静态,列优先,互质 | |||||||||||||||
降到瞬时混合情况求解 | 1.SOS/HOS对于2*2系统 2.独立功率谱 3.累计量的书序大于二,ML准则 | 互累计量,时频域稀疏 |
卷积盲源分离频域法
卷积盲源分离包括两类主要方法:时域和频域。设$s1,...,s_N$是N个源信号。{x_jk}是第${j}$个麦克风从第${k}$个声源在卷积模型下的观察的信号值。Xji(t)=∑pl=0hjk(l∙ts)sk(t−l∙ts)Xji(t)=∑l=0phjk(l∙ts)sk(t−l∙ts)其中$t(t_s=1/f_s)$是时间的离散表示,h{jk}是声源k到麦克风$j$的脉冲响应。假设N个声源,则有:xjt=∑Nk=1xjk(t)=∑Nk=1∑Pl=0hjk(l∙ts)sk(t−l∙ts)xjt=∑k=1Nxjk(t)=∑k=1N∑l=0Phjk(l∙ts)sk(t−l∙ts)
对分离效果的好坏使用信号/干扰比(signal-to-interference ratio, SIR)和信号/失真比(signal-to-distortion ratio)。InputSTRi=10log10∑t|xji(t)|2∑t|∑k≠ixjk(t)|2InputSTRi=10log10∑t|xji(t)|2∑t|∑k≠ixjk(t)|2(dB)OutputSTRi=10log10∑t|yji(t)|2∑t|∑k≠iyjk(t)|2OutputSTRi=10log10∑t|yji(t)|2∑t|∑k≠iyjk(t)|2(dB)yikyik是sksk在输出端yiyi的部分。 SDR定义如下:SDRi=10log10∑t|αiyji(t−δ)|2∑t|yji−αixji(t−δi)|2SDRi=10log10∑t|αiyji(t−δ)|2∑t|yji−αixji(t−δi)|2失真定义于分母,这通过找到合适的幅度调节因子αiαi和时间调节因子δiδi最小化失真获得SDR。最优δiδi通过最大化互相关获得:δi=argmaxδ∑tyji(t)(t−δ)δi=argmaxδ∑tyji(t)(t−δ)αiαi通过最小均方误差获得:αi=∑tyii(t)xji(t−δ)∑t|xji(t−δ)|2αi=∑tyii(t)xji(t−δ)∑t|xji(t−δ)|2
通过STFT将每一个麦克风观察到的时域信号$xj(t)$转换到频域时间信号xj(n,f)xj(n,f):xj(n,f)←∑txj(t)wina(t−nSts)e−t2πftxj(n,f)←∑txj(t)wina(t−nSts)e−t2πft每一个离散的频点$f{\in}{0,\frac{1}{L}f_s,...,\frac{L-1}{L}f_s }$.分析用的窗函数可以使用汉宁窗。如果帧长$L$能够包括绝大部分的脉冲响应$h{jk}$,则卷积模型可近似使用瞬时模型近似:xjk(n,f)=hjk(f)sk(n,f)xjk(n,f)=hjk(f)sk(n,f)则有:xj(n,f)=∑Nk=1xjk(n,f)=∑Nk=1hjk(f)sk(n,f)xj(n,f)=∑k=1Nxjk(n,f)=∑k=1Nhjk(f)sk(n,f)向量表示如下:X(n,f)=∑Nk=1hk(f)sk(n,f)X(n,f)=∑k=1Nhk(f)sk(n,f)接下来的操作,分离,置换以及缩放和T-F掩码都在频域做。复共轭矩阵的关系如下:xj{n,mLfs}=x∗j{n,L−mLfs,m=1,...,L2−1xj{n,mLfs}=xj∗{n,L−mLfs,m=1,...,L2−1这里最关键的就是求分离矩阵,这个非常类似AEC情况下的回声消除求权重的过程,由于AEC是一维,BSS是多维且矩阵间互相影响,所以其计算特别耗时。 但是这时可以利用声源定位技术,在大概知道多个声源的方向,这时分离矩阵的系数应该让各个方向上能量和其它方向上的能量比值最大。 另外针对也许特殊的场景,不放考虑使用DNN方式,先前训练好几组权重系数。 这里给出一个matlab版本程序,需要说明的是,这个程序在无背景噪声,线阵,麦克风大间距下效果非常明显。
10.3 T-F(Time-Frequency)
利用信号的稀疏性(对每一个时频点,都只有一个信号占绝大部分),通过对信号时频域加掩码的方式抑制信号,这样可以将视频点分成N个类,每个类对应于一个声源,这个方法的一个典型是DUET(Degenerate Unmixing Estimation Technique). 1.对原始信号做STFT 2.特征提取,根据STFT后的频点选择特征,Θ(f,t)Θ(f,t),大多数这类方法选择,幅度比和相位差做为特性。 3.聚类,如k-means方法。 4.分离,
本章小节
本章主要介绍了声源分离技术的原理,阐述了在beamformering技术中,相关参数设置对波束形成方向图的影响,也介绍了几种常见的beamformer技术,而后有介绍了基于盲源分离方法.这是后续实例章节的理论基础.+