摘要:聲源定位跟蹤技術在當今社會有著越來越廣泛的應用。在此使用兩個高靈敏度麥克風作為傳感器,配以音頻信號處理芯片,接收音頻信號并進行模數(shù)轉(zhuǎn)換,使用FPGA器件作為核心控制器,結(jié)合TDOA算法和ILD算法,實現(xiàn)在室內(nèi)環(huán)境下、二維平面內(nèi)的聲源定位。并根據(jù)聲源定位的信息驅(qū)動攝像頭轉(zhuǎn)動,使其一直對準于聲源所在位置,并保持持續(xù)跟蹤。FPGA使用NiosⅡ內(nèi)核,方便使用高級語言進行程序設計。攝像頭的視頻輸出信號可接于PC機或其他視頻設備。與其他定位算法相比,系統(tǒng)減少了使用傳感器的數(shù)量。
在日常生活中,聲源跟蹤定位技術有著廣泛的應用。例如在視頻會議中,聲源定位被用于檢測講話人的位置,并自動調(diào)整攝像頭轉(zhuǎn)動角度,使其對準講話者;舞臺演出中,聲源定位跟蹤可是攝像頭自動保持指向主持人或主角;安防保衛(wèi)系統(tǒng)中,聲源定位技術可使監(jiān)控攝像頭在監(jiān)控區(qū)域發(fā)生聲響的瞬間對準于聲源位置,并保持對移動聲源的跟蹤。
現(xiàn)在常見的麥克風聲源定位算法多見于TDOA算法,其基本原理是根據(jù)信號到達兩個不同位置的麥克風的時間差,估計出信號到達兩個不同位置麥克風的距離差,可以列出一個雙曲線方程,同時使用另外兩個不同的麥克風同時檢測信號可以得到另外一個雙曲線方程,兩個雙曲線方程的交點就是聲源的位置坐標。使用這種方法進行聲源定位時,至少要使用三個麥克風,使用兩次TDOA算法進行運算,才能完成一次定位操作。為了實現(xiàn)更精確的聲源定位,也常采用陣列技術,將多個麥克風組成線陣,或方陣采集信號進行聲源定位。但這種定位技術的算法更為復雜。本文采用兩個高靈敏度麥克風作為傳感器,選用FPGA作為控制器,當對聲源實現(xiàn)定位后,控制步進電機轉(zhuǎn)動,使攝像頭對準聲源。當聲源位置發(fā)生移動時,可使攝像頭自動保持跟蹤。
1 設計原理
系統(tǒng)使用TDOA算法和ILD算法相結(jié)合的方法,實現(xiàn)聲源的定位。在二維平面,即聲源和麥克風處于同一平面時,麥克風接收到的信號模型在考慮信號傳播的逆平方定律時可表示為:
x(t)=s(t-τ)/d+n(t) (1)
式中:s(t)為源信號;n(t)為加性白噪聲;d和τ分別為信號到達麥克風的距離和時延。
使用ILD方法在計算能量時可以忽略時延信息。在[0,l]時間范圍內(nèi),麥克風接收到的信號能量,就是該時間段內(nèi)信號采樣的平方和,即:
對于兩個麥克風組成的陣列,可得到麥克風接收到信號的能量與麥克風距聲源距離的關系為:
求解式(6)和式(7)組成的方程組就可得到聲源位置坐標。通過進一步的變換可以得到該方程的閉合解。
2 系統(tǒng)硬件設計
本文采用Altera公司的CycloneⅢ系列FPGA芯片EP3C16F484作為核心處理器。使用UDA1341芯片作為前端音頻信號采集電路的處理芯片,使用兩個高靈敏度的麥克風作為音頻信號的傳感器。兩個麥克風朝向同一方向,間距0.5 m并行放置。麥克風在使用前需要標定,保證麥克風在同一位置接受同一信號時,其接收到的信號的幅值一致。使用兩個兩相步進電機對攝像頭的轉(zhuǎn)動角度進行控制。為了記錄數(shù)據(jù),在系統(tǒng)中添加了一個4 Mb的FLASH存儲器,使用一片帶字庫的16x2的液晶用于顯示定位信息。為保證攝像頭的視線不受環(huán)境障礙物的干擾,攝像頭在放置時應該有一定的高度,一般高于麥克風的放置高度,因此需要兩個步進電機調(diào)整攝像頭的角度,一個調(diào)整水平轉(zhuǎn)動角度,另一個調(diào)整俯仰角。系統(tǒng)框圖如圖1所示。
EP3C16F484是CycloneⅢ型FPGA,是一種低成本的應用于終端市場的FPGA器件,其共有15 408個邏輯單元,56個嵌入式乘法器,4個鎖相環(huán),346個用戶定義的I/O腳。可滿足一般系統(tǒng)核心控制器的應用。UDA1341是一種經(jīng)濟型的音頻信號采集編碼芯片,有兩個ADC模塊,過采樣比可達128,可以編程設置其各種工作參數(shù),如增益等。系統(tǒng)在啟動時首先進行初始化操作,通過UDA11341芯片的L3總線接口設置芯片的工作方式和工作參數(shù)。兩個麥克風所接收到的音頻信號經(jīng)音頻信號采集電路處理后,轉(zhuǎn)換成離散的信號,送至FPGA中進行處理。控制器根據(jù)接收到的信號的序列判斷出兩個麥克風接收到信號的時差和信號功率的衰減,進而計算出聲源的位置坐標??刂撇竭M電機轉(zhuǎn)動,使攝像頭對準聲源。系統(tǒng)同時將測得的聲源的位置坐標在LCD顯示出來。用戶在使用時可根據(jù)具體的使用環(huán)境建立定位的坐標系。確定坐標系后在系統(tǒng)啟動初始化時將兩個麥克風的位置和攝像頭的位置的坐標通過矩陣鍵盤輸入到系統(tǒng)中。
3 系統(tǒng)軟件設計
FPGA編程中常用的語言是VHDL和Verilog HDL語言。這兩種語言都是硬件編程語言,功能強大,可用于描述數(shù)字系統(tǒng)的結(jié)構,功能等,邏輯性非常強,但是若用于一些信號處理方面算法的編程,則難度和工作量都比較大。Altera公司推出了可移植于FPGA芯片上的NiosⅡ內(nèi)核。利用該內(nèi)核可以方便的裁剪系統(tǒng)資源,同時使用C/C++語言進行程序的開發(fā),大大降低了利用FPGA開發(fā)的難度。為了保證系統(tǒng)響應的實時性,本文使用NIOSII/f型內(nèi)核。雖然占用了大量的FPGA資源,但獲得了最高的系統(tǒng)性能。同時添加的其他系統(tǒng)資源包括:片上SRAM 63 KB,一個定時器,一個串口,一個JTAG接口,一個FLASH控制器CFI,一個用于矩陣鍵盤的5位的通用I/O口,用于液晶顯示的16位通用I/O口,兩個9位的通用I/O口用于前端數(shù)據(jù)采集電路的輸入,兩個1位的I/O口用于控制兩個步進電機。在QuartersⅡ9.0開發(fā)環(huán)境中完成對NiosⅡ內(nèi)核的配置和編譯后,在NiosⅡIDE中使用C++語言進行程序的編寫。圖2為軟件流程圖。
系統(tǒng)啟動后,首先進行初始化操作,設置UDA1341的工作方式,設置麥克風和攝像頭的位置坐標。聲源所發(fā)出的音頻信號經(jīng)前端信號采集電路處理后變?yōu)殡x散時間信號。系統(tǒng)每次從前端信號處理電路的兩路輸出中讀取相同時間段的相同長度的序列后,將其存儲在內(nèi)存中,直到下次讀入數(shù)據(jù)進行更新。系統(tǒng)對讀入的音頻數(shù)據(jù)進行歸一化運算,消除兩個麥克風接收到信號的能量的差異。然后對兩列信號進行廣義的互相關運算,判斷是否有有效的聲源信號的輸入。若有有效地聲源信號輸入,則根據(jù)前端信號采集電路的采樣速率,計算出兩個麥克風接收到信號的時間差。并利用存儲的原始信號計算出兩個麥克風接收到信號的功率衰減,根據(jù)式(6),式(7),計算出聲源的位置坐標,并存儲。
若無有效的信號輸入,則系統(tǒng)繼續(xù)從前端處理電路中讀取數(shù)據(jù),繼續(xù)判斷。系統(tǒng)在安裝時,為避免攝像頭的視線被障礙物所遮擋,攝像頭的安裝位置應高于兩個麥克風的安裝高度。因此在計算攝像頭的轉(zhuǎn)動角度時即需要考慮攝像頭的水平轉(zhuǎn)動角度,也需要考慮攝像頭在垂直方向上的轉(zhuǎn)動角度。系統(tǒng)計算出聲源位置坐標后,根據(jù)當前攝像頭的指向,分別計算出攝像頭在水平方向和垂直方向上需轉(zhuǎn)動的角度,控制步進電機進行轉(zhuǎn)動,使攝像頭指向聲源的位置。完成一次定位操作后,統(tǒng)繼續(xù)從前端電路中讀取數(shù)據(jù),進行下次定位操作。
4 實驗測試
由于在設計時只使用了兩個麥克風,僅能在二維平面內(nèi)實現(xiàn)對麥克風正面180°范圍的定位和跟蹤,攝像頭的安放高度應高于聲源的高度,否則有可能出現(xiàn)攝像頭看不到聲源位置的情況。在10.8 m×7.5 m×3.5 m的室內(nèi)環(huán)境進行試驗,將麥克風和攝像頭置于邊界,麥克風安放高度為1.5 m,和聲源處于同一高度,攝像頭安放高度2.0 m,為了保證能夠得到方程的解,麥克風的坐標不能設置在坐標軸上;設麥克風1的坐標為(1.0,1.0),麥克風2的坐標為(1.5,1.0)。使用由信號發(fā)生器產(chǎn)生的脈沖信號作為聲源,每組信號僅有一個脈沖,頻率2 kHz,幅度3 V,每組脈沖發(fā)射間隔2 s,通過一音箱播放,室內(nèi)環(huán)境保持安靜。將聲源以較慢的步速在室內(nèi)移動,系統(tǒng)可實現(xiàn)對聲源的正常跟蹤,使攝像頭一直將聲源保持在鏡頭的視野范圍內(nèi)。圖3是計算機所監(jiān)測到的音頻信號的波形圖。上面的波形是位于右側(cè)的麥克風所接收到的信號,下面的波形是位于左側(cè)的麥克風所接收到的信號,其中右側(cè)的麥克風距離聲源的位置更近一些。從波形圖中可以看出左側(cè)的麥克風接收到的信號相對于右側(cè)的麥克風有一定的時延,并且接收到信號的幅值也更小一些。系統(tǒng)在設計時僅使用兩個麥克風作為傳感器,當聲源移動至兩個麥克風連線的中垂線位置時,由于兩個麥克風接收到的信號的能量衰減相同,無法將方程解出,此時將麥克風稍微偏轉(zhuǎn)一下角度,使聲源偏離中垂線位置,即可繼續(xù)定位跟蹤。
5 結(jié)語
在舞臺和視頻會議中,聲源定位跟蹤技術相對于其他技術具有很多優(yōu)點。聲源定位跟蹤可實現(xiàn)全自動的工作模式,工作過程中不需要人為控制操縱。與相同功能的紅外跟蹤定位系統(tǒng)相比,跟蹤目標身上不需要攜帶紅外發(fā)射裝置,不必考慮紅外發(fā)射的角度,頻率等問題。與采用圖像識別實現(xiàn)跟蹤的方法相比,其系統(tǒng)結(jié)構、算法等各方面更為簡單。同時若將攝像頭換成聚光燈,也可實現(xiàn)燈管的自動跟蹤控制。現(xiàn)有的設計中,如果要確定一個二維平面的點,至少需要三個麥克風作為傳感器接收信號。本設計采用兩個麥克風作為系統(tǒng)傳感器,使用TDOA算法和ILD算法相結(jié)合的方法實現(xiàn)定位操作。比現(xiàn)有的設計減少一個麥克風,使系統(tǒng)體積更小,同時也降低了麥克風安放的要求,使麥克風可以根據(jù)具體環(huán)境更加靈活的放置。