声源定位之GCC-PHAT算法

1.GCC-PHAT介绍
Generalized Cross Correlation-Phase Transform,GCC-PHAT
广义互相关-相位变换

Notes:
①Generalized adj.笼统的;普遍的;概括性的;全面的
②Cross Correlation 互相关
③Correlation n.相互关系;相关;关联
④Phase n.阶段;时期;月相;相位
⑤Transform v.使改变形态;使改变外观(或性质);变换

2.远场模型

如图所示,s(k)为声音信号位于远场,视为平面波,入射角为θ,两个麦克风y1(k)、y2(l)之间的距离为d。

当我们算出入射角θ时,即可定位出声音信号的位置。
当声源位于近场时,可以估计声源到达传感器的角度,并且能够估计声源与麦克风之间的距离。
但声源位于远场时,可以估计入射角度,但难以确定声源与麦克风阵列的距离。

3.互相关方法
互相关函数,CCF,Cross-Correlation Function
对于两个观测信号y1(k)、y2(k)之间的互相关函数定义为

当p=τ时,τ为相对时延,互相关值达到其最大值

Notes:互相关方法易于实现,但容易受多种因素影响,如信号自相关、混响,另外还有空间混叠。

4.广义互相关方法
广义互相关函数,GCCF,Generalized CCF
与互相关方法相同,但此时两个麦克风之间的TDOA估计可以等效为能够使麦克风输出的滤波信号之间的CCF最大的时间间隔

GCC函数:

广义互频谱:

互频谱:

这个公式实际应该是CC函数的互相关函数傅里叶变换

y信号离散傅里叶变化:

Notes:
①DOA(到达方向估计)
②TDOA(到达时间差)

5.相位变换
相位变换,Phrase Transform ,PHAT
TDOA的估计信息是通过互频谱相位而不是幅度表示的。简单的舍弃幅度而仅保留相位:

理想GCC函数:

6.具体定位实现(matlab)

clc
clear
close all%加载一段声音(matlab自带敲锣声)
load gong;
%采样频率
Fs = 8192;
%采样周期
dt=1/Fs;
%music_src为声源
music_src=y;       %设置两个麦克风坐标
mic_d=1;
mic_x=[-mic_d mic_d];
mic_y=[0 0];
plot(mic_x,mic_y,'x');
axis([-5 5 -5 5])
hold on;
quiver(-5,0,10,0,1,'color','black');
quiver(0,-5,0,10,1,'color','black');%声源位置
s_x=10;
s_y=10;
plot(s_x,s_y,'o');
quiver(s_x,s_y,-s_x-mic_d,-s_y,1);
quiver(s_x,s_y,-s_x+mic_d,-s_y,1);%求出距离
dis_s1=sqrt((mic_x(1)-s_x).^2+(mic_y(1)-s_y).^2);
dis_s2=sqrt((mic_x(2)-s_x).^2+(mic_y(2)-s_y).^2);
c=340;
delay=abs((dis_s1-dis_s2)./340);%设置延时
music_delay = delayseq(music_src,delay,Fs);
figure(2);
subplot(211);
plot(music_src);
axis([0 length(music_src) -2 2]);
subplot(212);
plot(music_delay);
axis([0 length(music_delay) -2 2]);%gccphat算法,matlab自带
[tau,R,lag] = gccphat(music_delay,music_src,Fs);
disp(tau);
figure(3);
t=1:length(tau);
plot(lag,real(R(:,1)));%cc算法
[rcc,lag]=xcorr(music_delay,music_src);
figure(4);
plot(lag/Fs,rcc);
[M,I] = max(abs(rcc));
lagDiff = lag(I);
timeDiff = lagDiff/Fs;
disp(timeDiff);%gcc+phat算法,根据公式写
RGCC=fft(rcc);
rgcc=ifft(RGCC*1./abs(RGCC));
figure(5);
plot(lag/Fs,rgcc);
[M,I] = max(abs(rgcc));
lagDiff = lag(I);
timeDiff = lagDiff/Fs;
disp(timeDiff);%计算角度,这里假设为平面波
dis_r=tau*c;
angel=acos(tau*c./(mic_d*2))*180/pi;
if dis_s1<dis_s2angel=180-angel;
end
disp(angel);

