肖 壇, 鄭力國, 凌小峰, 張雪芹
( 1. 華東理工大學(xué)信息科學(xué)與工程學(xué)院,上海 200237;2. 上海汽車集團技術(shù)中心,上海 201804)
隨著城市文明程度的提高,汽車鳴笛聲造成的噪聲污染問題越來越受到關(guān)注?;趥髀暺麝嚵械穆曉炊ㄎ患夹g(shù)可以幫助交通執(zhí)法部門快速、準確地鎖定違章鳴笛車輛的方位,具有廣泛的應(yīng)用價值[1]?;趥髀暺麝嚵械母呔嚷曉炊ㄎ环椒ㄖ饕úㄊ纬煞?、聲全息法和到達時間差法(Time Difference of Arrival, TDOA)[2-4]。波束形成法是將傳聲器采集到的信號進行濾波處理、加權(quán)疊加后形成波束,通過掃描整個聲音域能夠得到功率分布圖,從而得到聲源位置[5]。Meng等[6]提出了利用壓縮波束形成(Compressive Beamforming, CB)重建快速移動的聲源信號,該方法基于偽隨機傳聲器陣列,具有較低的重建誤差,但是隨著聲源與傳聲器陣列間距離的增加,重建效果會惡化。Zhang等[7]針對風(fēng)力發(fā)電機的聲源定位與跟蹤問題,提出了一種基于經(jīng)典波束形成理論的瞬時速度和延遲方位角旋轉(zhuǎn)校正算法對旋轉(zhuǎn)聲源進行定位和跟蹤,該算法能夠?qū)崟r精確跟蹤和識別風(fēng)力機葉片聲源。Ning等[8]提出了一種快速完成交叉譜矩陣的非迭代分塊厄米特矩陣補全(Block Hermitian Matrix Completion, BHMC)方法來實現(xiàn)非同步測量波束形成的聲源定位,該方法可以獲得主瓣狹窄、無副瓣的源映射,計算時間會隨著非同步測量次數(shù)的增加而緩慢增加。基于波束形成的定位方法對持續(xù)發(fā)聲的運動聲源定位效果較好,隨著陣列規(guī)模的增加也可以做到較高的空間分辨率,是目前汽車鳴笛聲抓拍的主流方法,已經(jīng)有較多的實際應(yīng)用案例[9]。但是該方法需要大量的傳聲器,且大規(guī)模陣列波束的形成處理過程復(fù)雜,對平臺的運算能力要求很高,仍然存在設(shè)備成本高、體積和質(zhì)量較大,且安裝與維護困難等方面的不足。
聲全息法通過全息面數(shù)據(jù)的采集和數(shù)據(jù)處理重構(gòu)出整個聲場,進而確定聲源位置[10]。Aujoguo等[11]為了測量板狀結(jié)構(gòu)的振動情況,提出了應(yīng)用時空近場聲全息法(Time-Space Domain Nearfield Acoustical Holography, TSD-NAH),從聲源測量中恢復(fù)平面聲源的瞬態(tài)法向速度。Valdivia[12]為了重建任意形狀振動表面的聲場,提出了基于時域邊界元法(Time Domain Boundary Element Method, TDEM)的近場全息技術(shù)。張攬月等[13]對基于球面?zhèn)髀暺麝嚵械脑肼曉炊ㄎ环椒ㄟM行了研究,提出了球面近場聲全息和球諧函數(shù)模態(tài)展開聚焦波束形成聯(lián)合噪聲源定位識別方法,在寬頻帶范圍內(nèi)定位性能良好。與波束形成法類似,聲全息法也需要大量的傳聲器,對平臺的計算能力要求很高。
TDOA是通過不同傳聲器接收到聲源信號的時間差來確定位置,該方法理論上僅需3個傳聲器便可完成二維空間中的聲源定位,具有所需陣列規(guī)模小、定位精度高、且計算量小的顯著優(yōu)點,在實現(xiàn)精確聲源定位系統(tǒng)的低成本和小型化上具有很大的潛力。Boora等[14]提出了一種基于TDOA的多源定位方法,該方法利用體積映射解決了多源的TDOA關(guān)聯(lián)的模糊性,并消除了求解復(fù)雜的雙曲方程進行位置估計的需要。張煥強等[15]提出了一種基于TDOA的汽車鳴笛聲定位方法,該方法僅需要5個傳聲器陣元就可以實現(xiàn)汽車鳴笛聲的準確定位,其關(guān)鍵步驟是基于廣義互相關(guān)的時差估計。然而由于運動車輛的多普勒效應(yīng)會導(dǎo)致廣義互相關(guān)時差估計精度急劇惡化,因此該方法僅限于靜止或低速運動的車輛,難以適應(yīng)運動車輛的場景。楊殿閣等[16]為了解決運動聲源的精確TDOA定位問題,提出了一種運動聲源快速定位方法。該方法通過多普勒效應(yīng)消除來提升TDOA估計的精度,較好地解決了TDOA難以用于運動聲源定位的問題,但是該方法所設(shè)計的多普勒效應(yīng)消除算法運算復(fù)雜度非常高,難以滿足定位的實時性需求。
本文提出了一種基于分布式傳聲器陣列的運動聲源實時定位系統(tǒng)。首先針對TDOA算法受多普勒效應(yīng)影響難以對運動聲源實時定位的瓶頸問題,將各傳聲器接收的聲音到達頻率(Frequency of Arrival,FOA)應(yīng)用到定位算法中,提出了一種基于TDOAFOA的快速定位算法。該算法建立在TDOA算法的基礎(chǔ)上,只需要少量的傳聲器單元即可實現(xiàn)精確的笛聲定位。在低速時主要依靠TDOA算法實現(xiàn)定位,在高速時也無需進行復(fù)雜的多普勒效應(yīng)消除,而是有效利用高速時的多普勒效應(yīng)引起的FOA變化來輔助實現(xiàn)運動聲源的精確定位,從而有效適應(yīng)靜止和運動聲源定位場景,并且具有較好的實時性。在此基礎(chǔ)上進一步設(shè)計了基于分布式同步采集和云端音頻處理的運動聲源實時定位系統(tǒng),在云端對分布式傳感器的原始數(shù)據(jù)進行精確的相關(guān)處理來實現(xiàn)精確的TDOA計算和FOA參數(shù)測量,并且可以利用云端強大的計算能力達到更好的實時性。仿真和現(xiàn)場實驗結(jié)果表明,本文提出的基于分布式傳聲器的運動聲源實時定位系統(tǒng)能夠適應(yīng)汽車非法鳴笛聲定位的場景,達到2 m以內(nèi)的精度,并且具有可擴展性和靈活性。
定位系統(tǒng)由聲音采集和云端處理兩部分組成,如圖1所示。其中,聲音采集部分利用分布式傳聲器陣列獲取不同位置的聲音信號,與傳統(tǒng)的集中式傳聲器陣列相比,分布式傳聲器陣列所需傳聲器數(shù)量更少、布置更加靈活,當(dāng)然也面臨著多傳聲器的同步采集問題。該系統(tǒng)利用GNSS同步時鐘來實現(xiàn)傳聲器間的時間同步,將采集的聲音信號按秒組幀并用當(dāng)前讀取的GNSS時間打時間戳,利用GNSS時鐘10 ns量級的授時精度,每秒對本地時鐘進行校準,可利用常規(guī)晶振實現(xiàn)10 μs量級的同步精度,完全滿足聲音信號同步采集的要求。云端部分完成聲音存儲及定位解算等關(guān)鍵工作,傳聲器采集到的聲音文件通過網(wǎng)絡(luò)發(fā)送到云端的數(shù)據(jù)庫中,利用云端的計算資源對云端存儲的聲音信號進行處理,最終實現(xiàn)對目標聲源的定位。
圖1 定位系統(tǒng)設(shè)計Fig. 1 Design of positioning system
與現(xiàn)有的基于集中式傳聲器陣列的汽車鳴笛聲定位系統(tǒng)不同,該系統(tǒng)采用分布式傳聲器陣列,大幅降低了傳聲器的使用規(guī)模;與此同時將云計算應(yīng)用到聲源定位系統(tǒng)中,最大限度地降低了終端設(shè)備的計算資源要求,不僅有助于節(jié)約硬件和算力成本,而且具有良好的靈活性與可擴展性。
圖2示出了分布式汽車鳴笛聲定位系統(tǒng)的聲源測量時空模型。傳聲器放置在道路兩邊,汽車以速度v在道路上運動,運動方向與道路方向一致。從聲源位置到第i個傳聲器mi(i=1,2,3,4,···)的距離為ri,由于距離不同,聲音到達各個傳聲器的時間也不同,通過相關(guān)算法即可得到到達時間差。傳聲器mi接收的FOA為Fi,當(dāng)聲源與傳聲器之間發(fā)生相對運動時,各傳聲器接收到的Fi相對于聲源的頻率也將發(fā)生相對偏移,該現(xiàn)象稱為多普勒效應(yīng)。利用基于TDOA和多普勒信息差的快速定位算法,可以對靜止或運動的聲源進行定位。
圖2 聲源測量時空模型Fig. 2 Spatio-temporal model of sound source measurement
由于基于TDOA的定位算法具有設(shè)備簡單、計算量小、定位精度高等優(yōu)點,在定位系統(tǒng)中得到了廣泛的應(yīng)用,該算法的關(guān)鍵步驟是時延估計和位置估計。
時延估計是為了得到聲源到達不同傳聲器的時間差,時延估計的準確性對定位的精度有直接影響。廣義互相關(guān)是應(yīng)用廣泛的時延估計方法[17],通過參考傳聲器與任一非參考傳聲器接收到的聲音信號進行相關(guān)處理,最終得到TDOA的值。該方法具有計算量小、運算速度快的優(yōu)點,可以適應(yīng)實時性的要求。
假設(shè)聲源信號為s(n),φ1、φ2為兩個傳聲器接收到的加性噪聲信號,且互不相關(guān);聲波從聲源位置到兩個傳聲器的傳輸增益為α1、α2;傳播時間為τ1、τ2,則兩個傳聲器接收到的信號y1(n)和y2(n)為
y1(n)和y2(n)的互相關(guān)函數(shù)Ry1,y2(τ)以及互功率譜函數(shù)Gy1,y2(ω)可分別表示為
其中:E[·]為數(shù)學(xué)期望;Y1(ω)、Y2(ω)分別為y1(n)、y2(n)的傅里葉變換;Y2*(ω)表示Y2(ω)的共軛。
根據(jù)互相關(guān)函數(shù)與互功率譜函數(shù)之間的關(guān)系,可知引入頻域加權(quán)函數(shù)W(ω)的廣義互相關(guān)的表達式為
其中W可由濾波進行替代。
當(dāng)互相關(guān)函數(shù)R(τ)取得最大值時,此時的τ就是聲音從聲源位置到達兩個傳聲器的TDOA,廣義互相關(guān)算法步驟如圖3所示,其中FFT為傅里葉變換。
圖3 廣義互相關(guān)算法流程圖Fig. 3 Flowchart of generalized cross correlation algorithm
在得到時延估計TDOA后,可以采用經(jīng)典的Chan算法[18]進行位置估計。該算法是非遞歸雙曲線方程組解法,具有解析表達式解,并且計算量小。如圖2所示,鳴笛聲的位置坐標S= [x,y],傳聲器mi的位置坐標mi=[xi,yi],傳聲器位置mi到聲源位置S的距離ri為
那么非參考傳聲器mi(i= 2,3,···)與參考傳聲器m1到聲源位置的距離差ri,1為
其中:c為聲音的傳播速度大小;τi,1為聲源達到傳聲器mi與m1的時間差。
由式(5)和式(6)可以得出:
其中:xi,1=xi?x1;yi,1=yi?y1;Ki=xi2+yi2。
若僅有3個傳聲器,在二維空間內(nèi)對鳴笛聲進行定位,聯(lián)立方程(7)、(8)并求解就可得到聲源的位置。當(dāng)傳聲器的數(shù)目n≥4時,則需要根據(jù)式(7)、(8)進行兩步加權(quán)最小二乘法,最終得到鳴笛聲的位置估計。
當(dāng)聲源與傳聲器之間發(fā)生相對運動時會引起多普勒效應(yīng)。從系統(tǒng)的角度來看,當(dāng)聲源運動時,盡管系統(tǒng)仍然是線性的,然而是時變的。當(dāng)聲源沿著道路以速度v運動時,在t時刻聲源位于S(t)處,但是此時傳聲器m所接收到的聲音是聲源位于S(t?τ)處發(fā)出的聲音,其中τ=r(t?τ)/c,r(t?τ)為傳聲器m到聲源位置S(t?τ)的距離。根據(jù)莫爾斯理論聲學(xué)可知傳聲器接收到的聲壓信號為
其中:M=v/c是聲源運動的馬赫數(shù);q(t?τ)和q’(t?τ)分別為聲源強度函數(shù)及其導(dǎo)數(shù);θ(t)為聲源到傳聲器的矢量與運動方向的夾角。
由此可知,多普勒效應(yīng)會對聲音信號之間的相位關(guān)系產(chǎn)生影響,還會將聲音拉長或壓縮,這就導(dǎo)致無法利用互相關(guān)算法準確地求出到達時間差,因此對于靜態(tài)或者是準靜態(tài)聲源定位具有良好效果的TDOA定位算法在運動聲源定位中無法達到預(yù)期效果。
多普勒效應(yīng)導(dǎo)致了幅值和相位的偏移,但是也帶來了其他信息。由理論聲學(xué)可知,傳聲器mi接收到的聲音頻率Fi與聲源發(fā)出信號的頻率f的關(guān)系為
為了滿足不同運動情況下的定位要求,本文提出了基于TDOA-FOA的快速定位算法。在汽車鳴笛聲定位的場景中,汽車的運動方向一般和道路一致,因此聲源運動方向可以認為是已知的。根據(jù)TDOA和式(6)能夠求得聲源到非參考傳聲器mi和參考傳聲器m1之間的距離差ri,1。將聲源面進行離散化處理,分為多個網(wǎng)格,假定某個網(wǎng)格的中心坐標[x0,y0]就是鳴笛聲的實際位置,由式(5)可以得到假設(shè)位置到非參考傳聲器mi和參考傳聲器m1之間的距離差Ri,1,Ri,1與ri,1的偏差度為
同時假設(shè)位置與不同傳聲器對應(yīng)的θi也可以得到,根據(jù)式(10),利用m1和m2的FOA,可以得到速度大小以及聲源頻率的估計v0和f0。由此可以得到傳聲器mi(i≥3)接收的聲音信號估計頻率Fi,0,其與傳聲器真實接收頻率Fi的差的模為
當(dāng)傳聲器數(shù)量為n(n≥ 3)時,可以得到基于TDOA和FOA的代價函數(shù)D1以及D2:
遍歷整個聲源平面就可以得到D1(x,y)、D2(x,y)。當(dāng)D1取得最小值時,對應(yīng)的位置就是基于TDOA的估計位置S1;當(dāng)D2取得最小值時,對應(yīng)的位置就是基于FOA的估計位置S2,此外還可以得到速度估計v。將速度估計與閾值vth比較,以確定鳴笛聲位置,通過實驗得到vth=3 m/s時算法定位精度最高。當(dāng)v<vth時,認為TDOA的可信度更高,鳴笛聲位置S=S1;當(dāng)v≥vth時,鳴笛聲位置S=S2。
傳聲器距離聲源越近,傳聲器接收到的聲音能量越大,由此可知聲源位于接收聲音信號能量最大的傳聲器位置附近。為了進一步提高該算法的實時性,可先通過能量檢測,對聲源位置進行預(yù)估計,以縮小搜索的范圍。此外,當(dāng)定位范圍很大時,需要布置更多的傳聲器,但是在某次具體的定位中,由于聲音的衰減比較快,若某些傳聲器距離聲源過遠,可能無法接收到良好的聲音信號,利用這些信號對聲源進行定位可能會導(dǎo)致更大的誤差,所以通過能量檢測還可以去掉冗余的信號,提高定位精度及效率。TDOA-FOA算法的具體流程如圖4所示。
圖4 TDOA-FOA快速定位算法流程圖Fig. 4 Flowchart of fast location algorithm based on TDOA-FOA
與文獻[16]中應(yīng)用多普勒消除算法將聲音信號還原、再利用TDOA的方法計算聲源位置相比,TDOA-FOA的計算量顯著減少,進而大大降低了計算耗時。該方法的定位精確程度取決于聲源所在平面的網(wǎng)格劃分,網(wǎng)格的數(shù)量增加可以提高定位的精度;但是網(wǎng)格的數(shù)量過多時,計算量會顯著增加,進而影響定位的實時性,在實際選取時,應(yīng)根據(jù)期望的聲源定位精度和運算時間來合理選取網(wǎng)格大小。
傳聲器的數(shù)量以及位置對聲源定位的精度有重要影響,由于本文針對的定位目標是汽車鳴笛聲,因此傳聲器一般布置在道路兩邊。為了驗證傳聲器數(shù)量對定位精度的影響,在傳聲器數(shù)量不同的情況下,對TDOA-FOA快速定位算法進行了仿真。假設(shè)需要定位的范圍為寬15 m、長50 m的馬路,不同數(shù)量的傳聲器交錯均勻分布在道路兩側(cè)(如圖2所示),這種布局在能量檢測后,需要搜索的范圍更小。傳聲器的高度與汽車喇叭的高度一致。汽車鳴笛聲的頻率一般在1800~3550 Hz,在仿真平臺下,設(shè)計了一個200 ms、2500 Hz的單頻聲源代替鳴笛聲,采樣頻率為48 kHz,加入30 dB的背景白噪聲。聲音的傳播速度為340 m/s,網(wǎng)格的大小為0.5 m×0.5 m,分別對靜止和運動速度為10 m/s的聲源進行定位仿真,每種情況都進行200次仿真,結(jié)果如表1所示。從實驗結(jié)果可以看出,當(dāng)傳聲器數(shù)量過少時,運動定位誤差很大;當(dāng)傳聲器數(shù)量達到4個時,定位精度就可以滿足鳴笛聲定位的要求,再增加傳聲器的數(shù)量并不能明顯地提升定位精度,因此從經(jīng)濟性以及定位精度的需求方面考慮,選用4個傳聲器較為合適。
表1 傳聲器數(shù)量對定位精度的影響Table 1 Influence of microphone numbers on positioning accuracy
為了驗證TDOA-FOA快速定位算法的有效性,對不同運動速度聲源的定位進行仿真實驗,并與Chan算法[18]進行比較。網(wǎng)格間隔為0.5 m×0.5 m,每個速度都進行了200次仿真實驗,實驗結(jié)果如圖5所示。4個分布式傳聲器位置的測量誤差為5 cm,利用前文加噪的單頻聲源代替鳴笛聲,在靜止的情況下其TDOA估計誤差在1 ms左右。根據(jù)式(9)可知,隨著聲源運動速度的增加,各傳聲器接收到的聲音信號變化愈大,進而導(dǎo)致TDOA估計誤差會逐漸增大,F(xiàn)OA的估計誤差為1 Hz。
圖5 定位算法仿真結(jié)果比較Fig. 5 Comparison of localization algorithms simulation results
從仿真結(jié)果可以看出,在運動速度不同的情況下,TDOA-FOA快速定位算法的定位精度在2 m以內(nèi)。聲源在靜止或準靜止的情況下,Chan算法的定位效果很好,隨著速度的增加,Chan算法的定位誤差會迅速增大。與之相比,TDOA-FOA快速定位算法在準靜止和高速運動的情況下,定位效果很好,在運動速度為3 m/s左右時,該算法定位效果略差,這種情況主要是由于運動導(dǎo)致TDOA誤差較大,同時因為速度較慢,各傳聲器的FOA差異較小,因此無論是利用TDOA還是FOA都有較大的誤差。
為了驗證網(wǎng)格大小對TDOA-FOA算法的精度和定位速度的影響,在網(wǎng)格大小不同的情況下進行了仿真實驗,其中需要遍歷的范圍為15 m×30 m,聲源運動速度為10 m/s,F(xiàn)OA誤差的標準差為1 Hz,實驗結(jié)果如表2所示。實驗結(jié)果表明基于TDOA-FOA的運動聲源快速定位算法計算量小,遍歷整個平面的計算耗時能夠達到毫秒級,滿足實時定位的要求。
表2 網(wǎng)格大小對定位精度和計算耗時的影響Table 2 Influence of grid size on positioning accuracy and computing time
為了進一步檢驗本文方法在實際應(yīng)用中對汽車鳴笛聲的定位效果,將其與文獻[16]中的基于聲達時差的運動聲源快速定位(Fast Moving Time DifferenceOf Arrival, FMTDOA)算法進行了比較,并利用戶外實驗進行了驗證。實驗采用的車輛為東風(fēng)標致3008,其鳴笛聲的時頻特性如圖6所示。汽車以不同的速度行駛,利用4個布置在道路兩側(cè)的手機傳聲器采集聲音,通過4G網(wǎng)絡(luò)將聲音信號發(fā)送至云端數(shù)據(jù)庫,最終利用云計算完成定位算法得到位置估計,實驗場景如圖7所示。手機固定在路邊的樹上,高度與汽車喇叭的高度一致,其具體位置如圖8所示。云計算采用阿里云ECS服務(wù)器的2核4G虛擬CPU,實驗結(jié)果見表3,表中的null表示該方法不適用這種情況,故沒有定位結(jié)果。
表3 實驗結(jié)果Table 3 Experimental results
圖6 鳴笛聲的時頻特性Fig. 6 Time-frequency characteristis of whistle sound
圖7 實驗場景Fig. 7 Experimental scene
圖8 手機位置Fig. 8 Location of mobile phones
從實驗結(jié)果可以看出,與FMTDOA算法相比,本文算法計算耗時大幅減小,耗時控制在10 ms量級,在靜止和高速運動的情況下定位精度在1 m以內(nèi),低速情況定位誤差也可以保證在2 m以內(nèi),能夠有效地對不同運動狀態(tài)的鳴笛聲進行定位,可以較好地滿足對鳴笛聲定位的精度及實時性要求。需要說明的是,雖然本實驗只對單個車輛進行了定位實驗,但是由于本文提出的方法采用互相關(guān)算法進行時差和頻差估計,只要同時鳴笛的多輛車笛聲信號之間相互獨立,就可以適應(yīng)多目標同時定位的場景;當(dāng)然,由于典型的汽車鳴笛聲多為雙音信號,在信號制式上較為相似,尤其是同一車型的目標笛聲頻率也基本相同,很難通過互相關(guān)算法區(qū)分不同目標的時差和頻差估計值,因此本文提出的方法在實際應(yīng)用中仍會存在難以適應(yīng)笛聲頻率非常接近的同時鳴笛車輛定位場景的問題。
本文提出了一種基于云計算的分布式運動聲源實時定位系統(tǒng),通過分布式傳聲器獲取聲源信息,并將其發(fā)送到云端數(shù)據(jù)庫進行存儲,最后利用云計算實現(xiàn)聯(lián)合定位算法得到聲源的位置估計。為了滿足不同運動狀態(tài)的鳴笛聲實時定位的需求,提出了基于TDOA-FOA的快速定位算法,該算法在現(xiàn)有TDOA算法基礎(chǔ)上進一步利用運動導(dǎo)致的多普勒頻差來輔助定位,成功突破了TDOA算法難以適應(yīng)高速運動場景的瓶頸問題,同時將算法復(fù)雜度仍保持在較低的水平。外場實驗結(jié)果表明,系統(tǒng)僅需數(shù)10 ms就可完成對運動聲源的快速定位,且系統(tǒng)對0~70 km/h車速的聲源目標的定位精度都保持在2 m以內(nèi),可以較好地滿足汽車鳴笛聲定位的實時性和精度需求。本研究工作為短時發(fā)聲的運動聲源提供了一種經(jīng)濟、靈活的快速精確定位方法。需要特別說明的是,該方法的高性能、低成本特性不僅來自于本文提出的系統(tǒng)方案和算法本身,還建立在以北斗和GPS為代表的全球定位和授時系統(tǒng),以及近年來蓬勃發(fā)展的高效能的物聯(lián)網(wǎng)和云計算等信息基礎(chǔ)設(shè)施之上。