麦克风阵列算法笔记之二(固定波束形成)


麦克风阵列算法有两大类,一类是波束形成算法,另一类是盲源分离算法,两者互有优劣,先记录波束形成算法的笔记。系列博客先介绍两种常见麦克风阵列结构,然后分别介绍固定波束形成(fixed beamforming, data-independent) 和自适应波束形成(adaptive beamforming, data-dependent)。

1. 波束形成的优缺点(Pros & Cons)

优点

  • 波束形成的优点是可以利用空间信息做空间滤波(Spatial filtering)。
    以单麦克风降噪为例。单麦克风接收到的信号,无法分辨来波方向。对于噪声的抑制主要抑制平稳噪声。因为语音信号是非平稳的,如何准确区分非平稳的噪声和语音比较困难。麦克风阵列至少有两颗麦克风,能够一定程度的区分来波方向。对于非期望方向的干扰语音或者其他非平稳噪声可以线性地衰减。

缺点

  • 波束形成算法的性能依赖目标信号的VAD信息。
    以GSC结构为例,MC的自适应噪声消除,其滤波系数更新依赖于这个VAD信息。只有当目标信号(有效语音)不存在时,才需要更新滤波器系数。否则会将有效语音消除掉。
  • 波束形成算法的性能依赖目标信号的DOA信息。
    恶劣的声场环境,强噪声和长混响都会影响DOA算法的准确性。准确的DOA算法运算量很大。
  • 如果目标信号和干扰信号在同一个波束内,是无法消除的。
    目标信号和干扰信号在同一个波束内,波束形成是无法分辨出它们的,空间滤波无法进行,自然无法消除。
  • 长混响条件下,波束形成性能会下降。
    长混响,比如 T 60 = 300 m s T_{60}=300ms T60=300ms,目标信号和干扰信号会相互泄露到对方的波束,空间滤波性能下降。原因同上。

2. 麦克风的指向性(Directivity pattern of a microphone)

这里说的是麦克风的指向性,后面将要说的麦克风阵列的指向性,需要区分开。

  • 麦克风的指向性是由麦克风的物理特性决定的,它描述了麦克风对特定来波方向信号增益相位移动。类似于时不变系统对信号的幅频响应相频响应
  • 来波方向应该是一个三维的,有水平角(elevation angle)和俯仰角(azimuth angle)。为了简化问题,先只考虑二维的场景。
  • 麦克风的指向性就可以用 H ( ω , θ ) H(\omega, \theta) H(ω,θ) 表示,其中 ω \omega ω表示频率, θ \theta θ表示角度。如下图所示,为某一特定频率 ω 0 \omega_0 ω0的麦克风指向性 H ( ω 0 , θ ) H(\omega_0, \theta) H(ω0,θ)
    在这里插入图片描述

3. 信号模型和定义

3.1 远场信号

麦克风接收到的信号响应,由两部分响应组成。一部分是麦克风的指向性,一部分是由麦克风位置决定的相位
Y m ( ω , θ ) = H m ( ω , θ ) ∗ e x p ( − j ω τ m ( θ ) ) ∗ S ( ω ) Y_m(\omega, \theta) = H_m(\omega, \theta) * exp(-j \omega\tau_m(\theta)) * S(\omega) Ym(ω,θ)=Hm(ω,θ)exp(τm(θ))S(ω)
其中 H m H_m Hm是麦克风的指向性, τ m \tau_m τm是与麦克风位置相关的延迟, S ( ω ) S(\omega) S(ω)是原信号。

3.2 导向矢量 (steer vector)

麦克风阵列接收到的信号,需要将上述信号( m = 1 , 2... M m=1,2...M m=1,2...M)用向量形式来表达。
Y ( ω , θ ) = d ( ω , θ ) ∗ S ( ω ) Y(\omega,\theta) = d(\omega,\theta)*S(\omega) Y(ω,θ)=d(ω,θ)S(ω)
d ( ω , θ ) = [ H 1 ( ω , θ ) e x p ( − j ω τ 1 ( θ ) ) . . . H M ( ω , θ ) e x p ( − j ω τ M ( θ ) ) ] d(\omega,\theta) = [H_1(\omega,\theta)exp(-j\omega\tau_1(\theta))...H_M(\omega,\theta)exp(-j\omega\tau_M(\theta))] d(ω,θ)=[H1(ω,θ)exp(τ1(θ))...HM(ω,θ)exp(τM(θ))]
其中 d d d是导向矢量(steering vector),是由麦克风指向性和麦克风位置决定的。

