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

相关推荐
stolentime12 小时前
通信题:洛谷P15942 [JOI Final 2026] 赌场 / Casino题解
c++·算法·洛谷·joi·通信题
初生牛犊不怕苦12 小时前
与AI一起学习《C专家编程》:数组与指针
c语言·学习·算法
Kk.080213 小时前
数据结构|排序算法(二) 冒泡排序
数据结构·算法·排序算法
沛沛rh4513 小时前
深入并发编程:从 C++ 到 Rust 的学习笔记
c++·笔记·学习·算法·rust
Kk.080213 小时前
数据结构|排序算法(二) 希尔排序
数据结构·算法·排序算法
AI医影跨模态组学13 小时前
NPJ Precis Oncol(IF=8)复旦大学肿瘤医院等团队:基于生境CT放射组学解析可切除非小细胞肺癌时空异质性预测新辅助化疗免疫治疗病理反应
大数据·人工智能·算法·医学·医学影像
Book思议-14 小时前
二叉树的递归遍历详解:前序、中序与后序
数据结构·算法·二叉树的递归遍历-前中后序
Demon--hx14 小时前
[LeetCode]100 链表-专题
算法·leetcode·链表
Omics Pro14 小时前
首款多模态生物推理大语言模型
人工智能·算法·语言模型·自然语言处理·数据挖掘·数据分析·aigc