你可以使用廣義互相關(guān)( Generialized Cross-Correlation[1] )來估計(jì)一個信號達(dá)到兩個傳感器的時間延遲。比如應(yīng)用麥克風(fēng)陣列來確定聲源方位的應(yīng)用背景。問題可以用以下模型來描述:
其中是聲音信號,是兩個聲音傳感器檢測噪聲,D 就是聲音信號在兩個麥克風(fēng)傳感器上的到達(dá)時間差(TDOA),或稱為時間延遲(Time Lag),表示以一個傳感器為基準(zhǔn),信號到達(dá)另一個傳感器的延遲。
通常假設(shè)聲音信號是廣義穩(wěn)定隨機(jī)過程且三者之間不相關(guān)。可以使用兩個傳感器獲得信號之間的互相關(guān)最大化來得到該時間延遲。
在實(shí)際應(yīng)用中,通常都是采集到的有限長的信號,因此只要在時間內(nèi)近似保持平穩(wěn)和不相關(guān)即可。兩個信號的互相關(guān)可以通過下面公式進(jìn)行估計(jì):
通過兩個相距的傳感器上所得到的信號到達(dá)時間差(TDOA),可以計(jì)算出聲音的方向:
▲ 聲源方向與兩個相距 d 的傳感器之間的 TDOA 之間的關(guān)系
?
公式中的是聲音在空氣中傳播的速度。
如果聲音信號的頻譜很寬,那么它的自相關(guān)信號就會呈現(xiàn)非常窄帶的尖峰,使用前面估算 TDOA 的公式就可以得到非常好的結(jié)果。比如 Chirp 信號就是一個寬帶聲音信號。下面是 Chirp 信號就是應(yīng)用在智能車信標(biāo)組的導(dǎo)航聲音信號,它的頻率范圍是 250Hz~2000Hz。下面是疊加有五倍幅值噪聲的兩個版本。
▲ Chirp 信號以及兩個疊加有 5 倍幅值隨機(jī)噪聲的信號
下面給出了是兩個帶有很大噪聲的 Chirp 信號互相關(guān)之后的結(jié)果。得益于 Chirp 信號的寬帶,盡快兩個信號帶有的噪聲非常大,但相關(guān)后的峰值還是依然非常明顯。
▲ 將兩個疊加有隨機(jī)噪聲的 Chirp 信號互相關(guān)結(jié)果。上:全部的互相關(guān);下:將中心峰值展開的結(jié)果
如果信號不是寬帶信號,則使用普通的互相關(guān)所檢測到的峰值就會不明顯,而且受到噪聲影響很大。
比如下面是一個帶寬只有 100Hz(1900~2000Hz)的 Chirp 信號。疊加有幅度只有 0.25 的隨機(jī)噪聲。
▲ 頻帶寬度只有 1900~2000Hz 的 Chirp 信號及其帶有噪聲的版本
下面是計(jì)算得到的信號的互相關(guān)波形。展開之后可以看到它的峰值就不是非常明顯,而且在峰值附近受到噪聲的影響會出現(xiàn)左右的偏移。
▲ 使用普通互相關(guān)得到的結(jié)果
使用廣義互相關(guān)(GCC:Generallized ?Cross-Correlation)可以提高檢測的精度。
下面就是使用 GCC-PHAT 重新計(jì)算上面窄帶 Chirp 信號的互相關(guān),可以看到所得到的相關(guān)峰值就大大改善了,從而提高了計(jì)算的精度。
▲ 使用廣義互相關(guān)相位變換(GCC-PHAT)計(jì)算得到的互相關(guān)結(jié)果
?
參考資料
[1]Generialized Cross-Correlation: https://ww2.mathworks.cn/help/phased/ref/gccphat.html