如果所有的麦克风拥有同样的指向性, H 0 ( ω , θ ) H_0(\omega, \theta) H0(ω,θ),则导向矢量可以提取公因式。如果使用的是全指向性麦克风,则有 H 0 ( ω , θ ) = 1 H_0(\omega, \theta)=1 H0(ω,θ)=1,导向矢量只由麦克风的位置决定。
d ( ω , θ ) = H 0 ( ω , θ ) [ 1 , e x p ( − j ω τ 2 ( θ ) ) , . . . , e x p ( − j ω τ M ( θ ) ) ] d(\omega,\theta) = H_0(\omega, \theta)[1, exp(-j\omega\tau_2(\theta)),...,exp(-j\omega\tau_M(\theta))] d(ω,θ)=H0(ω,θ)[1,exp(τ2(θ)),...,exp(τM(θ))]

对于 n n n个麦克风的线性阵列,导向矢量维度为 n ∗ f f t b i n s ∗ n d e g r e e n*fftbins*ndegree nfftbinsndegree的复数矩阵,导向矢量计算的python代码如下,输入角度phi单位是rads,需要转换。

def linear_steer_vector(phi, freq, mic_num = 2, mic_dist = 0.03):
    vsound = 340
    mic_loc = np.linspace(0, (mic_num-1)*mic_dist, mic_num)
    delay = mic_loc * np.cos(phi) /vsound
    steer_vector = np.exp(-1j * 2 * np.pi * freq * delay)
    return steer_vector

3.3 波束方向图 (beam pattern/directivity pattern)

  • 麦克风阵列的输出信号,经过滤波相加(filter-and-sum)之后得到输出,其中 F ( ω ) F(\omega) F(ω)是滤波器系数。 滤波器系数有事先约定好的期望角度,所以系数和角度无关,只和频率有关。维度是
    Z ( ω , θ ) = F H ( ω ) Y ( ω , θ ) = F H ( ω ) d ( ω , θ ) S ( ω ) Z(\omega, \theta) = F^H(\omega) Y(\omega,\theta) = {F^H(\omega)d(\omega,\theta)}S(\omega) Z(ω,θ)=FH(ω)Y(ω,θ)=FH(ω)d(ω,θ)S(ω)

  • 阵列传递函数,英文可以是directivity pattern,也可以是transfer function。
    H ( ω , θ ) = Z ( ω , θ ) / S ( ω ) = F H ( ω ) d ( ω , θ ) H(\omega, \theta) = Z(\omega, \theta)/S(\omega) = F^H(\omega)d(\omega,\theta) H(ω,θ)=Z(ω,θ)/S(ω)=FH(ω)d(ω,θ)
    下图是四颗麦克风,期望角度是0°,分别使用broadside和endfire的beampattern。
    在这里插入图片描述

4. 评价指标

麦克风阵列的性能主要用白噪声增益指向性来评价。
白噪声增益用来评价阵列在白噪声场景下的抑制能力,后者用来评价阵列在扩散场噪声下的阵列增益。其本质都是阵列增益,可以理解为输出信噪比除以输入信噪比,也可以表示为信号的传递函数 ∣ ∣ 2 ||^2 2除以噪声的传递函数 ∣ ∣ 2 ||^2 2。在表示噪声的输出函数之前,先引入噪声的相关矩阵和相干矩阵的概念,即noise correlation matrix 和 noise coherence matrix。

4.1 噪声相关矩阵 noise correlation matrix

噪声相关矩阵定义为
Φ n o i s e ( ω ) = E { N ( ω ) N ( ω ) H } \Phi_{noise}(\omega) = E\{N(\omega)N(\omega)^H\} Φnoise(ω)=E{N(ω)N(ω)H}
假设噪声场是均匀的,主对角线上的元素都相同,即自相关为常数。
ϕ i i ( ω ) = ϕ n o i s e ( ω ) \phi_{ii}(\omega) = \phi_{noise}(\omega) ϕii(ω)=ϕnoise(ω)
相干矩阵为相关矩阵除以对角线元素
Γ n o i s e ( ω ) = 1 ϕ n o i s e ( ω ) Φ n o i s e ( ω ) \Gamma_{noise}(\omega) = \frac{1}{\phi_{noise}(\omega)}\Phi_{noise}(\omega) Γnoise(ω)=ϕnoise(ω)1Φnoise(ω)

4.2 噪声相干矩阵 noise coherence matrix

