【麦克风阵列增强】Delay and sum beamforming
作者:桂。
时间:2017-06-03 15:40:33
链接:http://www.cnblogs.com/xingshansi/p/6937576.html
前言
本文主要记录麦克风阵列的几个基本知识点,并简单介绍基本的波束合成方法:Delay and sum (DSB).
一、栅瓣效应
类似干涉仪中的phase-wrapping问题:传感器的距离超过半波长的距离。
A-Beam Pattern
以线性阵列为例

输出为

对应的增益,也就是output,取频率为1KHz的数据:

有时候也用极坐标表示

B-Frequency Response
考虑如下场景

实际只有一个波峰,却在不同角度长出多个一样的,这就是栅瓣

相位是角度、频率的共同作用,对应的栅瓣从二维平面更容易理解

从每一个来看,grating lobe就是栅瓣:

二、Delay and sum
DSB核心的思想就是延迟相加,对于栅瓣的DOA估计需要解模糊。假设估计出DOA,进行补偿之后(delay)通过叠加(sum)就可以实现目标信号的增强:

关于delay的操作,可以在时域进行也可以在频域进行,本质上是小数延迟的问题(fractional delays).例如对于下面的dual-channel问题:

需要延迟 是0.5149ms,也就是24.717samples,而不是整数。

小数延迟实现的思路有很多种,例如可以通过线性相位(延迟)的FIR构造,对应就是sinc函数,通常构造完成之后会做一个加窗的平滑处理:
double delay = 0.25; // Fractional delay amount
int filterLength = 11; // Number of FIR filter taps (should be odd)
int centreTap = filterLength / 2; // Position of centre FIR tap for (int t=0 ; t<filterLength ; t++)
{
// Calculated shifted x position
double x = t - delay; // Calculate sinc function value
double sinc = Math.sin(Math.PI * (x-centreTap)) / (Math.PI * (x-centreTap)); // Calculate (Hamming) windowing function value
double window = 0.54 - 0.46 * Math.cos(2.0 * Math.PI * (x+0.5) / filterLength); // Calculate tap weight
double tapWeight = window * sinc; // Output information
System.out.printf("%3d % f % f % f\n", t, sinc, window, tapWeight);
}
其他如:重采样技术(Resample)、Farrow-filter技术,都可以实现这样的功能。
参考
- http://www.labbookpages.co.uk/audio/beamforming/delaySum.html#pattern
【麦克风阵列增强】Delay and sum beamforming的更多相关文章
- 【论文:麦克风阵列增强】An alternative approach to linearly constrained adaptive beamforming
作者:桂. 时间:2017-06-03 21:46:59 链接:http://www.cnblogs.com/xingshansi/p/6937259.html 原文下载:http://pan.ba ...
- 【论文:麦克风阵列增强】An Algorithm For Linearly Constrained Adaptive Array Processing
作者:桂. 时间:2017-06-03 15:06:37 链接:http://www.cnblogs.com/xingshansi/p/6937635.html 原文链接:http://pan.ba ...
- 【论文:麦克风阵列增强】Signal Enhancement Using Beamforming and Nonstationarity with Applications to Speech
作者:桂. 时间:2017-06-06 13:25:58 链接:http://www.cnblogs.com/xingshansi/p/6943833.html 论文原文:http://pan.bai ...
- 【论文:麦克风阵列增强】Speech Enhancement Based on the General Transfer Function GSC and Postfiltering
作者:桂. 时间:2017-06-06 16:10:47 链接:http://www.cnblogs.com/xingshansi/p/6951494.html 原文链接:http://pan.ba ...
- 【论文:麦克风阵列增强】Microphone Array Post-Filtering For Non-Stationary Noise Suppression
作者:桂. 时间:2017-06-08 08:01:41 链接:http://www.cnblogs.com/xingshansi/p/6957027.html 原文链接:http://pan.ba ...
- 麦克风阵列波束形成之DSB原理与实现
语音识别有近场和远场之分,且很多场景下都会用到麦克风阵列(micphone array).所谓麦克风阵列是一组位于空间不同位置的麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的 ...
- 基于麦克风阵列的声源定位算法之GCC-PHAT
目前基于麦克风阵列的声源定位方法大致可以分为三类:基于最大输出功率的可控波束形成技术.基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE)的声源定位技术. 基 ...
- 详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)
前面我们介绍了 WebRTC 音频 3A 中的声学回声消除(AEC:Acoustic Echo Cancellation)的基本原理与优化方向,这一章我们接着聊另外一个 "A" - ...
- JavaCV FFmpeg采集麦克风PCM音频数据
前阵子用一个JavaCV的FFmpeg库实现了YUV视频数据地采集,同样的采集PCM音频数据也可以采用JavaCV的FFmpeg库. 传送门:JavaCV FFmpeg采集摄像头YUV数据 首先引入 ...
随机推荐
- javaEE-string家族三大流氓
最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下. 关于这三个类在字符串处理中的位置不言而喻,那 ...
- NodeJS 中npm包管理工具
NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从 ...
- [ext4]空间管理 - 与分配相关的关键数据结构
在块分配机制中,涉及到几个主要的数据结构. 通过ext4_allocation_request描述块请求,然后基于块查找结果即上层需求来决定是否执行块分配操作. 在分配过程中,为了更好执行分配, ...
- Typecho - MyTagCloud标签云插件
一.前言: 标签云是博客.CMS类系统的常见功能,读者可以根据标签快速的查找和浏览自己喜欢的文章.个人很喜欢Typecho的简洁,但对于后台不能控制前台标签栏目的显示还是略表遗憾.令人高兴的是Type ...
- [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
- 谈谈一些有趣的CSS题目(十五)-- 奇妙的 background-clip: text
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 实用收藏Linux命令备忘
系统操作 #使用shutdown命令马上重启系统[root@H32 ~]# shutdown –r now #使用shutdown命令马上关闭系统[root@H32 ~]# shutdown –h n ...
- linux 内核的rt_mutex 锁操作实现的临界区
rt_mutex 定义的锁规则: 以偶对齐的task_struct指针为上锁标记, 偶对齐的指针地址最低位用以标记是否有waiters. rt_mutex的trylock,lock,以及unlock都 ...
- jquery按钮绑定特殊事件
本文主要介绍点击一个按钮处理事件的一些特殊情况和技巧. 一.第一次点击触发一个函数,之后点击都触发另一个函数 1.小白实现 2.大神实现 代码如下: <body> <button&g ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化
阶段总结 又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零5天,这两个多月的时间,完成了第一个项目ssm-demo的更新,过程中也写了33篇博客 ...