聲音是怎么被定位的?
——以鳴笛抓拍為例
當(dāng)我們閉上眼睛,仍然能夠判斷出聲音是從哪個方向來的。當(dāng)然了,前提是兩只耳朵都是健康的。如果完全捂住一只耳朵,那么就無法判斷聲音的具體方位了。這究竟是怎么回事兒呢?
由于兩只耳朵存在一定的距離,聲源傳播到兩耳的聲音存在頻率、強度和時間上的差異。我們就可以利用這些微小的差異進行聲源來向定位。現(xiàn)有科學(xué)研究表明,哺乳動物更多的是通過感知聲音達到的雙耳的時間差進行定位。貓可以判斷聲源位置的最小角度為5°,人在相同情境下的判斷精度大約可以達到3°。
顯然,如果只有一只耳朵工作,肯定是無法判斷聲音來自何方了。
1.仿生學(xué)、雙耳定位和麥克風(fēng)陣列
仿生學(xué)大家一定不會陌生,它是一門既古老又年輕的學(xué)科,我們很多應(yīng)用的科技都是從自然界學(xué)到了作用原理或者得到了啟發(fā)后設(shè)計發(fā)明出來的。大家耳熟能詳?shù)氖鞘茗B兒飛翔的啟發(fā)發(fā)明了飛機、根據(jù)蝙蝠的夜間飛行發(fā)明了雷達、根據(jù)螢火蟲發(fā)明了冷光……,諸如此類,不一而足。
類似的,在雙耳定位的啟發(fā)下,我們設(shè)計了麥克風(fēng)陣列。利用麥克風(fēng)來模擬人的耳朵,理論上說,構(gòu)造包括兩個以上麥克風(fēng)的陣列,就可以實現(xiàn)聲音的定位了。但是,人的定位機理更為復(fù)雜,可能利用兩個麥克風(fēng)還不夠,那就增加麥克風(fēng)的數(shù)量,總能可以達到滿意的定位精度。
麥克風(fēng)陣列是指由兩個或多個麥克風(fēng)按照一定的幾何結(jié)構(gòu)排列而成的陣列。按照拓?fù)浣Y(jié)構(gòu)不同,麥克風(fēng)陣列可以分為均勻線性陣列、非均勻線性陣列、非線性陣列、環(huán)形陣列、平面陣列、立體陣列等。
【陣列類型】
線性陣列可以定位一個角度,即只能定位方位角,無法定位仰角。平面陣列可以定位方位角和仰角,實用性更強,但也意味著更復(fù)雜的計算,無法進行定距。立體陣列既可以定向也可以定距。
圓形坐標(biāo)定向示例(θ1---俯仰角,φ1---方位角)
目前線性陣列和平面陣列是較為常見的兩類陣列。線性陣列常見于會議拾音、教室吊麥等;平面陣列在智能音箱、聲學(xué)照相機等設(shè)備中更為常見。立體陣列見于反狙擊手系統(tǒng)。
桌面線性麥克風(fēng)陣列
鳴笛抓拍用麥克風(fēng)陣列(平面陣列)
反狙擊手系統(tǒng)
2.基于麥克風(fēng)陣列的聲學(xué)定位
2.1 聲學(xué)定位基本原理
所謂聲源定位,就是利用一組按照一定幾何位置擺放的麥克風(fēng)定出聲源的空間位置。對于空間中位于不同位置的兩個麥克風(fēng)而言,聲源只要不位于它們之間的中線上,那么它們和聲源之間的距離就存在差異,如下圖所示??梢钥闯?,聲源與兩個麥克風(fēng)之間存在距離差△L=Cτ,因此,聲波到達兩個麥克風(fēng)的信號在時間上存在時延τ=△L/C。理想情況下,麥克風(fēng)i和j接收的信號滿足關(guān)系Si=Sj(t-τ)。
基于麥克風(fēng)陣列的聲源定位技術(shù)基本上可以分為4類:基于最大輸出功率的可控波束形成技術(shù);高分辨率譜估計技術(shù);基于聲壓幅度比的定位技術(shù)以及基于聲音到達時間差(Time Delay of Arrival, TDOA)的定位技術(shù)。
(1) 波束形成技術(shù)(Beamforming)
該技術(shù)也稱為波束成型,這是一種直接定位方法,基本思想是對麥克風(fēng)所接收到的聲音信號加權(quán)求和來形成波束,通過調(diào)整權(quán)值使麥克風(fēng)陣列的輸出功率最大,波束輸出功率的點就是聲源的位置。傳統(tǒng)的波束形成器的權(quán)值取決于各陣元上信號的相位延遲,而相位又和時延以及聲音的到達時間差有關(guān),故又稱為時延求和波束形成器。
假設(shè)麥克風(fēng)的數(shù)量為M,第i個麥克風(fēng)接收到的信號為,對進行時延對齊后,累加可得
上式中,指的是當(dāng)陣列指向搜索點時的可控時延,與麥克風(fēng)的數(shù)量、陣列孔徑、聲源的入射角以及采樣頻率成正比,與聲音的傳播速度成反比。累加輸出的功率,即波束的功率為
是的頻域表示。聲源的位置可按照下式計算:
通過控制陣列方向來引導(dǎo)波束,使波束輸出功率的點就是聲源的位置。
(2) 高分辨率譜估計技術(shù)
高分辨率譜估計技術(shù)是利用接收信號相關(guān)矩陣的空間譜,求解麥克風(fēng)之間的相關(guān)矩陣來確定方向角,進而確定聲源的位置。這種定位技術(shù)主要包括自相關(guān)AR模型法、最小方差(MV)譜估計法和特征值分解算法(如MUSIC算法等)。
高分辨率譜估計技術(shù)適合于處理多個聲源的情形,但它們都是通過獲取麥克風(fēng)陣列的信號來計算空間譜的相關(guān)矩陣。此時,如果所需的矩陣未知,則須通過已得到的數(shù)據(jù)進行估計,這要求空間中的聲源或噪聲須平穩(wěn)時不變,這在實際中很難實現(xiàn);此外,該方法的計算量大,在聲源定位系統(tǒng)中的應(yīng)用不多見。
(3) 基于聲壓幅度比的定位方法
該方法利用不同麥克風(fēng)接收的來自于同一個聲源的聲音信號在強度上的差異來實現(xiàn)聲源定位。根據(jù)由聲壓在麥克風(fēng)處產(chǎn)生的電壓輸出與對應(yīng)聲源到麥克風(fēng)的距離兩者之間存在的關(guān)系導(dǎo)出一個用于聲源定位的約束條件。由這個約束條件可確定三維空間中的一個球面。每個麥克風(fēng)可以導(dǎo)出這樣一個約束條件,利用這些約束條件可確定出聲源的位置。它們既可以是單獨使用,也可以和由基于時間差的方法導(dǎo)出的約束條件一起使用。
(4) 基于聲音到達時間差的聲源定位技術(shù)
基于聲音到達時間差(TDOA)估計的定位方法精度相對較高,計算量小,適合于實時實現(xiàn)。基于TDOA的定位方法是一種兩步方法。第一步,開展TDOA估計,獲得麥克風(fēng)陣列中相對陣元之間的TDOA。估計TDOA的方法有很多,大致可以分為互相關(guān)方法、廣義互相關(guān)方法、自適應(yīng)濾波器法、互功率譜相位法和高階統(tǒng)計量法等。第二步,利用估計得到的相對陣元之間的時間差,結(jié)合已知的麥克風(fēng)陣列的空間幾何關(guān)系確定聲源的位置。這種方法實時性較好,但存在誤差傳遞放大、無法進行多聲源定位等問題。
2.2 定位用麥克風(fēng)陣列的性能指標(biāo)
麥克風(fēng)陣列的性能指標(biāo)包括主瓣寬度(波束寬度)、旁瓣增益、陣列增益等。從定位的角度出發(fā),陣列增益是無關(guān)的性能指標(biāo),需要考慮主瓣寬度和旁瓣增益這兩個指標(biāo)。
波束圖示例
上面給出了一個波束圖示例,這是一個由12個麥克風(fēng)組成的均勻線性陣列,陣列間距d=8cm,聲源入射角度為陣列側(cè)邊正前方(即90°的位置),聲源頻率f=2000Hz。上圖共包括11個波束,具有大幅度的波束稱為主瓣(聲源所在方向),其他都是旁瓣。主瓣寬度定義為主瓣兩邊的兩個第一過零點之間的范圍,上圖的主瓣寬度大約是20°。旁瓣增益指的是旁瓣高度,上圖的旁瓣增益大約是-12dB。
旁瓣增益越低,對于目標(biāo)方向以外的干擾噪聲的抑制能力就越強,可以更好的降低目標(biāo)檢測的虛警概率,對于鳴笛抓拍而言,就是不會出現(xiàn)“虛像”。比如,視野范圍之外有車輛鳴笛,它所產(chǎn)生的“虛像”可能恰好位于視野范圍之內(nèi),這樣就容易造成“假定位”,無法區(qū)別視野范圍內(nèi)外的鳴笛車輛。主瓣寬度越小,目標(biāo)方向的分辨能力越強,陣列的指向性越好。對應(yīng)于鳴笛抓拍,就意味著光斑越準(zhǔn)確,不會出現(xiàn)一個光斑覆蓋多臺車輛的情況。
通常情況下,在麥克風(fēng)數(shù)量相同的情況下,麥克風(fēng)分布形式越規(guī)則,主瓣寬度和旁瓣增益會越大。下面給出了兩個麥克風(fēng)陣列構(gòu)型,都由32個麥克風(fēng)構(gòu)成,從對應(yīng)波束圖中可以明顯看到這一規(guī)律。因此,在設(shè)計麥克風(fēng)陣列時,應(yīng)該盡可能地設(shè)計優(yōu)化構(gòu)型,而不是選擇均勻的規(guī)則構(gòu)型。
規(guī)則型陣列及其波束圖
非規(guī)則型陣列及其波束圖
3.應(yīng)用案例:鳴笛抓拍系統(tǒng)
基于麥克風(fēng)陣列的聲音定位技術(shù)已經(jīng)在工程領(lǐng)域中得到了廣泛應(yīng)用,典型包括異常聲響定位的聲學(xué)照相機、飛機飛躍噪聲分析使用的大型地面陣列、戰(zhàn)場中的狙擊手定位系統(tǒng)等。
目前,得到廣泛應(yīng)用的聲學(xué)定位技術(shù)莫過于交通領(lǐng)域中的鳴笛抓拍系統(tǒng)了,實際上這也是聲學(xué)照相機的一個具體應(yīng)用。縱觀市場上已有的鳴笛抓拍系統(tǒng),基本都是由一個平面麥克風(fēng)陣列、一個電警(卡口)相機和主機組成,麥克風(fēng)陣列用于鳴笛聲音定位、相機用于識別鳴笛車輛車牌并抓拍圖片生成證據(jù)。
世邦鳴笛抓拍系統(tǒng)
系統(tǒng)的整個抓拍流程如下圖所示。在前端,系統(tǒng)捕獲到機動車鳴笛聲音,啟動定位分析軟件進行定位,如果定位結(jié)果位于抓拍視野范圍內(nèi),則啟動高清相機進行抓拍;根據(jù)定位坐標(biāo),進行相關(guān)車輛的車牌識別,如果能夠識別出符合要求的車牌,則將車牌推送到LED屏顯示,同時生成完整證據(jù)鏈,包括車牌圖片及識別結(jié)果、車輛特寫、車輛全景、鳴笛云圖、鳴笛聲紋圖和鳴笛過程的音視頻(疊加云圖),并將其推送到后臺。
鳴笛抓拍工作流程
系統(tǒng)計算監(jiān)測路面有效探測區(qū)域的聲音大小分布,用顏色表示聲音相對大小生成聲音分布圖,聲音分布與高清圖片疊加形成聲音云圖,對鳴笛聲連續(xù)采集分析,持續(xù)生成聲音云圖,聲音云圖疊加到視頻上連續(xù)播放生成“聲音視頻”;同時,自動生成4張圖片(違法時刻車輛全景圖、全景云圖、車輛特寫圖和車牌特寫與鳴笛頻譜圖)和音視頻證據(jù),其證據(jù)支持添加水印信息、防偽信息。證據(jù)信息如下圖所示。
鳴笛抓拍記錄證據(jù)
鳴笛抓拍FAQs:
Q1:前后車緊鄰,后車車牌被遮擋,后車鳴笛,是否會誤抓前車?
A1:不會。首先在算法上進行處理,如果兩車距離特別近,后車鳴笛聲音會被前車遮擋,到達聲吶陣列已經(jīng)不是直達波,可以在定位算法上排除這種定位結(jié)果,不予定位抓拍;其次,通過對抓拍圖像的結(jié)構(gòu)化處理,設(shè)計合適的定位光斑與車輛方框的“容納”算法,可準(zhǔn)確判斷鳴笛光斑所在車輛位置。
Q2:機動車緊鄰一側(cè)有電動車/摩托車鳴笛,是否會誤拍機動車?
A2:不會。對抓拍圖像進行結(jié)構(gòu)化處理,可以準(zhǔn)確區(qū)分出電動車/摩托車、機動車、自行車等,根據(jù)定位光斑的位置,可以準(zhǔn)確判斷出鳴笛來自于電動車/摩托車。
Q3:多車同時鳴笛,如何處理?
A3:如果多臺車在同一時刻按下喇叭,又在同一時刻松開喇叭,那么這段時間只會定位一臺鳴笛車輛;如果兩臺車的按喇叭時刻前后相差數(shù)十毫秒以上,系統(tǒng)可以定位到兩臺車輛。
Q4:車輛鳴笛后快速駛離,能否快速反應(yīng)準(zhǔn)確抓拍?
A4:能。世邦鳴笛抓拍系統(tǒng)創(chuàng)新采用了“預(yù)抓拍”技術(shù),預(yù)留一個數(shù)秒左右的抓拍圖片緩沖區(qū),當(dāng)鳴笛發(fā)聲并定位之后,會綜合考慮聲音傳播時間、定位所需的笛聲時長,從緩沖區(qū)中提取出接近鳴笛時刻的圖片作為證據(jù)圖片,能夠準(zhǔn)確定位鳴笛車輛。實驗表明,時間誤差在±20ms的范圍,以60km/h的市區(qū)時速計算,折算距離誤差為±30cm,不會對定位車輛結(jié)果產(chǎn)生影響。