白噪声的相干矩阵为单位阵
Γ n o i s e w h i t e ( ω ) = I ( ω ) \Gamma^{white}_{noise}(\omega) = I(\omega) Γnoisewhite(ω)=I(ω)
扩散噪声的相干矩阵对角线上为1,而反对角线上是sinc函数。可以用以下公式来表示
Γ n o i s e d i f f u s e ( ω ) = s i n c ( ω f s d / c ) \Gamma^{diffuse}_{noise}(\omega) = sinc(\omega f_s d/c) Γnoisediffuse(ω)=sinc(ωfsd/c)

4.3 白噪声增益 white noise gain

阵列增益,用来评估在某个角度上的信噪比提升:
G ( ω , θ ) = S N R o u t S N R i n = ∣ F H ( ω ) d ( ω , θ ) ∣ 2 F H ( ω ) Γ n o i s e ( ω ) F ( ω ) G(\omega,\theta)=\frac{SNR_{out}}{SNR_{in}}=\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega)\Gamma_{noise}(\omega) F(\omega)} G(ω,θ)=SNRinSNRout=FH(ω)Γnoise(ω)F(ω)FH(ω)d(ω,θ)2
根据噪声相干矩阵的不同分为白噪声增益和指向性两个指标。
白噪声增益的相干矩阵是单位阵,即 Γ n o i s e w h i t e ( ω ) = I ( ω ) \Gamma^{white}_{noise}(\omega) = I(\omega) Γnoisewhite(ω)=I(ω),因为白噪声主要来源于传感器的噪声,白噪声增益主要用来评估beamformer的稳定性。
W N G ( ω , θ ) = ∣ F H ( ω ) d ( ω , θ ) ∣ 2 F H ( ω ) F ( ω ) WNG(\omega,\theta)=\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega) F(\omega)} WNG(ω,θ)=FH(ω)F(ω)FH(ω)d(ω,θ)2
举例:四颗麦克风,使用DSB时,无论是broadside还是endfire,白噪声增益都是6dB。
在这里插入图片描述

4.4 指向性 array directivity index

对于扩散场噪声而言,记为 Γ n o i s e d i f f u s e ( ω ) = s i n c ( ω ∗ d / c ) \Gamma^{diffuse}_{noise}(\omega) = sinc(\omega*d/c) Γnoisediffuse(ω)=sinc(ωd/c)
D I ( ω , θ ) = ∣ F H ( ω ) d ( ω , θ ) ∣ 2 F H ( ω ) Γ n o i s e d i f f u s e ( ω ) F ( ω ) DI(\omega,\theta)=\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega)\Gamma^{diffuse}_{noise}(\omega) F(\omega)} DI(ω,θ)=FH(ω)Γnoisediffuse(ω)F(ω)FH(ω)d(ω,θ)2
举例:四颗麦克风,使用DSB,整体来说两种阵列结构的指向性都不好。尤其是低频部分,几乎没有指向性。
在这里插入图片描述

5. 固定波束形成设计

基于以上阵列的基础知识以及评价指标,固定波束形成的基本设计思路是在保证期望方向无失真的前提下,最大化白噪声增益或者最大化指向性,即首先保证
∣ F H ( ω ) d ( ω , ϕ ) ∣ = 1 |F^H(\omega)d(\omega,\phi)|=1 FH(ω)d(ω,ϕ)=1

5.1 最大化白噪声增益

最大化白噪声增益,即求出一组 F ( ω ) F(\omega) F(ω)参数,使得白噪声增益最大。
F ( ω ) = a r g { m a x W N G ( ω , θ ) } = a r g { m a x ∣ F H ( ω ) d ( ω , θ ) ∣ 2 F H ( ω ) F ( ω ) } F(\omega) = arg\{maxWNG(\omega, \theta)\} = arg\{max\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega) F(\omega)}\} F(ω)=arg{maxWNG(ω,θ)}=arg{maxFH(ω)F(ω)FH(ω)d(ω,θ)2}
对于上式,有一个限制条件, ∣ F H ( ω ) d ( ω , ϕ ) ∣ = 1 |F^H(\omega)d(\omega,\phi)|=1 FH(ω)d(ω,ϕ)=1,即对期望方向 ϕ \phi ϕ的信号增益是0dB。这样最大化问题就转变为最小化噪声输出功率的问题。
F ( ω ) = a r g { m i n F H ( ω ) F ( ω ) } , s . t . ∣ F H ( ω ) d ( ω , ϕ ) ∣ = 1 F(\omega) = arg\{min{F^H(\omega) F(\omega)}\}, s.t. |F^H(\omega)d(\omega,\phi)|=1 F(ω)=arg{minFH(ω)F(ω)},s.t.∣FH(ω)d(ω,ϕ)=1
得到最优解为
F ( ω ) = d ( ω , ϕ ) ∣ d ( ω , ϕ ) ∣ 2 = d ( ω , ϕ ) M F(\omega) = \frac{d(\omega,\phi) }{|d(\omega,\phi)|^2}=\frac{d(\omega,\phi)}{M} F(ω)=d(ω,ϕ)2d(ω,ϕ)=Md(ω,ϕ)
白噪声增益为
W N G ( ω , θ = ϕ ) = ∣ F H ( ω ) d ( ω , θ ) ∣ 2 F H ( ω ) F ( ω ) = M WNG(\omega,\theta=\phi)=\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega) F(\omega)}=M WNG(ω,θ=ϕ)=FH(ω)F(ω)FH(ω)d(ω,θ)2=M

