声源定位算法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算法的仿真实现。

相关推荐
头发够用的程序员1 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson
武帝为此2 小时前
【数据清洗缺失值处理】
python·算法·数学建模
Halo_tjn2 小时前
Java 基于字符串相关知识点
java·开发语言·算法
念越3 小时前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光3 小时前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
CappuccinoRose4 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦4 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav4 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi
小O的算法实验室5 小时前
2026年ESWA,自适应基于排序的协同进化学习粒子群算法+边缘计算服务器部署,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
cpp_25016 小时前
P1832 A+B Problem(再升级)
数据结构·c++·算法·动态规划·题解·洛谷·背包dp