【声源定位】基于matlab广义互相关声源定位【含Matlab源码 548期】

举报
海神之光 发表于 2022/05/29 22:43:34 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【声源定位】基于matlab广义互相关声源定位【含Matlab源码 548期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付凭证,...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【声源定位】基于matlab广义互相关声源定位【含Matlab源码 548期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、广义互相关声源定位简介

基于麦克风阵列的声源定位技术的研究在国内受到了越来越多的关注,麦克风阵列的声源目标定位技术可以定义为利用麦克风阵列采集声源目标,经过一系列对声音信号的分析操作与处理来确定声源的位置.与雷达探测技术以及其他探测技术相比,该技术有很多特点,比如因其采用被动式工作原理,所以探测隐蔽,不容易被发现.目前,基于麦克风阵列的定位技术逐渐变成研究的主流,涉及视频会议系统、汽车鸣笛定位、人机交互等.

经过多年发展,基于麦克风阵列的声源定位技术已有较多的理论和方法,定位方法大体可以分三类:基于到达时延估计方法、基于最大输出功率的可控波束形成方法、高分辨率谱估计方法.基于时延估计法主要根据声源信号到达两个不同位置麦克风的时间差计算出声源位置相对一组麦克风所在的双曲面,通过多个双曲面交集来确定声源位置;基于最大输出功率的可控波束形成方法主要利用波束形成技术,不断调整阵列信号的接收方向,同时对整个接收空间进行扫描,接收能量最大的方向即为声源方向;高分辨率谱估计方法主要是利用各个阵元信号之间的相关矩阵,通过计算相关矩阵的空间谱获得声源的方向角.其中,基于时延估计的定位算法简单、定位精度高,是目前声源定位信号处理中常用的方法.

1 基本模型
声波在传播的过程中会发生衰减,而衰减因子与传播的距离成正比,因此声波从声源到达不同阵元时幅度相差不大,而因延迟产生的相位差则较大.根据声源与麦克风阵列之间的距离r=2D/λ,可以将阵列模型分为近场和远场模型.通常定义声源与阵列之间的距离为远近场临界值,其中λ为声波波长,D为阵列孔径.当麦克风阵列与声源之间的距离r<2D/λ时,阵列处于近场模型,麦克风阵列接收的声波是球面波.反之,当r>2D/λ时,阵列处于远场模型,声源到各阵元的距离差相比于声源到麦克风阵列的距离可以忽略不计,阵元间接收信号仅存在相位延迟且可将声波看作平面波.

假设线阵麦克风阵列的所有阵元接收到的信号只包含直达信号与加性噪声,并且每个麦克风之间的噪声相互独立,如图1所示.其中,S表示声源,M1,M2,M3,⋯,MN表示N个麦克风,根据空间采样定理,每相邻两个麦克风之间的间距在选择上必须满足d≤λ(min)/2
在这里插入图片描述
图1 信号模型
声源信号s(t)呈辐射状态传播,且信号的能量与麦克风和声源间的距离成反比,则第i(i=1,2,3,…,N)个麦克风Mi所接收到的信号xi(t)为:
在这里插入图片描述
其中,αi表示声源信号s(t)的传播衰减因子,τi表示声源S到达第i个麦克风的时延,ni(t)表示第i个麦克风接收的加性噪声.

2 互相关算法
基于时延估计的声源定位算法主要分为两个步骤:第一步,估计声源信号到达各个麦克风之间的时间差;第二步,利用上一步所得到的时间差和声源与麦克风阵列之间的几何关系来估计声源位置.在声源定位系统中,时延估计技术至关重要,时延估计的精度直接影响定位的精度.常用的时延估计算法是互相关法.

互相关函数是描述随机信号x (t),y (t)在任意两个不同时刻s,t的取值间的相关程度,其定义为:
在这里插入图片描述
对于连续函数,有定义:
在这里插入图片描述
对于离散数据,有定义:
在这里插入图片描述
从以上定义式中可以看到,互相关函数和卷积运算类似,也是两个序列滑动相乘.区别在于互相关的两个序列都不翻转,直接滑动相乘,求和;卷积的其中一个序列需要先翻转,然后滑动相乘,求和.所以,f(t)和g (t)做相关等于f*(t)和g (t)做卷积.

根据维纳-辛钦定理,互相关函数与其互功率谱密度互为傅里叶变换对,则x1(t)和x2(t)的互相关函数又可以表示为:
在这里插入图片描述
其中,X1(ω)和X2(ω)分别为x1(t)和x2(t)的傅里叶变换,Gx1x2(ω)则称为麦克风信号x1(t)和x2(t)间的互功率谱,X2*(ω)为X2(ω)取复共轭.Rx1x2(τ)对应最大峰值处的横坐标即为所要求的时延估计值.

2.1 广义互相关算法
在麦克风信号处理实际模型中,由于存在混响和噪声的影响导致Rx1x2(τ)的峰值不明显,降低了时延估计的精度.因此,广义互相关法利用频域加权函数对信号滤波来突出响应信号部分的频谱成分,抑制噪声部分的频谱,再进行傅里叶反变换IFFT反变到时域,锐化Rx1x2(τ)在时延处的峰值,从而提高时延估计性能.因此得到广义互相关函数Rx1x2(τ),即:
在这里插入图片描述
其主要原理如图2所示.

图中(·)*表示取复共轭.与基本互相关相比,广义互相关算法增加了加权运算.
在这里插入图片描述
图2 广义互相关时延估计算法流程图
由于有限窗长和低信噪比的影响,选择合适的加权函数是一个难点,传统的广义互相关算法有基本互相关(CC),ROTH,SCOT,PHAT等几种加权方式.其中,SCOT和SCOT加权因子分别如式(7)和式(8)所示:
在这里插入图片描述

三、部分源代码

clear all;
close all;


  
 
  • 1
  • 2
  • 3

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]李保伟,张兴敢.基于广义互相关改进的麦克风阵列声源定位方法[J].南京大学学报(自然科学). 2020,56(06)

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/114955311

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。