麦克风阵列波束形成

article/2025/8/22 1:40:07

原文转载于:http://blog.csdn.net/shichaog/article/details/74143427  有所修改 感谢作者 

波束形成

beamforming 体现的是声源信号的空域选择性,许多传统波束形成方法具有线性处理结构;

波束形成需要考虑三个方面: 

1.麦克风阵列个数;

2.性能;

3.鲁棒性 

在麦克风较少时,波束形成的空域选择性差,当麦克风数量较多时,其波束3dB带宽较窄,如果估计的目标声源方向有稍有偏差,带来的影响也更大,鲁棒性不好。通常鲁棒性和性能是对矛盾体,需要均衡来看。 


通常波束方向图需要随环境的语音/噪声/干扰等统计信息进行调整,以达到最优滤波。

常见波束形成的准则如最大信噪比准则(maximum signal-to-noise ratio MSNR),最小均方误差(minimum mean-squared error, MMSE), 线性约束最小方差(linearly constrained minimum variance, LCMV)。 

多通道维纳滤波波束形成使用了最小均方误差MSE准则, 
波束形成方法使用信号统计特征(一阶,二阶…),信号和噪声的统计特性通常又是变化的,如人走动,屋内物品移动,外界噪声源变动等,这就需要使用短时平稳和自适应方法来进行波束形成。

webrtc使用了如下几个点以提高鲁棒性和性能(其算法性能优先): 
1.可以使用多个后置滤波器而非一个,2.每个后置滤波使用新的结构。 
每个后置滤波器为每个声学场景的时频域bin在均方误意义上提供了最优实增益。在webrtc中后置滤波器根据声源的空域协方差矩阵,干扰源协方差矩阵,绕射场(零阶贝塞尔函数计算)以及临近麦克风的时频信号信息求得。 
这样的话就可以为每个声源和干扰场景计算出不同的最优后置滤波器,也可以使用级联的方式灵活使用多个不同选择性的后置滤波器。 
当前现存的波束形成算法的鲁棒性成为它们使用的一道门槛,如MVDR和多通道维纳滤波。 
webrtc为了增强鲁棒性,在求最优矩阵时,对声源信号添加了限制条件,使用Gabor frame将声源变成时频bin的系数,对这些bin按照目标声源和干扰声源附加了条件,如果满足条件,则门操作让目标声源通过,而让干扰源乘以零以实现选择最优目标信号。 
在webrtc中这些增益系数称为自适应标量(上面的实)乘法增益,均方误差准则被用来做为计算的准则。由于阵列方向响应随频率是变换的,而语音信号又是宽带信号,所以webrtc中使用了gabor变换来表示声音信号。增益源于目标信号和干扰的比例。 
波动方程常有波数这个参数,相位的信息是通过实部和虚部表示出来的,列两个重要的参数。

声场

对于中高音,声音在室内以反射和散射为主,这一过程不断重复和往复直到能量变成零(吸收和传输损耗),这一过程约有16次之多。对于低音室内更像一个谐振腔,波长满足谐振条件的声波将会被放大,随着说话位置的位置变化,增强和对消的低音频率也会变化。

Schroeder frequency: 
室内声音的谐振腔频率和反射/散射频率的分界点。对于居家室内场景该频率一般在100Hz~200Hz之间,在室内播放一个谐振频率的声波,人在室内不同的位置听到的音量差异是比较明显的,而对于中高音差别并不明显。 
散射噪声场: 
散射噪声场中,噪声能量向各个方向传播的概率是相等的。 
包含若干个来自方向上均匀分布的相位随机的平面波,

假设 在声速为 0 c 的静止介质中,存在 N 个单极子声源,其角频率,对应的波数即为 k=角频率/声速,位置为x,强度为q,空间中任意一点的声波压强表达式如下:




相干和非相干噪声

相干噪声 
这里写图片描述 
横轴是归一化频率(f=2)

非相干噪声 
这里写图片描述

波动方程

  • 波数(k) 
    沿着波的传播方向单位长度内波的全周期数。k=1/=fck=1/波长=fc,也可定义成k=2π/k=2π/波长,这样可以理解成相位随距离的变化率。

  • 满足Nyquist抽样准则:Ts≥2fmax

近场和远场

这里写图片描述 
远场模型可以看成是平面波(左),传播方向是ζ0,远场要看成是球面波(右),传播方向是ζ0m
这里写图片描述 
由于1.麦克风阵列间距相对于说话人距离1.5m/2.5cm601.5m/2.5cm≈60倍,假设符合远场模型。

