最大可控响应功率波束形成法(SRP-PHAT)是当前声源定位的主流方法之一。基于麦克风阵列的声源定位在会议电话、计算机听觉、人机交互系统等许多领域当中具有广泛的应用价值。在这些应用当中,最基本的就是要估计声源的位置,并且需要兼顾定位精度和算法的实时性。SRP - PHAT 法将本身固有的稳健性、短时分析特性与时延估计中相位变换方法对信号周围环境的不敏感性相结合,使声源定位系统具有一定的抗噪性、抗混响性和稳健性。目前,SRP-PHAT 法是一种对窄带和宽带信号均可适用的有效方法,得到了广泛研究和应用。但是由于其全局搜索算法运算量较大,限制了该方法的实时性。在保持定位精度不变的前提下,大量削减计算量,加快计算速度,以适应实时目标探测的要求就成为SRP-PHAT算法对单目标定位研究的主要问题之一。
尽管SRP-PHAT具有较强的稳健性,但由于存在较多的局部极值,为求得全局的最优解,早期的算法往往对空间网格上的所有的点都进行考察,求得输出功率最大值点作为声源的估计点。
全局搜索算法的主要算法思想是:将整个空间按误差容许大小分成同样大小的体积微元,每个体积微元都用其中心点来代表。求每个中心点的输出功率FE值并比较所有中心点的FE值,最大的FE对应的点即认为是声源位置的估计值。全局搜索算法虽然可保证得到全局最优解,但其计算量过大是其不利于实际应用主要不足。
针对该算法计算量庞大,不能进行实时声源定位的问题,目前的改进算法有基于随机搜索的空间收缩快速算法(SRC)、由粗到精空间收缩快速算法(CFRC)、随机粒子滤波快速算法(SPF)等。
最早提出SRP-PHAT 的美国Brown大学 LEMS语音和传声器阵研究实验室的H.Do 和 HF Silverman等人在2007~2009年提出三种快速搜索算法。分别是:基于随机搜索的空间收缩快速算法( Stochastic Region Contraction,SRC),由粗到精的空间收缩快速搜索算法( Coarse - to - Fine Region Contraction,CFRC),随机粒子滤波快速算法( Stochastic Particle Filtering,SPF)。
首先根据计算极值点所在区域的概率确定一个初始搜索的矩形块区域,该矩形块应该包括全局最优值,也可能包括一些局部最大值和最小值。然后,反复搜索知道在一个足够小的自己中找到全局最优值(不确定的体积元 V u V_u Vu)。迭代 i i i的搜索操作是在当前的体积元 V i V_i Vi中对SRP-PHAT功率谱输出范函数 P ∗ ( x ) P^*(x) P∗(x)进行随机考察,进而继续空间缩减。找出全局最大功率值即是声源点。
由粗到精的空间收缩快速搜索算法(CFRC)是一种类似于随机搜索空间收缩快速算法(SRC)的算法,采用由粗到精的层次化搜索算法,首先进行较大粒度的搜索,将搜索空间划分成若干子空间,对每个子空间选取代表点进行波束功率输出函数的计算,从中选出函数值较大的一部分子空间,并对这部分子空间进一步细分。重复搜索、空间划分的迭代动作,直到搜索的子空间达到足够精度为止,找到声源定位点。
首先通过与SRC相同概率算法取得初始搜索区域以保证极值点存在于初始搜索区域,然后在SRP算法中采用一种避免粒子滤波器衰减的重采样方法。最后使用 β \beta β-PHAT的权重方法计算SRP函数,从而找到声源定位点。
在SRP-PHAT中,通过计算每一个点,找到空间中最大输出功率点进行声音源的定位。但由于模数转换有限的采样率,使不同空间备选点的输出功率可能相等。根据最大功率的计算公式可以看出,空间某个点的输出功率值依赖于麦克风接收的信号以及将麦克风阵列聚焦定位于该空间点时所引起的麦克风间的相位差异。因为信号从时域转换到数字域,所以空间各备选点的相位差异也是在离散时间域。如果任意两个备选点位置虽然不同,但是距离很近,即两个点的位相差或TDOA在离散时间域中是相同的,则两点输出最大功率。因此,如果备选点有相同TDOA,可将它们归为一类,选择一个点作为该类所有点的代表,将代表点存储在一个搜索表格( look,up)中,然后对所有类的代表点进行搜索,确定全局最大值,而不是在所有备选点。
Pateraon和Kyriakakis等人在2005年提出了混合搜索算法。算法主要思想如图1所示。
根据图1,混合搜索算法的主要思想是:在信号经过相位变换后,在M对麦克风中,通过选择具有最高信噪比或者具有最大峰值能量的麦克风3对,对于每一对麦克风根据空间交集算法(Spatial intersection, SX)找到NP个时延估计点,N个点决定了初始点定位集合,最终,根据初始点集合中的点来算出最大的功率值,则认为此点为声源位置。
Dmochowski , Benesty和 Affes等人在2008年提出一个反函数搜索算法。该算法的主要思想:当传声器接收到声源信号,传声器对在不同延时下互相关函数是不同的,找到一个最大的延时,即对应这一对传声器互相关函数的峰值。从而在这个最大延时的领域内,选定一些对应的点作为备选点。
Zotkin和Duraiswami等研究者在2004年提出分级搜索算法。其算法主要思想为:通过延迟所估算出的空间位置,如果偏离了声源点的位置,那么此时的互相关函数与最大的互相关函数值相比,是要减小的。而减小的速度,频率低的信号比频率高的信号要慢。首先由于低频信号的互相关函数峰值比较宽大,因此在搜索区域内使用大块搜索,每个块内都选几个点作为代表,由于声源点附近的互相关函数值也较大。
SRC,CFRC及 SFP快速搜索算法能保持SRP -PHAT算法的优良特性,在取得全局搜索算法相同定位精度的条件下,将计算量削减3个数量级。实验证明,SRC还具有良好的对多语音目标探测能力。但以上三种算法要求传声器阵列的孔径较大,使用的传声器数量较多,适合近场条件的声源定位问题。
SSC快速搜索算法在与全局搜索算法具有相同信噪比的情况下也能将计算量减小3~4个数量级。试验中,研究者采用了4个孔径比较小的传声器,这种快速算法可以实现对远场声源目标及其方向的定位,不太合适应用于精度非常高的定位系统中。
研究者对混合算法进行了仿真和实景实验,结果表明这种混合算法的运算量远小于全局搜索算法。由于该算法的初始点集点数较少,从而大大降低了全局搜索的计算量。但采用基于TDOA的估计算法进行预处理,导致TDOA的估计误差影响了后面的定位结果,使该方法局限于近场情况,对远场的探测效果比较差。模拟和真实实验验证表明,在声源处于混响比较强的条件下,反映射搜索算法也能保持较高的精度,同时加快了计算速度。但有研究人员指出该算法反函数映射的点集可能不包括全局最优解,有漏检的可能。也有研究者指出,这种算法只能使全局搜索算法计算量削减一个数量级左右。
分级搜索算法采用由粗及细的逐渐搜索,减少需要搜索的点数,从而大大降低计算量。但正如Peterson和 Kyriakakis等人指出的,该方法在粗选时会丢失一些真实声源的搜索点,从而造成漏检。且该方法是以抗混响稳健性的下降来换取计算量的削减。
总之,本文选择了7种具有代表性的改进SRP-PHAT算法的核心是在尽量不损失探测精确性,不增大漏检概率的情况下,尽量降低SRP - PHAT算法的搜索复杂度,使其按照一定的方式进行空间点的快速收敛,从而减少搜索点,减小计算量,扩大使用场景。
国内研究者对SRP-PHAT算法也进行了一定
的空间,快速进行声源定位。研究者通过仿真实验证明,该算法对SRP-PHAT有一定的提高。
为保证SRP-PHAT算法的实时性、精确性和稳健性,研究提出众多改进算法。通过分析发现,以上快―速算法在实时性上取得了一定的成果。但一些改进算法受到传声器阵列孔径大小的限制,或削减了原算法的稳健性,因此算法的进一步改进仍需大量研究。
声源定位(知乎)
参考文献:SRP-PHAT的改进算法综述