基于FPGA的實(shí)時(shí)聲源定位
摘 要: 提出了利用2個(gè)麥克風(fēng)基于FPGA的聲源定位的方法。具體通過基于相位變換改進(jìn)的互相關(guān)方法成功在低信噪比(10 dB)的噪聲環(huán)境下完成聲源定位。利用同樣的算法和硬件結(jié)構(gòu),可以在1片F(xiàn)PGA芯片上實(shí)現(xiàn)5組并行的時(shí)域處理的系統(tǒng),而且每個(gè)麥克風(fēng)的功耗只有77 mW~108 mW。
關(guān)鍵詞: 聲源定位;時(shí)延估計(jì);FPGA
實(shí)時(shí)聲源定位在許多方面得到了應(yīng)用,例如聲音的識別和電話會(huì)議,可以利用陣列麥克風(fēng)來實(shí)現(xiàn)對多個(gè)聲源信號的獲取和并行處理[1-3]。由于處理多路語音信號需要多個(gè)處理器,使得其實(shí)現(xiàn)費(fèi)用昂貴,即便是使用DSP,系統(tǒng)也會(huì)帶來很大的功耗,因而限制了其在許多實(shí)際中的應(yīng)用。例如Brown大學(xué)發(fā)展的大規(guī)模麥克陣列系統(tǒng)利用多個(gè)DSP處理器和緩沖器來實(shí)現(xiàn)聲源的定位,每個(gè)麥克的功耗達(dá)到了400 mW。這大大超過了一些便攜式設(shè)備(PDA和手機(jī))的功耗,因此最好的解決辦法是設(shè)計(jì)專用芯片。
本文將闡述聲源定位系統(tǒng)在FPGA中的實(shí)現(xiàn),為專用芯片提供一個(gè)可行性參考,具有很好的商業(yè)應(yīng)用價(jià)值。以前采用DSP[4]或是DSP+FPGA[5]實(shí)現(xiàn)多路聲源信號的定位,而本設(shè)計(jì)的整個(gè)定位系統(tǒng)除了前端的模擬部分外其余部分均在FPGA中實(shí)現(xiàn)。采取有效的算法后,整個(gè)硬件實(shí)現(xiàn)的功耗可以控制在77 mW~108 mW之間。
1 聲源定位的算法
現(xiàn)有許多算法[1-4]實(shí)現(xiàn)聲源定位,包括基于信號子空間的方法(例如MUSIC算法)和空間似然方法[2,4]等,最為常用的方法是估計(jì)信號的對應(yīng)的麥克對到達(dá)延時(shí)(TDOA)[3]估計(jì)方法。該方法的每一組麥克對將聲源定位在3維空間的一個(gè)雙曲面上,這樣通過多個(gè)麥克對確定的雙曲面的交點(diǎn)能有效地實(shí)現(xiàn)聲源的定位。TDOA估計(jì)方法已進(jìn)行了很多研究[3,6],最為普通的是廣義互相關(guān)GCC(Generalized Cross Correlation)方法[6]。與其他的方法相比,基于GCC的方法計(jì)算量小、計(jì)算效率高。
假設(shè)2個(gè)麥克各自接收的信號分別為m1(t)和m2(t)(包括噪聲、回響和聲音的延時(shí)信號)。常用的估計(jì)延時(shí)的方法是互相關(guān)方法:
PHAT權(quán)系數(shù)對應(yīng)的是相位變換,在回響環(huán)境中效果明顯[1,3,6]。UCC權(quán)系數(shù)為1,對應(yīng)的是單純的互相關(guān)而沒有經(jīng)過濾波處理。
離散信號的GCC表示為:
如果采用方波作為補(bǔ)償函數(shù),(4)式可以寫成:
與(4)式相比,(5)式用來估計(jì)TDOA的好處在于計(jì)算量的減少,而且在低的信噪比下具有更好的性能,所以本文采用的是(5)式在FPGA中的實(shí)現(xiàn)。
2 FPGA的實(shí)現(xiàn)
設(shè)計(jì)中只考慮最簡單的一對麥克風(fēng)的TDOA的估計(jì),每個(gè)麥克風(fēng)接收的信號經(jīng)過放大、帶通濾波后以20 kHz的頻率進(jìn)行采樣,每個(gè)采樣的數(shù)據(jù)寬度為24位。取量化后的高8位送往FPGA(Xilinx Virtex II 2000)中進(jìn)行運(yùn)算。盡管只討論了1對麥克風(fēng)的情況,多個(gè)麥克風(fēng)對也能在同一個(gè)FPGA中實(shí)現(xiàn)(本文將會(huì)在后面具體介紹)。
輸入的采樣信號分別存儲(chǔ)在2個(gè)Buffer里(Buffer的大小為256~1 024個(gè)采樣點(diǎn)),然后將輸出信號經(jīng)過漢寧窗濾波,將數(shù)據(jù)轉(zhuǎn)化為16位的浮點(diǎn)數(shù)存儲(chǔ)在FFT的Buffer中,F(xiàn)FT模塊將各自的Buffer中的數(shù)據(jù)進(jìn)行FFT運(yùn)算,如圖1所示。
在FPGA的實(shí)現(xiàn)過程中采用CORDIC算法,它將傅里葉變換的復(fù)數(shù)表達(dá)形式轉(zhuǎn)換成幅度和相位表達(dá)形式,在能夠減少計(jì)算量的同時(shí)不增加硬件的資源。2路信號的幅度和相位計(jì)算出來后利用(5)式得到TDOA的估計(jì),如圖2所示。估計(jì)的過程涉及到根據(jù)(5)式搜索最大的τ,搜索的范圍從-30 Ts~30 Ts(步進(jìn)為采樣周期Ts),ε=0.5。為了實(shí)現(xiàn)TDOA的實(shí)時(shí)估計(jì),硬件部分主要由3部分組成:輸入信號采集部分、FFT的計(jì)算及幅相轉(zhuǎn)換部分、TDOA的估計(jì)部分。2個(gè)Buffer已經(jīng)能夠滿足GCC前端數(shù)據(jù)緩存的要求,但考慮到CORDIC算法的誤差,設(shè)計(jì)中多用了1個(gè)Buffer儲(chǔ)存數(shù)據(jù)的復(fù)數(shù)形式,為系統(tǒng)的誤差分析提供數(shù)據(jù),確保定位精度。
3 實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)中Buffer的大小為1 024位,對應(yīng)的時(shí)間緩存時(shí)間為50 ms。麥克風(fēng)對按前面介紹的方法安置。第一個(gè)實(shí)驗(yàn)是對固定聲源的定位,講話人在房間內(nèi)固定的地方說話,如圖3所示。
要注意保持麥克風(fēng)對與講話者嘴的高度一致。將麥克風(fēng)得到的數(shù)據(jù)經(jīng)過放大、濾波、采樣和FPGA處理。系統(tǒng)噪聲由麥克風(fēng)、放大器或?yàn)V波器等器件引入,信噪比為30 dB。利用麥克風(fēng)獲取的50 ms的信號幀,分別用GCC和PHAT的權(quán)值來估計(jì)講話者的TDOA。將每幀的到達(dá)時(shí)間時(shí)延τ轉(zhuǎn)換成波達(dá)方向,其中,v表示聲音的傳播速度(取345 m/s),d表示2個(gè)麥克風(fēng)之間的距離(d=0.4 m)。
通過DOA的估計(jì)和實(shí)際的DOA來計(jì)算DOA的誤差,實(shí)際的DOA可以通過講話者在環(huán)境的實(shí)際位置得到。DOA誤差如圖4所示。利用PHAT權(quán)值的TDOA定位精度要比UCC的好,因此試驗(yàn)中利用的是PHAT權(quán)值。為了得到基于FPGA的聲源定位系統(tǒng)在運(yùn)動(dòng)的聲源和不同背景噪聲下的性能,本文利用PHAT權(quán)系數(shù)分別進(jìn)行實(shí)驗(yàn)。如圖5所示,講話者從一個(gè)地方移動(dòng)到另外一個(gè)地方,整個(gè)移動(dòng)持續(xù)1 min,講話者始終面對著麥克風(fēng)對。
分別在信噪比為30 dB、20 dB、10 dB、0 dB的條件下對2個(gè)不同的講話者做試驗(yàn),當(dāng)信噪比為30 dB時(shí),噪聲只由傳感器和信號處理系統(tǒng)自身引入;當(dāng)信噪比為20 dB、10 dB、0 dB時(shí),則通過提供一個(gè)高斯噪聲源來提供,通過調(diào)整噪聲的強(qiáng)度可以實(shí)現(xiàn)信噪比的變化。信噪比為30 dB的DOA誤差如圖6(a)所示,在不同的信噪比條件下,0°的位置具有共同的峰值,但是隨著信噪比的降低(20 dB和10 dB分別對應(yīng)圖6(b)和圖6(c)),誤差越來越大,當(dāng)降到0 dB時(shí)起不到定位的作用,如圖6(d)所示。
實(shí)時(shí)聲源定位系統(tǒng)在Xilinx公司的xc3s1000 FPGA中實(shí)現(xiàn),按文中提出的算法和實(shí)現(xiàn)方法可以實(shí)現(xiàn)10 dB信噪比以上的聲源定位,整個(gè)系統(tǒng)具有很好的魯棒性。通常的處理多對麥克風(fēng)對的信號算法常常利用DSP,然而功耗的需求以及外圍設(shè)備的復(fù)雜使得DSP在許多場合受到限制。利用本文介紹的算法,在FPGA Virtex II Pro-70中并行處理6個(gè)TDOA估計(jì)模塊,時(shí)鐘選取為10 MHz,功耗可以控制在0.776 W~1.074 W之間,試驗(yàn)消耗的邏輯門為1 192 793。通過流水線處理,如果系統(tǒng)的時(shí)鐘為100 MHz,在1塊FPGA中能并行處理50個(gè)TDOA估計(jì)模塊,不過功耗要增大到7.76~10.74 W之間。由于Virtex II Pro-70有足夠的存儲(chǔ)空間,因此輸入Buffer部分無需額外的邏輯門。與其他的方法相比,如大型麥克陣列每個(gè)麥克的功耗為400 mW[5],本文的方法的平均功耗要小得多(每個(gè)麥克77~108 mW),為減少VLSI電路的功耗提供了一個(gè)切實(shí)可行的途徑。
參考文獻(xiàn)
[1] AARABI P,MAHDAVI A.The relation between speech segment selectivity and time delay estimation accuracy. In Proceedings of ICASSP,May 2002.
[2] AARABI P,ZAKY S. Robust sound localization using mult-source audiovisual information fusion. Information Fusion, 2001,3(2):209-223.
[3] BRANDSTEIN M S, SILVERMAN H. A robust method for speech signal time-delay estimation in reverberant rooms.IN Proceedings of ICASSP,May 1997.
[4] PONCA M, SCHAUER C. FPGA implementation of a spike-based sound localization system. In 5th International Conference on Artificial Neural Networks and genetic Algorithms, 2001.
[5] SILVERMAN H F,PATTERSON W R,F(xiàn)LANAGAN J L.The huge microphone array.Brown University Technical Report,May 1996.
[6] KNAPP C H, CARTER G.The generalized correlation method for estimation of time delay.IEEE Tarnsactions on ASSP,1976,24(4):320-327.