固定波束形成

滤波器权值固定,方法简单,运算量低,能够抑制背景噪声,对可变噪声场,效果一般。

delay-sum

延迟求和 算法是最简单的波束形成方法,通常称为传统波束形成(Conventional BeamingForming)。一般用在电话会议场景,对非相干噪声效果较好,如空间白噪声,然而,如果噪声源是相干的,降噪的程度依赖于噪声的方向,在室内混响场景下,并不能获得很好的效果。 
设输入信号是s(t)s(t),叠加噪声是加性的n(t)n(t),则第m个麦克风观测到的信号是: 
xm(t)=s(t)+nm(t)xm(t)=s(t)+nm(t) 
这里写图片描述
则将每一路信号经过冲击响应延迟后再相加可以得到时间匹配上的信号。 
这里写图片描述
则延迟和输出是: 
y(t)=m=0M1wmxm(t[Mm1]T)y(t)=∑m=0M−1wmxm(t−[M−m−1]T) 
这里写图片描述

filter-and-sum

这里写图片描述 
和delay-sum相比其使用了幅度和相位不一致的权重。

这里写图片描述

自适应波束形成

如Frost/mvdr等,在相干噪声场,可以得到较高的信噪比改善,但是在弱相干噪声场和在散射噪声场中,性能不如固定波束形成。其一种结构可以如下: 
这里写图片描述

后置滤波作用

可以用来去除非相干噪声,但是在相干噪声情况下性能退化,甚至不可用。zelinski后置滤波器的结构体如下: 
这里写图片描述 
apab(adaptive post-filter for an arbitrary beamformer) 后置滤波器 
这里写图片描述 
通常将自适应滤波器和后置滤波器结合起来以抑制相干和非相干噪声。 
这里写图片描述

一张频谱图,可以反映它们之间的对比关系 
这里写图片描述 



http://chatgpt.dhexx.cn/article/mpXc1MW9.shtml

相关文章

LMS波束形成

LMS自适应波束形成器 % 标量阵最小均方准则(LMS)自适应波束形成器(ADBF) close all; Sound_velocity1200; %声速 Frequency300; %信号频率 Sample_Frequency100Frequency; %采样频率 Array_num16; %阵元数 Array_distance1/2(Sound_velocity/Frequency); %阵元间距 Signal_Leng…

波束形成(最大信噪比准则、LCMV、MSC、LMS、RLS)

波束形成(最大信噪比准则、LCMV、MSC、LMS、RLS) 波束形成的基本概念 # 波束形成准则 分别对上面所阐述的最大信噪比准则,旁瓣对消器,线性最小均方误差,以及自适应LMS和RLS算法进行仿真。 最大信噪比准则&…

语音领域的波束形成Beamforming小结

关注、点赞、收藏是对我最大的支持,谢谢^v^ 目录 1. 背景介绍 2. 多通道信号的公式描述 3. 传统波束形成(delay-and-sum和filter-and-sum) 4. MVDR 4.1 传统MVDR 4.2 融入深度学习的MVDR 5. GEV(Generalized eigenvalue) beamformer …

空间谱专题02:波束形成(Beamforming)

作者:桂。 时间:2017-08-22 10:56:45 链接:http://www.cnblogs.com/xingshansi/p/7410846.html 前言 本文主要记录常见的波束形成问题,可以说空间谱估计是波束形成基础上发展而来,在系统论述空间谱之前,有…

UE4 插件 简单全景播放器

UE4 插件 1分钟完成全景展示项目(Simple panorama player and video player) 全景图、全景视频播放器,附带列表和热点模板。另附带一个视频播放器。全景播放器可以使用本地资源或Web URL。 完全由蓝图实现,易于扩展和修改。 具有…

Android VR Player(全景视频播放器) [10]: VR全景视频渲染播放的实现(exoplayer,glsurfaceview,opengl es)

前言 此博客的大部分内容来自我的毕业设计论文,因此语言上会偏正式一点,如果您有任何问题或建议,欢迎留言。在此感谢实验室的聂师兄,全景视频render部分的代码设计主要参考了他所编写的代码来完成,他对视频渲染过程的…

VR+全景播放器+头控讲解-07

