GCC-PHAT算法

GCC-PHAT是一个计算AOA的算法。

这里的AOA是指信号入射到与阵列垂直的线的夹角。
画个图做个示意:

在这里插入图片描述
这里AB为两个microphone, 虚线为入射信号,这里计算AOA的前提是信号是平面波,即两个虚线是平行的。
那么AOA即为 θ \theta θ, 范围为[-90,90]. 与AB垂直时,角度为0.

这里AB的距离为L, τ \tau τ 为到达时间差,c为声音速度。

假设到达两个microphone的信号为:
在这里插入图片描述

  1. 用cross-correlation计算 τ \tau τ
    在这里插入图片描述
  2. 计算AOA β \beta β
    在这里插入图片描述
    这里有一个问题,就是当信噪比低时用cross-correlation直接计算得到的D不是太准。那么有一种方法,就是可以用PSD去做一个weight,效果会好很多。

我们知道信号相关与PSD是一个傅里叶变换对,那么先求PSD:

  1. 求PSD
    在这里插入图片描述
  2. normalize PSD,再做傅里叶变换得到weight后的相关
    在这里插入图片描述
    3.求D
    在这里插入图片描述
    实践证明这种方式效果更好。需要注意的是,这里得到的只是AOA, 并不是对于平面上的旋转角和仰角。这个角的名字叫broadside angle of arrival, 三个角中,知道两个才能求另外一个,详情可以看这里

只有两个microphone只能求AOA,但是三个不共线的microphone就可以求其他的角度了。

对于任意一对麦克风k,j,有:
在这里插入图片描述
这里u是信号传播的单位向量。通过三对麦克风我们就可以求出u, 当然,如果你的麦克风数量更多,可以用最小二乘算出更精确的值;那么最后就可以求出旋转角和仰角:

θ = t a n − 1 ( y x ) \theta=tan^{-1}(\frac{y}{x}) θ=tan1(xy)
α = t a n − 1 ( z ( x 2 + y 2 ) ) \alpha=tan^{-1}(\frac{z}{\sqrt{(x^2+y^2)}}) α=tan1((x2+y2) z)

最后聊一下AOA的精度:
前面有
在这里插入图片描述
也就是说 β = a r c s i n ( c τ L ) \beta=arcsin(\frac{c\tau}{L}) β=arcsin(Lcτ)

那么 τ \tau τ最小为 1 f \frac{1}{f} f1, 那么

β = a r c s i n ( c L f ) \beta=arcsin(\frac{c}{Lf}) β=arcsin(Lfc)

这里取c=340m/s, L=0.065m,f=44100Hz,得到

β = 6.812 \beta=6.812 β=6.812°

参考:Generalized cross-correlation

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值