Delay&Sum

如下图,对于理想的全指向麦克风阵列,delay & sum 波束形成在所有频点上都具有M的白噪声增益。即获得了最大的白噪声增益,但是指向性很一般。

在这里插入图片描述

5.2 最大化指向性

h R S D ( k ) = Γ ( k ) − 1 d ( k ) d H ( k ) Γ ( k ) − 1 d ( k ) h_{RSD}(k)=\frac{\Gamma(k)^{-1}d(k)}{d^H(k)\Gamma(k)^{-1}d(k)} hRSD(k)=dH(k)Γ(k)1d(k)Γ(k)1d(k)

Super Directive

如下图,SD能获得非常好的指向性,最大的指向系数为 N 2 N^2 N2,即12db。但白噪声增益很差,在低频下,白噪声增益甚至是负无穷大。
在这里插入图片描述

5.3 提高稳定性

为了提高超指向的白噪声增益的下限,获得更为稳定的解,可以在设计时增加一个约束条件
1 h H h ⩾ c o n s t ( k ) \frac{1}{h^Hh}\geqslant const(k) hHh1const(k)
这是一个非凸优化问题,解具有以下形式,可以在噪声协方差矩阵对角线上增加一个小的常数。
h R S D ( k ) = [ Γ ( k ) + c ( k ) I ] − 1 d ( k ) d H ( k ) [ Γ ( k ) + c ( k ) I ] − 1 d ( k ) h_{RSD}(k)=\frac{[\Gamma(k)+c(k)I]^{-1}d(k)}{d^H(k)[\Gamma(k)+c(k)I]^{-1}d(k)} hRSD(k)=dH(k)[Γ(k)+c(k)I]1d(k)[Γ(k)+c(k)I]1d(k)

对角加载

经过对角加载之后可以看到低频部分的白噪声增益得到了明显提高,从负无穷提高到-15dB以上。而低频的指向性影响在-2dB左右。
在这里插入图片描述

  • 12
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
麦克风阵列波束形成算法是一种利用麦克风阵列的空间选择性来增强特定方向上的信号和抑制干扰的方法。其中,延迟-累加波束形成算法是一种常见的方法。该算法首先对麦克风阵列各个阵元接收到的语音信号进行时延估计和时间补偿,以保持各阵元通道中的语音信号同步。然后对各路信号进行加权,放大期望的信号并抑制干扰信号。最后将加权后的信号进行累加,产生一个经过增强处理的信号。这种方法可以降低噪声和干扰对信号的影响,提高信噪比。但是在处理相干噪声和移动语音信号时效果较差。 另外,波束形成算法还需要考虑麦克风阵列的个数、性能和鲁棒性。当麦克风数量较少时,波束形成的空域选择性较差,而当麦克风数量较多时,波束的3dB带宽较窄,并且对目标声源方向的估计偏差影响更大,鲁棒性较差。因此,需要在鲁棒性和性能之间进行权衡。常用的波束形成准则有最大信噪比准则、最小均方误差准则和线性约束最小方差准则等。此外,波束形成方法还需要根据语音、噪声和干扰等统计信息来调整波束方向图,以达到最优滤波效果。为了应对信号和噪声的统计特性的变化,可以采用短时平稳和自适应方法来进行波束形成。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [麦克风阵列语音增强算法——固定波束形成算法](https://blog.csdn.net/weixin_44915288/article/details/129370571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [麦克风阵列波束形成](https://blog.csdn.net/shichaog/article/details/74143427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值