声源定位算法5----SRP-PHAT(1)

在前面的专栏里面我介绍了包括CBF,MUSIC,MVDR,CLEAN-SC等算法原理以及实现。这篇文章我将介绍SRP-PHAT。

1. 算法概述

SRP-PHAT 是阵列声源定位中一种经典的宽带定位方法,其全称为 Steered Response Power with Phase Transform ,即带相位变换加权的引导响应功率算法。

该算法的核心思想是:对于空间中的每一个候选点,先根据阵列几何计算该点对应的各麦克风对理论时延差,再利用这些理论时延差去评估各通道对的相位一致性,并将所有通道对的结果累加,最终把累加值最大的点作为声源位置。

与传统延时求和波束形成不同,SRP-PHAT 并不直接对各通道信号做相干叠加,而是通过 GCC-PHAT 来衡量通道对之间的时延匹配程度,因此在噪声和混响环境下通常具有更好的鲁棒性。

2. 基本思想

设空间中某个候选点为 r,第 m 个麦克风的位置为 rm​,则该候选点到第 m 个麦克风的传播时延为

对于麦克风 m 和 n,该候选点对应的理论时延差为

如果候选点接近真实声源位置,那么这个理论时延差就会接近真实到达时间差,此时该麦克风对在对应时延处的相关响应会较大。若对所有麦克风对都出现这种情况,则说明该候选点与真实声源位置较为一致,因此其空间响应值也会更大。

因此,SRP-PHAT 的本质就是:

在空间中寻找一个点,使得该点对应的理论时延关系能够最大程度匹配所有麦克风对的实际时延关系。

3. GCC-PHAT

设第 m 个和第 n 个通道的频域信号分别为 和 ,则它们的互功率谱为

PHAT 加权定义为

对应的 GCC-PHAT 函数为

PHAT 加权的作用是去除互谱的幅值信息,仅保留相位信息,从而减弱频谱起伏、通道增益差异和部分混响效应对时延估计的影响。

4. SRP-PHAT 的标准表达

对于空间中的候选点 r,SRP-PHAT 的空间响应定义为

最终的声源位置估计为

这两个公式就是 SRP-PHAT 最核心的数学表达。

第一个式子表示:对每一个候选点,取出所有麦克风对在该点理论时延差处的 GCC-PHAT 值,并累加成空间响应。

第二个式子表示:在整个扫描空间中寻找响应最大的点,将其作为声源位置估计。

5. SRP-PHAT 的两种等价实现方式

SRP-PHAT 在实现上通常有两种等价形式。

5.1 方式一:频域直接累加

将 GCC-PHAT 的定义代入空间响应表达式,可得

离散形式下可写为

这种方式的特点是:对每个候选点,直接在频域根据理论时延差进行相位补偿并累加。

5.2 方式二:先算 GCC-PHAT,再取理论时延点的值

另一种实现方式是,先对每个麦克风对计算 GCC-PHAT 曲线

然后对每个候选点 r,直接在 处取值并累加:

5.3 两种方式的关系

这两种实现方式本质等价。因为 GCC-PHAT 本身就是 PHAT 加权互谱的逆傅里叶变换,所以"先在频域做相位补偿再累加"和"先求 GCC-PHAT 再在理论时延处取值"只是运算顺序不同,本质上表达的是同一个空间响应量。

6. 算法物理意义

SRP-PHAT 的物理意义可以概括为一句话:

如果某个候选点是真实声源位置,那么由该点计算得到的理论时延差将与各麦克风对的真实时延差一致,因此这些麦克风对在对应时延处的 GCC-PHAT 响应会同时较大,最终使该点的空间响应取得峰值。

因此,SRP-PHAT 并不是在直接比较哪个点"能量最大",而是在比较哪个点最符合全阵列的时延一致性关系。

7. SRP-PHAT 的特点

SRP-PHAT 的主要优点在于:

  1. 适用于宽带声源定位;

  2. 对噪声和混响具有较好的鲁棒性;

  3. 不依赖特征值分解,工程实现相对直接;

  4. 能够综合利用全部麦克风对的信息。

它的局限性主要在于:

  1. 需要进行空间扫描,计算量较大;

  2. 网格过密时开销明显增加;

  3. 多声源和强混响情况下可能出现伪峰;

  4. 理论时延往往不是整数采样点,通常需要插值处理。

8. 总结

SRP-PHAT 是一种基于空间扫描和时延一致性匹配的宽带声源定位方法。它通过对各麦克风对的互谱进行 PHAT 加权,构造 GCC-PHAT 函数,再根据候选点的理论时延差对各通道对响应进行取值和累加,最终以空间响应最大的点作为声源位置估计。

从实现角度看,SRP-PHAT 有两种等价写法:一种是在频域中直接进行相位补偿并累加;另一种是先计算 GCC-PHAT,再在理论时延处取值并累加。

从本质上讲,SRP-PHAT 关注的不是单纯的能量叠加,而是:

哪个空间位置最能同时满足所有麦克风对的相位时延关系。

下篇文章讲解SRP-PHAT算法的仿真实现。

相关推荐
yi0118 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
灯澜忆梦10 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
小蒋观天下10 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J11 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab
H.莓飛11 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
好想像大佬一样能够ak所有11 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu11111111 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
黄金龙PLUS12 小时前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密
不会就选b12 小时前
算法日常・每日刷题--<动态规划>14
算法
赛博守夜人12 小时前
跨境业务与出海合规之九:海外买量投放与营销虚假流量(Ad Fraud):跨国机房群控与归因欺诈识别算法
算法·安全