你可以使用广义互相关( Generialized Cross-Correlation[1] )来估计一个信号达到两个传感器的时间延迟。比如应用麦克风阵列来确定声源方位的应用背景。问题可以用以下模型来描述:
其中是声音信号,是两个声音传感器检测噪声,D 就是声音信号在两个麦克风传感器上的到达时间差(TDOA),或称为时间延迟(Time Lag),表示以一个传感器为基准,信号到达另一个传感器的延迟。
通常假设声音信号是广义稳定随机过程且三者之间不相关。可以使用两个传感器获得信号之间的互相关最大化来得到该时间延迟。
在实际应用中,通常都是采集到的有限长的信号,因此只要在时间内近似保持平稳和不相关即可。两个信号的互相关可以通过下面公式进行估计:
通过两个相距的传感器上所得到的信号到达时间差(TDOA),可以计算出声音的方向:
▲ 声源方向与两个相距 d 的传感器之间的 TDOA 之间的关系
公式中的是声音在空气中传播的速度。
如果声音信号的频谱很宽,那么它的自相关信号就会呈现非常窄带的尖峰,使用前面估算 TDOA 的公式就可以得到非常好的结果。比如 Chirp 信号就是一个宽带声音信号。下面是 Chirp 信号就是应用在智能车信标组的导航声音信号,它的频率范围是 250Hz~2000Hz。下面是叠加有五倍幅值噪声的两个版本。
▲ Chirp 信号以及两个叠加有 5 倍幅值随机噪声的信号
下面给出了是两个带有很大噪声的 Chirp 信号互相关之后的结果。得益于 Chirp 信号的宽带,尽快两个信号带有的噪声非常大,但相关后的峰值还是依然非常明显。
▲ 将两个叠加有随机噪声的 Chirp 信号互相关结果。上:全部的互相关;下:将中心峰值展开的结果
如果信号不是宽带信号,则使用普通的互相关所检测到的峰值就会不明显,而且受到噪声影响很大。
比如下面是一个带宽只有 100Hz(1900~2000Hz)的 Chirp 信号。叠加有幅度只有 0.25 的随机噪声。
▲ 频带宽度只有 1900~2000Hz 的 Chirp 信号及其带有噪声的版本
下面是计算得到的信号的互相关波形。展开之后可以看到它的峰值就不是非常明显,而且在峰值附近受到噪声的影响会出现左右的偏移。
▲ 使用普通互相关得到的结果
使用广义互相关(GCC:Generallized Cross-Correlation)可以提高检测的精度。
下面就是使用 GCC-PHAT 重新计算上面窄带 Chirp 信号的互相关,可以看到所得到的相关峰值就大大改善了,从而提高了计算的精度。
▲ 使用广义互相关相位变换(GCC-PHAT)计算得到的互相关结果
参考资料
[1]Generialized Cross-Correlation: https://ww2.mathworks.cn/help/phased/ref/gccphat.html