VR全景播放器头控讲解-01-知识储备VR全景播放器头控讲解-02-创建球体VR全景播放器头控讲解-03-渲染视频VR全景播放器头控讲解-04-滑动手势VR全景播放器头控讲解-05-伸缩画面VR全景播放器头控讲解-06-头控实现VR全景播放器头控讲解-07-分屏技术 学习目标 如何实现分屏 实现思路 …

[OpenGL]从零开始写一个Android平台下的全景视频播放器——目录

Github项目地址 为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过不会继续更新(保留在初始版本) 先放一张效果图: Youtube 优酷 前言 Android平台下的全景视频(360,Panoram…

VR+全景播放器+头控讲解-06

VR全景播放器头控讲解-01-知识储备VR全景播放器头控讲解-02-创建球体VR全景播放器头控讲解-03-渲染视频VR全景播放器头控讲解-04-滑动手势VR全景播放器头控讲解-05-伸缩画面VR全景播放器头控讲解-06-头控实现VR全景播放器头控讲解-07-分屏技术 学习目标 掌握头控部分布局 如何检…

mxreality.js 免费开源的全景图/全景视频/VR 直播播放器介绍

[2018-10-20 重要更新]支持VR直播功能支持全景视频poster支持全景图和视频和场景之间随意切换全景模式切换回默认主视角播放列表 优点: 1、全景图支持全景模式和VR模式 2、支持网页端全景图补天功能,有效去除顶部和底部拼接留下的痕迹、做出真正完美的…

Unity3D制作极简版VR全景视频播放器

自从Unity5.6.4还是2017的版本开始,官方提供了兼容移动端和Windows端的视频播放器控件——Video Player,下面介绍如何使用这个控件,制作VR播放器。 1、新建空白场景,新建球体Sphere,Camera放置球心位置; …

基于threejs,完成一个简单的全景图播放器

直接上代码 CameraControls.js相机控制器 import * as THREE from three;function CameraControls(object, domElement, cb, update) {this.object object;this.domElement domElement ! undefined ? domElement : document;this.enabled true;this.lookSpeed 0.1;this.…

使用SceneKit编写VR全景播放器

最近用SceneKit做了全景看房的功能,现总结下如何实现的。 先看下最终的效果: gif1.gif VR图片全景播放器有以下功能: 360度手势滑动,缩放陀螺仪分屏(VR眼镜)热点hotpot头控/eyepick 手势滑动,缩放&#…

AVProVideo☀️五、播放全景视频

🎊 商务合作:https://skode.cn/file/businesscard/wechat.jpg 🎥 本文由 星河造梦坊公司官方 原创! 🏅 如果你有技术问题或项目开发,都可以加上方的联系方式,和我聊一聊你的故事🧡 文章目录 🟥 360球形全景视频🟧 360立方体全景视频🟨 360天空盒全景视频🟩…

[OpenGL]从零开始写一个Android平台下的全景视频播放器——3.1 全景视频是如何实现的

Github项目地址 为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过更新会慢一些 回到目录 恭喜Martin同学获得由CSDN颁发的“更新慢慢慢”荣誉称号 全景视频有很多种类,例如Sphere全景,Skybox(Cubemap&…

VR全景播放器 AvPro Video

最近项目需要,使用Unity开发VR全景播放器,包括PC端和VR一体机端(Android)。Unity5.6开始支持VideoPlayer,使用自带的VideoPlayer,很顺利把播放器完成了,使用了很长时间,一直没什么性…

FFmpeg 开发(07):FFmpeg + OpenGLES 实现 3D 全景播放器

该文章首发于微信公众号:字节流动 FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放 FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放 FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放 FFm…

html全景直播播放器,Insta360 Player(全景视频播放器) V2.3.6 官方版

Insta360 Player是一款性能强劲且专业的全景视频播放器,它支持播放Insta360全景相机拍摄的全景视频和图片,并且支持本地视频的播放,操作非常的简单,有需要的用户可以下载来使用,此软件支持播放 Insta360全景相机产生的…

全景播放器,免安装支持全景视频

全景图片播放器,同时支持全景视频,可直接拖入页面查看。免安装全景播放器,文件不要大于20M Hpano 3D全景播放器是一款免安装可以720度互动浏览的全景图片查看器,通过拖球形全景图片或视频文件进行预览,720度的全方位图片查看器让你…

android 简单的exoplayer全景播放器

全景播放器网上一搜也是一堆一堆的,还有google推出的vrsdk,所以也没啥好说的,就简单记录一下 实现全景主要用到的还是opengles,只要用的开源播放器有setSurface(Surface surface)这个函数,就可以不改播放器源码实现 …