楊 鵬,邢鈺姣,孫 昊,祖麗楠
(1.河北工業(yè)大學(xué)控制科學(xué)與工程學(xué)院,天津 300130;2.河北省控制工程技術(shù)研究中心,天津 300130)
近年來,運(yùn)用麥克風(fēng)陣列進(jìn)行聲源定位研究已經(jīng)成為信號(hào)處理領(lǐng)域的一個(gè)研究熱點(diǎn)。一組麥克風(fēng)按照一定的幾何結(jié)構(gòu)擺放組成麥克風(fēng)陣列[1],拾取來自各個(gè)方向的聲音信號(hào),并進(jìn)行空時(shí)處理,從而精確定位目標(biāo)聲源。該技術(shù)可在雷達(dá)、軍事偵察與跟蹤、機(jī)器人聽覺定位、電視會(huì)議等領(lǐng)域廣泛應(yīng)用。
在工程應(yīng)用中,根據(jù)麥克風(fēng)陣列模型和聲音球面?zhèn)鞑ツP蜆?gòu)建的聲源定位系統(tǒng)為一組復(fù)雜的非線性方程,難以用數(shù)值計(jì)算方法準(zhǔn)確建模。在這種情況下,可以應(yīng)用神經(jīng)網(wǎng)絡(luò)表達(dá)這種非線性系統(tǒng)。神經(jīng)網(wǎng)絡(luò)可以按照指定的精度逼近各種復(fù)雜的非線性系統(tǒng),解決非線性系統(tǒng)的建模問題;對(duì)于信息采用分布式存儲(chǔ)和處理方式,具有高運(yùn)算效率和很強(qiáng)的容錯(cuò)性、魯棒性[2,3]。
本文研究了可應(yīng)用在多種場(chǎng)合的聲源定向系統(tǒng),采用BP神經(jīng)網(wǎng)絡(luò)對(duì)定向系統(tǒng)進(jìn)行研究,并通過Matlab仿真證明了在正四面體的麥克風(fēng)陣列模型下可以實(shí)現(xiàn)遠(yuǎn)場(chǎng)和近場(chǎng)的目標(biāo)聲源定向。
聲源定向系統(tǒng)的結(jié)構(gòu)如圖1所示,由4個(gè)全向麥克風(fēng)M1,M2,M3和M4組成一個(gè)正四面體陣列,對(duì)目標(biāo)聲源進(jìn)行定向。若聲源位于空間P點(diǎn),該定向模型可通過已建立的神經(jīng)網(wǎng)絡(luò)得出其方位角α和俯仰角β,以實(shí)現(xiàn)對(duì)目標(biāo)聲源的跟蹤。
圖1 麥克風(fēng)陣列結(jié)構(gòu)模型Fig 1 Structure model of microphone array
BP神經(jīng)網(wǎng)絡(luò)是一種前饋神經(jīng)網(wǎng)絡(luò),可根據(jù)系統(tǒng)輸入輸出數(shù)據(jù)的特點(diǎn)來確定BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),輸入數(shù)據(jù)為3個(gè)時(shí)延值,即聲音信號(hào)到達(dá)陣列中不同位置的麥克風(fēng)的時(shí)間差。把聲源到麥克風(fēng)M4的時(shí)間作為基準(zhǔn),到麥克風(fēng)M1,M2,M3的時(shí)間與基準(zhǔn)的差記作3個(gè)時(shí)延值,構(gòu)成一組3個(gè)參數(shù)的輸入數(shù)據(jù)。輸出數(shù)據(jù)為目標(biāo)聲源的位置,本文的聲源定位是為了實(shí)現(xiàn)移動(dòng)機(jī)器人對(duì)目標(biāo)聲源的跟蹤,所以,輸出數(shù)據(jù)采用球坐標(biāo)形式較為方便。該網(wǎng)絡(luò)的輸出也是有3個(gè)參數(shù),方位角、俯仰角和距離。
理論上已經(jīng)證明,在不限制隱含層節(jié)點(diǎn)數(shù)的情況下,只有一個(gè)隱含層的BP網(wǎng)絡(luò)可以實(shí)現(xiàn)任意非線性映射[4]。如果節(jié)點(diǎn)數(shù)過多,不但網(wǎng)絡(luò)學(xué)習(xí)時(shí)間增加,而且可能出現(xiàn)“過擬合”現(xiàn)象[5]。當(dāng)樣本數(shù)較多時(shí),增加一個(gè)隱含層,可以適度減小網(wǎng)絡(luò)規(guī)模[6,7]。本文選用有2個(gè)隱含層的BP網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)為3—30—30—3,即輸入層和輸出層有3個(gè)節(jié)點(diǎn),2個(gè)隱含層分別有30個(gè)節(jié)點(diǎn)。
假設(shè)4個(gè)麥克風(fēng)之間的距離均為1 m,目標(biāo)聲源范圍為一個(gè)半徑為1~50 m的球體內(nèi)的點(diǎn)(認(rèn)為聲源不會(huì)在麥克風(fēng)陣列內(nèi)或離陣列很近),聲速為340 m/s,根據(jù)聲源定位模型的幾何關(guān)系隨機(jī)取數(shù)得到系統(tǒng)2000組的輸入輸出數(shù)據(jù)。從中隨機(jī)選取1900組數(shù)據(jù)作為網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù),100組數(shù)據(jù)作為網(wǎng)絡(luò)測(cè)試數(shù)據(jù)。
數(shù)據(jù)歸一化是運(yùn)用神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)前對(duì)數(shù)據(jù)常做的一種處理方法。數(shù)據(jù)歸一化處理把所有數(shù)據(jù)都轉(zhuǎn)化為[0,1]或者[-1,1]之間的數(shù),可以取消各維數(shù)據(jù)間數(shù)量級(jí)的差別,避免因?yàn)檩斎胼敵鰯?shù)據(jù)數(shù)量級(jí)差別較大而造成神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差較大[8]。數(shù)據(jù)歸一化方法主要有兩種:最大最小法,平方數(shù)方差法[9]。本論文采用第一種方法對(duì)輸入輸出數(shù)據(jù)進(jìn)行歸一化,并對(duì)網(wǎng)絡(luò)預(yù)測(cè)輸出進(jìn)行反歸一化,通過Matlab自帶函數(shù)mapminmax來實(shí)現(xiàn)。
Matlab 軟件中包含Matlab神經(jīng)網(wǎng)絡(luò)工具箱,可以直接調(diào)用來構(gòu)建各種類型的神經(jīng)網(wǎng)絡(luò)。本論文的BP神經(jīng)網(wǎng)絡(luò)主要用newff,train和sim3個(gè)神經(jīng)網(wǎng)絡(luò)工具箱自帶函數(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)的構(gòu)建,訓(xùn)練和仿真預(yù)測(cè)。2個(gè)隱含層的節(jié)點(diǎn)傳遞函數(shù)分別為tansig和logsig。
在預(yù)測(cè)的100組輸出數(shù)據(jù)中,舍去了預(yù)測(cè)距離的數(shù)據(jù)。這個(gè)聲源定向系統(tǒng)以實(shí)現(xiàn)對(duì)目標(biāo)聲源的跟蹤為目的,預(yù)測(cè)出方位角和俯仰角,就可以得出目標(biāo)聲源的空間方向,實(shí)現(xiàn)跟蹤;再者由于BP神經(jīng)網(wǎng)絡(luò)的擬合能力有限,并不能對(duì)距離做出較為準(zhǔn)確的預(yù)測(cè),故舍去了這組數(shù)據(jù)。圖2為100組預(yù)測(cè)數(shù)據(jù)的方位角預(yù)測(cè)誤差,誤差范圍為±5°。圖3為100組預(yù)測(cè)數(shù)據(jù)的俯仰角預(yù)測(cè)誤差,誤差范圍為±4°。
圖2 方位角預(yù)測(cè)誤差Fig 2 Azimuth angle forecasting error
圖3 俯仰角預(yù)測(cè)誤差Fig 3 Pitch angle forecasting error
傳統(tǒng)的聲源定位方法是利用幾何關(guān)系建立一組時(shí)延和聲源坐標(biāo)的方程組,通過解方程組來得到時(shí)延和聲源坐標(biāo)的數(shù)值關(guān)系。但是在解方程組的過程中,為了簡(jiǎn)化運(yùn)算,大都假設(shè)聲源位于遠(yuǎn)場(chǎng)且聲音信號(hào)以平面波傳播,以此來約減得到近似結(jié)果。但當(dāng)聲源位于近場(chǎng)時(shí),即當(dāng)麥克風(fēng)之間的距離相對(duì)于聲源到麥克風(fēng)的距離較大時(shí),這種假設(shè)就不能成立了。如果仍然用近似的結(jié)果進(jìn)行計(jì)算,那么得到的數(shù)據(jù)與真實(shí)數(shù)據(jù)相比就不是誤差較大了,而是錯(cuò)誤的。
用于BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的100組輸入輸出數(shù)據(jù),是在2000組樣本數(shù)據(jù)中隨機(jī)選擇的,遠(yuǎn)場(chǎng)和近場(chǎng)的聲源位置都有,從Matlab仿真得到的圖形來看,誤差分布較均勻,說明并沒有因?yàn)槭墙鼒?chǎng)聲源神經(jīng)網(wǎng)絡(luò)就出現(xiàn)大的預(yù)測(cè)誤差,表明該神經(jīng)網(wǎng)絡(luò)無論是近場(chǎng)還是遠(yuǎn)場(chǎng)都可以預(yù)測(cè)目標(biāo)聲源的方位角和俯仰角。
為了進(jìn)一步驗(yàn)證網(wǎng)絡(luò)在近場(chǎng)對(duì)聲源的定向情況,選取目標(biāo)聲源范圍為1~5 m的空心球體內(nèi)的點(diǎn),取測(cè)試樣本100個(gè),用已訓(xùn)練好的BP網(wǎng)絡(luò)再次進(jìn)行預(yù)測(cè)。預(yù)測(cè)的方位角誤差和俯仰角誤差分別如圖4、圖5所示。近場(chǎng)方位角預(yù)測(cè)誤差大部分在±5°以內(nèi),有個(gè)別樣本點(diǎn)的誤差較大甚至預(yù)測(cè)錯(cuò)誤,這是由于選取的樣本點(diǎn)離坐標(biāo)原點(diǎn)太近造成的,不影響實(shí)際應(yīng)用。近場(chǎng)俯仰角預(yù)測(cè)誤差結(jié)果和上次預(yù)測(cè)結(jié)果很相似,誤差范圍仍然是±4°。
圖4 近場(chǎng)方位角預(yù)測(cè)誤差Fig 4 Azimuth angle forecasting error in close field
圖5 近場(chǎng)俯仰角預(yù)測(cè)誤差Fig 5 Pitch angle forecasting error in close field
本文應(yīng)用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行聲源定向研究,設(shè)計(jì)了一種適用于正四面體麥克風(fēng)陣列的神經(jīng)網(wǎng)絡(luò)。經(jīng)Matlab實(shí)驗(yàn)證明:輸入相應(yīng)的時(shí)延數(shù)據(jù),無論目標(biāo)聲源是處于遠(yuǎn)場(chǎng)還是近場(chǎng),都可以預(yù)測(cè)其方向角和俯仰角,進(jìn)而對(duì)聲源進(jìn)行跟蹤。但是由于網(wǎng)絡(luò)擬合能力有限,并不能很好地預(yù)測(cè)聲源的空間距離,因此,如何實(shí)現(xiàn)對(duì)空間距離的準(zhǔn)確預(yù)測(cè),是下一步的重點(diǎn)研究任務(wù)。
[1] 陸曉燕.基于麥克風(fēng)陣列實(shí)現(xiàn)聲源定位[D].大連:大連理工大學(xué),2003.
[2] 韓立群.人工神經(jīng)網(wǎng)絡(luò)理論、設(shè)計(jì)及應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2002.
[3] 周開利,康耀紅.神經(jīng)網(wǎng)絡(luò)模型及其Matlab仿真程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.
[4] 閆 石,何 軻,趙延安.一種基于四元立體陣的聲定向方法[J].電聲基礎(chǔ),2007,31(7):16 -19.
[5] 林 盾,陳 俐.BP神經(jīng)網(wǎng)絡(luò)在模擬非線性系統(tǒng)輸出中的應(yīng)用[J].武漢理工大學(xué)學(xué)報(bào),2003,27(5):731 -734.
[6] 林 琳.基于BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)格性能預(yù)測(cè)[D].長(zhǎng)春:吉林大學(xué),2004.
[7] 鄧 偉.BP神經(jīng)網(wǎng)絡(luò)構(gòu)建與優(yōu)化的研究及其在醫(yī)學(xué)統(tǒng)計(jì)中的應(yīng)用[D].上海:復(fù)旦大學(xué),2002.
[8] 孫書學(xué),顧曉輝,孫曉霞.用正四棱錐形陣對(duì)聲目標(biāo)定位研究[J].應(yīng)用聲學(xué),2006,25(2):102 -107.
[9] 劉小剛.基于四元十字陣的聲被動(dòng)定位研究[D].南京:南京理工大學(xué),2005.