声源定位之GCC-PHAT算法相关推荐

  1. 基于麦克风阵列的声源定位算法之GCC-PHAT

    目前基于麦克风阵列的声源定位方法大致可以分为三类: 基于最大输出功率的可控波束形成技术 基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE). 基于TDE的算 ...

  2. 麦克风声源定位原理_基于麦克风阵列的声源定位算法之GCC-PHAT

    目前基于麦克风阵列的声源定位方法大致可以分为三类:基于最大输出功率的可控波束形成技术.基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE)的声源定位技术. 基 ...

  3. 【定位问题】基于CC和GCC算法实现近场声源定位TDOA问题附matlab代码

    1 简介 声源定位是许多领域里的一个基本问题.声源定位技术的研究一直是个研究热点,涉及到很多技术领域,如声学,信号检测,数字信号处理等,有着广阔的应用前景.目前,该技术在仿人智能机器人上的应用还不是很 ...

  4. (转载)基于TDOA声源定位算法仿真–MATLAB仿真

    (转载)基于TDOA声源定位算法仿真–MATLAB仿真 转载自:https://blog.xxcxw.cn/archives/28 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUS ...

  5. matlab 声源定位csdn_[转]基于TDOA声源定位算法仿真--MATLAB仿真

    声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法进行定位. 常用的阵列信号定位算法主要有三大类:基于高分辨率谱估计的定位技术 ...

  6. 基于TDOA声源定位算法仿真–MATLAB仿真

    评论或私信 5元获取解压码 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法进行定位. 常用的阵列信号定位算法主要有三大类: ...

  7. 波束形成、回声消除、声源定位及端到端等语音信号处理算法

    现今信息技术飞速发展,语音技术源源不断地融入到各个领域,语音信号处理是人机接口的关键技术,已广泛应用于直播.在线通话.智能音箱等产品中. (落地应用) 随着语音产品广泛落地应用,语音行业飞速发展,各大 ...

  8. 声源定位系统设计(一)——MVDR波束形成算法

    声源定位系统设计(一)--MVDR算法 下一篇:声源定位系统设计(二)--MUSIC算法以及Python代码实现将讲述本篇博客中算法的代码实现以及另一种波束形成算法. 目录 声源定位系统设计(一)-- ...

  9. 麦克风阵列定位matlab算法,基于麦克风阵列的MUSIC声源定位算法研究

    摘要: 作为阵列信号处理领域的一个分支,麦克风阵列已广泛应用于电视会议.语音增强及识别等方面.声源定位是麦克风阵列进行空间滤波的重要基础,近年来发展迅速.基于阵列的定位算法可以分为超分辨算法和非超分辨 ...

最新文章

  1. 如果要将对象用作Map中的key,需要注意什么
  2. 2个byte类型数据相加(转型问题的分析)
  3. Java并发基础框架AbstractQueuedSynchronizer初探(ReentrantLock的实现分析)
  4. 手动建立规则方式创建stream环境
  5. 黑马程序员.bobo.DAY.2
  6. python+xlrd+echarts数据可视化demo
  7. 【tomcat】调整内存大小
  8. table中的td内容过长显示为固定长度,多余部分用省略号代替
  9. php gdb strace抓包,gdb,strace那些不常用的功能
  10. Scala 获取当前时间
  11. Java-压缩指针compressedOops
  12. 从零开始学ios开发(十三):Table Views(下)Grouped and Indexed Sections
  13. [转载] python画柱状图-Python绘制精美图表之双柱形图
  14. Q91:真实地模拟透明材质(Realistic Transparency)
  15. Asp.Net中SqlServer数据库连接方式
  16. 安装SQL Server 2012 RTM遇到 Microsoft NET Framework 4 0 install
  17. android 修改手机型号加点,修改Android设备信息,如修改手机型号为iPhone7黄金土豪版! -电脑资料...
  18. python大规模获取豆瓣影评_python自动获取豆瓣电影评分和影评
  19. 电阻参数_电阻的基础知识和参数介绍
  20. 华为牛人的十年工作感悟

热门文章

  1. 熔化焊接与热切割作业实操实训考核装置
  2. 基础开始——审计aduit
  3. mysql 查看time zone_MySQL查看和修改时区time_zone
  4. conda安装与使用--ubuntu20.04
  5. TFLite Objec Detection IOS 检测核心代码说明
  6. 回车与换行符的区别及python中使用
  7. web前端开发笔记21~45 2022/10/27
  8. 5.18 优先队列(堆) 滑动窗口(二) 交换链表的节点
  9. 用C 绘制实时曲线图
  10. 13种加密与解密算法【一】