声源定位之3精读《The Generalized Correlation Method for Estimation of Time Delay》
2.2.1 标题(2019年9月5日)
估计时间差的广义互相关方法
- 互相关可以表示两个信号的相似程度。
- 计算:两个信号循环移位相乘再相加,得到的一组互相关值。
- 相关函数:
- 何为广义?通用的框架,可以设计多种实现细节?
2.2.2 摘要
- 最大似然(ML)估计器被用来计算在不相关噪声存在情况下,空间分离的两个传感器接收到的信号之间时间差。
- 假设:噪声是不相关的,噪声与目标声源信号不相关,噪声与噪声之间也不相关。
- 这个ML估计器可以由一对接收器预滤波器后跟一个互相关来实现。
- 后面由公式可知,互相关函数前乘以一个加权/滤波函数。
- 最大相关值对应的时间参数为延迟估计。
- 相关表示了信号的相似程度,所以最大相关值对应的时间参数估计为时延。
- ML估计器与几个其他已提出的类似形式的方法进行了比较。
- 在特定条件下,ML估计器与一个方法完全相同。
- 完全相同?性能吗?GCC方法不是很经典的一个方法吗?难道不应该是效果很好吗?
- 定性地,预滤波器的作用是强调传递给相关器的信号中信噪比最高的频率,同时,抑制噪声的能量。
- 预滤波为信号中SNR高的频率增加权重,在SNR较低的频率赋予较小的权重。
- 如何确定SNR高的频率?如何确定噪声能量高的频率,并进行抑制呢?
- 通过广义Eckart滤波器,我们也提供了相同类型的预滤波。这种滤波器最大化相关器输出的信噪比。
- 什么是Eckart滤波器?
- Eckart滤波器最大化的是相关输出值中的信噪比
- 对于低信噪比,ML估计器等同于Eckart预滤波。
- 低信噪比的情况,为什么ML说等同于Eckart?本质一样?
- GCC预滤波最大化的是相关值,并且是通过强调接收信号中SNR最大的频带以及抑制噪声能量,再把预滤波的结果信号送入相关器中去做相关操作。
- 低信噪比情况下,Eckart滤波器使得相关值的SNR最大,而GCC预滤波通过强调接受信号中SNR最大的频带抑制噪声能量,使得预滤波后的信号的相关值最大。
- 既然等同于,那么GCC的优势在哪里?
2.2.3 引言
第一段
- 在噪声存在情况下,一个由远处声源发出的,并且被两个空间分离的传感器监听的信号可以数学建模为:
- x1(t) = s1(t) + n1(t)
- x2(t) = αs1(t+D) + n2(t)
- 其中,s1(t),n1(t),n2(t)是真实,同时固定的随机过程。我们假设,信号s1(t)与n1(t),n2(t)不相关。
- 假设:噪声存在
- 第一个麦克风接收到的信号中,包含单声源s1和噪声n1。
- 第二个麦克风接收到的信号中,包含强度衰减和时间位移的单声源s1和噪声n2。
- 两个信号噪声不同,不相关。
第二段
- 有很多应用对估计时延D感兴趣。
- 本文提出了一个ML估计器,并且把它与其他相似技术作对比。
- 虽然针对物理现象的模型假设声源是固定的,但是此处提出的这个技术通常可以应用于缓慢变化的环境中,这种环境中信号和噪声的特性在有限的观察时间T内保持稳定不变。
- 假设:声学环境稳定,即声源位置强度不变,噪声类型能量不变,不会新增信号,也不会有信号消失。
- 如果整个声学环境变化缓慢,包括噪声,声源位置及能量,那么在有限时间内我们也可以认为该场景是固定的。
- 更进一步地,时延D和衰减α可能也缓慢变化。
- 声源位置缓慢移动(D),声源能量缓慢增强或减弱(α)
- 因此,估计器被约束在对有限时间的观察值进行估计。
- 所以我们用ML估计器估计时延时,仅取有限时间的观察值。
第三段
- 在估计器的设计中,另一个重要的考虑因素是信号和噪声统计的先验知识的可用数量。
- 在许多问题中,这些信息是微不足道的,可以忽略的(negligible)。
- 例如,被动检测不像通常的通讯问题,其声源频谱是未知,或者仅仅知道大概信息。
- 尽量少地用到先验知识,否则很多应用场景将会受限。
第四段
- 一个常用的计算时间延迟D的方法,以及相对于传感器坐标的到达角度由互相关函数计算:
- R_x1 x2(τ) = E[x1(t)x2(t-τ)]
- 其中E表示期望。最大化上式的参数τ提供了延迟的估计值。
- τ是变量,x1与位移后的x2信号相乘,再取期望。
- 为什么有期望?归一化?
- 然而,由于有限的时间观察值,R只能被估计。
- 因为只取了一部分信号进行相关,所以只是估计值,并不是精确的计算值。
- 上式是理想的计算公式,而我们只利用一部分采样点,所以实际的估计过程如下式所示。
- 例如,对于遍历过程(ergodic processes),互相关的估计通过下式给出:
- R_x1 x2(τ) = 1/(T-τ) 从τ到T积分 x1(t)x2(t-τ) dt
- 其中,T代表了观察间隔。
- 时间观察值的长度,采样点个数。
- 为了提高时延估计的精确度,我们希望x1(t)和x2(t)在上式的积分之前进行预滤波。
- 如图1所示,xi可能通过Hi滤波,产生yi,i=1,2。
- 相应结果yi,相乘,积分,并且在时间位移τ的范围内平方,直到获得峰值。(看图1)
- 调整时间位移参数tao,使得计算结果最大。
- 为什么有平方?
- 答:因为计算功率谱。
- 时间位移所导致的峰值是真实延迟D的一个估计值。
- 当滤波器H1(f)=H2(f)=1时,对于所有f而言,估计值D仅仅是互相关函数峰值的横坐标值。
- Hi(f) = 1时,相当于没有进行滤波,直接进行互相关的计算。
- 当麦克风距离较远时,应该会出现空间混叠的现象,即存在多个峰值。
- 此处应该取最大值。
- 这篇论文通过引入滤波器H1(f)和H2(f)提供了广义互相关机制,当合适的滤波器被挑选时,它们可以帮助时延的估计。
第五段
- 通过傅里叶变换,我们可以知道x1(t)和x2(t)之间的互相关与互功率谱密度函数之间的关系。
- 互相关与互功率谱密度函数互为一对傅里叶变换与逆傅里叶变换。
- 傅里叶变换公式:
- R_x1x2(τ) = 负无穷到正无穷积分 G_x1x2(f) G^(j*2*pi*f*τ) df
- Rx1x2是x1和x2的互相关函数,Gx1x2是x1和x2的互功率谱密度。
- 当x1(t)x2(t)如图1所示进行滤波,然后滤波器的输出,也就是y之间的互功率谱由公式给出:
- G_y1y2(f) = H1(f)H2*(f)G_x1x2(f)
推导?
- 其中*表示复数共轭。
- 因此x1(t)和x2(t)之间的广义相关为:
- (6b)表示了通用的频率加权。
- H1(f)和H2(f)可以由不同的预滤波器组成。
第六段
- 实际上,只有从x1和x2有限的观察值中我们只能得到一个互功率谱密度函数的估计值。
- 那互功率谱怎么得到呢?
- 答:通过最大化互相关估计值(6c),得到的。
- 因而,积分被估计,并且用于估计时延。
- 通过该公式估计得到,不能直接计算得出精确值。
- 事实上,根据加权函数的特定形式和先验信息,估计公式(6a)-(6b)中的加权函数可能同样必要。
- 加权函数的选择。
- 后面我们可以看到,是通过最大化(6c)来找到、估计出合适的加权函数。
- 例如,当预滤波器的作用是去强调传递给相关器的信号中具有最高信噪比的频率时,我们希望加权函数是一个信号频谱和噪声频谱的函数,而信号频谱和噪声频谱必须是已知或者可被估计(估计好)的。
- 因为如果我们想要给信噪比最高的频带加权,那么就必须知道哪些频带SNR最高,所以这样就要求信号和噪声的频谱是已知信息,即先验知识或者是可被估计(估计好)的。
第七段
- 为了优化一定的性能标准的加权函数的选择已经被一些研究人员所研究。
- 在给定信号和噪声频谱的前提下,本篇论文以公式(1a)(1b)为数学模型,将会从最大似然估计器中得到时延D。
- 仅仅有不相关噪声
- 结果显示,本文方法(最大似然估计器)等同于拥有合适的加权函数的(6a)-(6c)。
- 以最大化互相关值为标准,使用估计得来的加权函数的性能要等同于手动选择合适的加权函数。
- 结果表明,这个加权将等同于[12]提出的方法,也等同于简化假设版本下[21]提出的方法。
- 此处提出的研究并没有在最开始就假设估计器具有(6c)的形式。
- 我们没有一开始就假设ML估计器是符合公式(6c)设计的形式。
- 那一开始是什么形式呢?
- 而是,ML估计器可能通过选择时延τ来实现,该时延τ最大化具有合适权重函数和互功率谱的公式(6c)。
- 后期在选择使得互相关估计值取得最大值的τ的过程中,挑选合适的权重函数和合适的互功率谱估计,从而实现了ML估计器。
- ML估计器到底是什么?
- 答:从数学上来说,我们可以在 的所有可能取值中寻找一个值使得似然函数取到最大值。这个使可能性最大的 值即称为 的最大似然估计。[维基百科]
- 本文中, 是时延tao,似然函数是互相关函数。
- 互功率谱是怎么估计得来的?
- 权重函数怎么得来的?
- 在使用GCC的时候,互相关估计值是确定的(两个信号做互相关运算),加权函数也是确定的(PHAT/SCOT等),最后直接取使得互相关估计值最大的时延τ即可。
- 产生最大似然估计值的加权函数,将会与其他已提出的权重函数比较。
- 本文的创新点在于权重函数。
- 在特定条件下,ML估计器显示出等同于其他方法。
2.2.4 过程解释
第一段
- 在理想情况下,检查为互相关R_y1y2的形状加权的效果、效应所提供的的信息是丰富的。
- 如果是理想情况的话,即符合公式1的数学建模,那么我们可以利用很多信息。
- 对于公式(1)中的模型形式,x1(t)和x2(t)的互相关是:
第二段
- 公式(7)的傅里叶变换形式提供了互功率谱
- 公式7推导到8的依据是傅里叶变换
- 如果n1(t)和n1(t)是不相关(G_n1n2(f)=0),x1(t)和x2(t)的互功率谱是一个缩放的信号功率谱乘以一个复指数。
- 缩放是指α, 为功率谱,复指数是指
- 即
- 因为在时域相乘等于频域卷积(反之),将 代入得(也可以由公式(8),再变换到时域得),其中 表示卷积。
- 公式推导依据:
- 为什么delta函数的参数是t-D,而不是tao-D?
- 答:的确是tao-D,论文中公式打错了。
- 由于参数是t-D,意味着不管tao取什么值,声源s1的自相关值都会偏移D。
- 不同位置的声源偏移量不同,当存在多个声源,即偏移量时,多个位移叠加,使得结果不再准确。
第三段
- 公式9的一个解释是通过对信号谱的傅里叶变换,狄利克雷函数已经被传播(偏移)了,或者说被模糊(smeared)了。
- 为什么是偏移了?不是本来就有时延D吗?
- 如果s1是一个白噪声声源,那么它的傅里叶变换是一个狄利克雷函数,并且没有发生偏移。
- 白噪声是在等宽度频带内的能量相同的随机噪声,即其功率谱密度在各个频带内是常数。
- 自相关函数的一个重要特性是
- 自相关函数在0处取得峰值。
- 因为信号本身不偏移时,相似度是最高的。
- 对于周期函数的特定tao,这个特性都成立。
- 那么对于非周期函数呢?
- 然而,在大多数实际应用中,对于tao=0,等式并不成立。并且真实的互相关公式9将会在D处出现峰值,不管信号是否偏移。
- 因为声源s1的自相关卷积偏移了的冲激函数,不管tao取什么值,自相关值都会偏移。
- 因为冲击函数,所以仅在D处取到值。
- 这个偏移会影响峰值,使其变宽。
- 为什么是变宽?难道不是整体偏移D吗?
- 对于单个时延,这可能不是一个严重的问题。
- 单个时延对应单个峰值的存在。
- 峰值整体偏移被延展,CC的大致形状是不会受到太大影响的。
- 然而,当信号存在多个延时的时候,真正的x1x2的互相关由下式给出:
- 从公式中观察:存在一个声源s1,多个时延Di。
- 是否代表从声源处由多条路径传播到麦克风位置,即存在混响呢?
- 这种情况下,与s1自相关的卷积将会把一个冲激函数偏移叠加到另一个上,因此导致我们不可能区分峰值或者时间延迟。
- 存在多个时延的时候,不同的偏移叠加在一起,使得原本峰值的位置偏移,并且可能在原本没有峰值的地方出现更大的峰值。
- 这样,所有的峰值都不可信,所以不可能利用ML估计出真实时延。
- 在理想情况下,对于所有频率都有 ,我们应该选择能够使 保持大的尖锐的峰值的 ,而不是宽大的峰值,以此来保证良好的时延分辨率。
- 然而,尖锐的峰值对于由有限观察时间引入的误差更加敏感,尤其是在低信噪比的情况下。
- 因此,正如其他谱估计问题, 的选择是个权衡分辨率和稳定性的问题。
- 宽大的峰值会平缓误差。
- 如果我们选择滤波器使得峰值更加尖锐,那么误差也会显现出来。
- 误差太多,也会影响最终的判定。
- 误差是由有限的观察时间采样点引入的,因为有限,所以只能由互相关估计值逆傅里叶变换出互功率谱。
- 比喻:就像河流,涨水时,河底石头的形状变得平缓,甚至只能看见水面;水退去时,水落石出,各种小瑕疵都显现出来,无处躲藏。
第四段
- 之前的讨论决定了权重函数所要起到作用的背景。
- 现在在表格1中列出的5个广义互相关函数将会被逐一讨论。
2.2.5 各种权重的详细解释
The Phase Transform(PHAT)
- 为了避免以上的峰拓展的证据,PHAT使用了权重:
- 对于仅包含不相关噪声的模型(1),即两个噪声的互功率谱等于0,
- 理想情况下(x1和x2的互功率谱的估计准确),频率内的功率谱为一个常数,在时域内就是无偏移的单位冲击函数。
- 问:公式(21)?
- 答:因为我们希望时域的互相关是一个单位冲击响应,那么我们就需要让加权后的功率谱等于常数1。而理想情况下, (公式8),后面 是相位,那么公式(21)就成立了。
- PHAT权重被推导证明为针对这个技术的纯净的权重。
- 值得注意的是,具有不相关噪声的模型(1)在PHAT的作用下,理想情况下不会像其他Processors那样拓展峰。
- 然而,在实际场景中,当 ,并且 的估计将不再是一个delta函数。
- PHAT的另外一个明显的瑕疵是它把 当做 的逆来加权。
- 问:为什么会说Gx1x2是Gs1s1的逆来加权?
- 答:根据公式(21)。
- 问:为什么这是一个瑕疵?
- 答:因为在某些频带声源能量比较弱,其功率谱就会很小,此时就会增大误差。
- 因此,在信号能量很小的频带,误差会加大。
- 尤其是在某些 的频带,这样的话,在那些频带内相位 没有定义,相位的估计是不确定的,均匀分布在[-pai,pai]弧度间隔内。
- 对于公式(1)中的模型,这种行为是权重函数 被另外加权去补偿信号能量的缺失。
- 问:什么叫补偿信号能量的在或不在(presence or absence)?
- 问:什么是被另外加权?
- SCOT权重是一种根据信号和噪声特性分配权重的方法。
- 问:为什么说根据信号和噪声的特性?
- 答:权重中考虑了x1的自功率谱,包含声源信号和噪声信号。
声源定位之3精读《The Generalized Correlation Method for Estimation of Time Delay》的更多相关文章
- 声源定位之2精读《sound localization based on phase difference enhancement using deep neuarl networks》
2.1.1 题目与摘要 1.为什么要增强IPD? The phase differences between the discrete Fourier transform (DFT) coeffici ...
- 基于麦克风阵列的声源定位算法之GCC-PHAT
目前基于麦克风阵列的声源定位方法大致可以分为三类:基于最大输出功率的可控波束形成技术.基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE)的声源定位技术. 基 ...
- Generalized Power Method for Sparse Principal Component Analysis
目录 重点 算法 这篇文章,看的晕晕的,但是被引用了400多次了,就简单地记一笔. 这个东西,因为\(\ell_1\)范数,所以会稀疏化,当然,和\(\gamma\)有关. 重点 我想重点写的地方是下 ...
- 论文翻译:2021_ICASSP 2021 ACOUSTIC ECHO CANCELLATION CHALLENGE: INTEGRATED ADAPTIVE ECHO CANCELLATION WITH TIME ALIGNMENT AND DEEP LEARNING-BASED RESIDUAL ECHO PLUS NOISE SUPPRESSION
论文地址:https://ieeexplore.ieee.org/abstract/document/9414462 ICASSP 2021声学回声消除挑战:结合时间对准的自适应回声消除和基于深度学习 ...
- Python中导入第三方声源库Acoular的逻辑解释以及Acoular的下载
[声明]欢迎转载,但请保留文章原始出处→_→ 秦学苦练:http://www.cnblogs.com/Qinstudy/ 文章来源:http://www.cnblogs.com/Qinstudy/p/ ...
- 用LabVIEW做声源定位系统
前一阵子,研发部举办了为期三天的第一届Innovation Day,让大家用3天时间去完成工作之外的一些创意.有人做微信小程序,有人继续研究一些工作中用到的Tool,有人把一直想解决而没时间解决的老b ...
- Android定位&地图&导航——自定义公交路线代码
一.问题描述 基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示 二.通用组件Application类,主要创建并初始化BMapManager public class App exten ...
- Beautiful and Powerful Correlation Tables in R
Another correlation function?! Yes, the correlation function from the psycho package. devtools::inst ...
- 3D音效
摘自:http://baike.baidu.com/view/1330437.htm?fr=aladdin 3D音效就是用扬声器仿造出似乎存在但是虚构的声音.例如扬声器仿造头顶上有一架飞机从左至右飞过 ...
随机推荐
- Beego 学习笔记14:Session控制
Session控制 1> Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2> Beego框架内置了 session 模块,目前 ...
- 剑指前端(前端入门笔记系列)——DOM(元素大小)
DOM——元素大小 DOM中没有规定如何确定页面中与元素的大小,IE率先映入了一些属性来确定页面中元素的大小,以便开发人员使用,目前,所有主要的浏览器都已经支持这些属性了. 1.偏移量(单位为 ...
- HTML5深入学习之 WebSQL 数据库
概述 WebSQL 并不是 HTML5规范的一部分,而是一个独立的规范,它可以用来做一些离线应用 核心API openDatabase() => 用来打开或创建数据库(没有时则创建,有则打开) ...
- CSS 初识
一.CSS 发展历程 从HTML被发明开始,样式就以各种形式存在.不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制.最初的HTML只包含很少的显示属性. 随着HTML的成长,为了满足页面设计 ...
- VMware网络连接三种模式bridged、host-only、NAT
1. bridged(桥接模式) 在桥接模式下,虚拟机和主机处于同一网段,这样虚拟机才能和主机进行通信 使用桥接模式,就像连接在同一个Hub上的两台电脑 //简单配置ip # ifconfig eth ...
- Java JDBC事务
JDBC默认是自动提交,事务是关闭的,statement|preparedStatement.executeUpdate()或excute()执行增删改,执行一次就提交一次(自动同步到数据库). JD ...
- Spark-Bench 测试教程
Spark-Bench 教程 本文原始地址:https://sitoi.cn/posts/19752.html 系统环境配置 操作系统:centos7 环境要求:安装 JDK, Hadoop, Spa ...
- XXX接口自动化测试方案
XXX接口自动化测试方案 1.引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 X ...
- seaborn---画热力图
1.引用形式: seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None ...
- httprunner学习3-extract提取token值参数关联(上个接口返回的token,传给下个接口请求参数)
前言 如何将上个接口的返回token,传给下个接口当做请求参数?这是最常见的一个问题了. 解决这个问题其实很简单,我们只需取出token值,设置为一个中间变量a,下个接口传这个变量a就可以了.那么接下 ...