波束形成算法学习笔记之二(固定波束形成)
波束形成算法学习笔记
- 波束形成的优缺点(Pros & Cons)
- 优点
- 缺点
- 麦克风的指向性(Directivity pattern of a microphone)
- 信号模型和定义
- 评价指标
- 最大化白噪声增益
- 最大化指向性
- Differential
- Delay&Sum
- Super Directive
麦克风阵列算法有两大类,一类是波束形成算法,另一类是盲源分离算法,两者互有优劣,先记录波束形成算法的笔记。系列博客先介绍两种常见麦克风阵列结构,然后分别介绍固定波束形成(fixed beamforming, data-independent) 和自适应波束形成(adaptive beamforming, data-dependent)。
波束形成的优缺点(Pros & Cons)
优点
- 波束形成的优点是可以利用空间信息做空间滤波(Spatial filtering)。
以单麦克风降噪为例。单麦克风接收到的信号,无法分辨来波方向。对于噪声的抑制主要抑制平稳噪声。因为语音信号是非平稳的,如何准确区分非平稳的噪声和语音比较困难。麦克风阵列至少有两颗麦克风,能够一定程度的区分来波方向。对于非期望方向的干扰语音或者其他非平稳噪声可以线性地衰减。
缺点
- 波束形成算法的性能依赖目标信号的VAD信息。
以GSC结构为例,MC的自适应噪声消除,其滤波系数更新依赖于这个VAD信息。只有当目标信号(有效语音)不存在时,才需要更新滤波器系数。否则会将有效语音消除掉。 - 波束形成算法的性能依赖目标信号的DOA信息。
恶劣的声场环境,强噪声和长混响都会影响DOA算法的准确性。准确的DOA算法运算量很大。 - 如果目标信号和干扰信号在同一个波束内,是无法消除的。
目标信号和干扰信号在同一个波束内,波束形成是无法分辨出它们的,空间滤波无法进行,自然无法消除。 - 长混响条件下,波束形成性能会下降。
长混响,比如T60=300msT_{60}=300msT60=300ms,目标信号和干扰信号会相互泄露到对方的波束,空间滤波性能下降。原因同上。
麦克风的指向性(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,θ)
信号模型和定义
假设信号都来自远场
- 麦克风接收到的信号响应,由两部分响应组成。一部分是麦克风的指向性,一部分是由麦克风位置决定的相位。
Ym(ω,θ)=Hm(ω,θ)∗exp(−jωτm(θ))∗S(ω)Y_m(\omega, \theta) = H_m(\omega, \theta) * exp(-j \omega\tau_m(\theta)) * S(\omega)Ym(ω,θ)=Hm(ω,θ)∗exp(−jωτm(θ))∗S(ω)
其中HmH_mHm是麦克风的指向性,τm\tau_mτm是与麦克风位置相关的延迟,S(ω)S(\omega)S(ω)是原信号。 - 麦克风阵列接收到的信号,需要将上述信号(m=1,2...Mm=1,2...Mm=1,2...M)用向量形式来表达。
Y(ω,θ)=d(ω,θ)∗S(ω)Y(\omega,\theta) = d(\omega,\theta)*S(\omega)Y(ω,θ)=d(ω,θ)∗S(ω)
d(ω,θ)=[H1(ω,θ)exp(−jωτ1(θ))...HM(ω,θ)exp(−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(−jωτ1(θ))...HM(ω,θ)exp(−jωτM(θ))]
其中ddd是导向矢量(steering vector),是由麦克风指向性和麦克风位置决定的。 - 如果所有的麦克风拥有同样的指向性,H0(ω,θ)H_0(\omega, \theta)H0(ω,θ),则导向矢量可以提取公因式。如果使用的是全指向性麦克风,则有H0(ω,θ)=1H_0(\omega, \theta)=1H0(ω,θ)=1,导向矢量只由麦克风的位置决定。
d(ω,θ)=H0(ω,θ)[1,exp(−jωτ2(θ)),...,exp(−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(−jωτ2(θ)),...,exp(−jωτM(θ))] - 麦克风阵列的输出信号,经过滤波相加(filter-and-sum)之后,得到输出。
Z(ω,θ)=FH(ω)Y(ω,θ)=FH(ω)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(ω)
其中F(ω)F(\omega)F(ω)是滤波器系数。 - 阵列传递函数,英文可以是directivity pattern,也可以是transfer function,是等价的。
H(ω,θ)=Z(ω,θ)/S(ω)=FH(ω)d(ω,θ)H(\omega, \theta) = Z(\omega, \theta)/S(\omega) = F^H(\omega)d(\omega,\theta)H(ω,θ)=Z(ω,θ)/S(ω)=FH(ω)d(ω,θ) (这里的共轭还没能理解是怎么推导的)
评价指标
麦克风阵列的性能主要用白噪声增益和指向性来评价。前者用来评价阵列在白噪声场景下的抑制能力,后者用来评价阵列在扩散场噪声下的阵列增益。其本质都是阵列增益,可以理解为输出信噪比除以输入信噪比,也可以表示为信号的传递函数∣∣2||^2∣∣2除以噪声的传递函数∣∣2||^2∣∣2。在表示噪声的输出函数之前,先引入噪声的相关矩阵和相干矩阵的概念,即noise correlation matrix 和 noise coherence matrix。
噪声相关矩阵 noise correlation matrix
噪声相干矩阵 noise coherence matrix
白噪声的相干矩阵为单位阵,即Γnoisewhite(ω)=I(ω)\Gamma^{white}_{noise}(\omega) = I(\omega)Γnoisewhite(ω)=I(ω)
扩散噪声的相干矩阵可以用以下公式来表示Γnoisediffuse(ω)=sinc(ωfsd/c)\Gamma^{diffuse}_{noise}(\omega) = sinc(\omega f_s d/c)Γnoisediffuse(ω)=sinc(ωfsd/c)阵列增益函数 array gain
G(ω,θ)=SNRoutSNRin=∣FH(ω)d(ω,θ)∣2FH(ω)Γnoise(ω)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白噪声增益 white noise gain
因为白噪声的相干矩阵是一个单位阵,即Γnoisewhite(ω)=I(ω)\Gamma^{white}_{noise}(\omega) = I(\omega)Γnoisewhite(ω)=I(ω)
WNG(ω,θ)=∣FH(ω)d(ω,θ)∣2FH(ω)F(ω)WNG(\omega,\theta)=\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega) F(\omega)}WNG(ω,θ)=FH(ω)F(ω)∣FH(ω)d(ω,θ)∣2指向性 array directivity index
对于扩散场噪声而言,其相干矩阵对角线上为1,而反对角线上是sinc函数。记为Γnoisediffuse(ω)=sinc(ω∗d/c)\Gamma^{diffuse}_{noise}(\omega) = sinc(\omega*d/c)Γnoisediffuse(ω)=sinc(ω∗d/c)
DI(ω,θ)=∣FH(ω)d(ω,θ)∣2FH(ω)Γnoisediffuse(ω)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
最大化白噪声增益
最大化白噪声增益,即求出一组F(ω)F(\omega)F(ω)参数,使得白噪声增益最大。
F(ω)=arg{maxWNG(ω,θ)}=arg{max∣FH(ω)d(ω,θ)∣2FH(ω)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}
对于上式,有一个限制条件,∣FH(ω)d(ω,ϕ)∣=1|F^H(\omega)d(\omega,\phi)|=1∣FH(ω)d(ω,ϕ)∣=1,即对期望方向ϕ\phiϕ的信号增益是0dB。这样最大化问题就转变为最小化噪声输出功率的问题。
F(ω)=arg{minFH(ω)F(ω)},s.t.∣FH(ω)d(ω,ϕ)∣=1F(\omega) = arg\{min{F^H(\omega) F(\omega)}\}, s.t. |F^H(\omega)d(\omega,\phi)|=1F(ω)=arg{minFH(ω)F(ω)},s.t.∣FH(ω)d(ω,ϕ)∣=1
得到最优解为
F(ω)=d(ω,ϕ)∣d(ω,ϕ)∣2=d(ω,ϕ)MF(\omega) = \frac{d(\omega,\phi) }{|d(\omega,\phi)|^2}=\frac{d(\omega,\phi)}{M}F(ω)=∣d(ω,ϕ)∣2d(ω,ϕ)=Md(ω,ϕ)
白噪声增益为
WNG(ω,θ=ϕ)=∣FH(ω)d(ω,θ)∣2FH(ω)F(ω)=MWNG(\omega,\theta=\phi)=\frac{|F^H(\omega)d(\omega,\theta)|^2}{F^H(\omega) F(\omega)}=MWNG(ω,θ=ϕ)=FH(ω)F(ω)∣FH(ω)d(ω,θ)∣2=M
最大化指向性
Differential
Delay&Sum
Super Directive
波束形成算法学习笔记之二(固定波束形成)相关推荐
- 波束形成算法学习笔记之一(Endfire,broadside)
波束形成算法学习笔记 Broadside 结构 特点 空间响应(频率变化) 频率响应(角度变化) Endfire结构 特点 空间响应(频率变化) 空间响应(延迟变化) 频率响应(角度变化) 总结 麦克 ...
- 基于MVS的三维重建算法学习笔记(二)— 立体视觉的几何基础总结
基于MVS的三维重建算法学习笔记(二)- 立体视觉的几何基础总结 声明 概述 1. 常见三维数据类型 2. 三维形状的几种表达形式 3. 三维空间刚体运动 4. 李群和李代数 5. 相机标定 6. 非 ...
- 大顶堆删除最大值_算法学习笔记(47): 二叉堆
堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...
- l2-004 这是二叉搜索树吗?_算法学习笔记(45): 二叉搜索树
二叉搜索树(Binary Search Tree, BST)是一种常用的数据结构,在理想情况下,它可以以 的复杂度完成一系列修改和查询,包括: 插入一个数 删除一个数 查询某数的排名(排名定义为比该数 ...
- 莫队算法学习笔记(二)——带修莫队
前言:什么是莫队 莫队算法,是一个十分优雅的暴力. 普通的莫队可以轻松解决一些离线问题,但是,当遇上了一些有修改操作的问题,普通莫队就无能为力了. 于是,改进后的莫队--带修莫队就这样产生了. L i ...
- 图解算法学习笔记(二): 选择排序
目录 1)数组和链表: 2)选择排序算法: 3)小结 本章内容: 两种基本数据结构:数组和链表: 选择排序算法: 1)数组和链表: 数组是连续的内存单元,链表可以不连续: 链表存储单元如图所示,每一个 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法
数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 一.概述: 提到特征点算法,首先就是大名鼎鼎的SIFT算法了.SIFT的全称是Scale Invariant Feature Transf ...
- 陈宝林《最优化理论与算法》超详细学习笔记 (二)————补充知识(凸集) 第二章 线性规划的基本性质
陈宝林<最优化理论与算法>超详细学习笔记 (二)----补充知识 凸集 & 第二章 线性规划的基本性质 补充知识 凸集 方向与极方向 表示定理 择一定理 第一章 线性规划的基本性质 ...
- Boost库学习笔记(二)算法模块-C++11标准
Boost库学习笔记(二)算法模块-C++11标准 一.综述 Boost.Algorithm是一系列人通用推荐算法的集合,虽然有用的通用算法很多,但是为了保证质量和体积,并不会将太多通用算法通过审查测 ...
最新文章
- 数据处理过程放在oracle,Oracle存储过程语法及常用函数总结
- 【kudu pk parquet】TPC-H Query2对比解析
- 城市WiFi好看还应该好用
- Android禁止ViewPager的左右滑动
- 稀疏矩阵三元组 严蔚敏_Sparse稀疏矩阵主要存储格式总结
- Report20200828螺旋波等离子体推力器HPT模拟放电调试小结
- html5和前端精要(2)-架构与基础(2)
- C#多线程学习(三) 生产者和消费者
- python中merge函数怎么用_Python Merge函数原理及用法解析
- Oulipo(Hash入门第一题 Hash函数学习)
- jsp action java_jsp中Action使用session方法实例分析
- sscanf %*s
- 卷积神经网络(TextCNN)在句子分类上的实现
- 旧iPhone手机钱包中公交卡 银行卡 转移到新手机iPhone11上
- Mind Map - FreeMind
- P3456 [POI2007]GRZ-Ridges and Valleys(bfs)
- 【小程序云开发转uniCloud阿里云】
- ThinkPad电脑(win10)总是自动休眠的解决办法,亲测有效~
- 谷歌FLoC与禁用第三方Cookie后的江湖道术
- 有两种人,看似“缺心眼”,实际“聪明绝顶”,堪称“大智若愚”