







關鍵詞:聲源定位;麥克風陣列;STM32;信號處理
中圖分類號:TN929.11 文獻標識碼:A
0 引言
近年來,隨著多媒體和信號處理技術的快速發展,聲源定位算法也日益成熟[1]。聲源定位在軍事[2]、視頻電視會議、智能交通以及智能機器人等領域的應用越來越廣泛。因此,在復雜環境中如何準確定位聲源位置已成為人們研究的關鍵問題[3]。
傳統的聲音信號精確實時定位的主要方法是麥克風陣列,又稱為陣列信號處理技術。它具有隱蔽性好、語音噪聲消除、抗干擾性強、聲源跟蹤和定位準確等優點[4],在多個領域中被廣泛應用。麥克風陣列根據定位原理可分為3 類:基于麥克風接收信號的加權和相位定位[5]、基于麥克風接收信號的幅值和頻率定位[6] 以及基于不同麥克風接收信號的時間差定位[7]。基于麥克風接收信號的加權和相位定位技術需要對采集的信號進行加權分析,計算耗費時間長,并且需要預分離處理聲音信號和噪聲。基于麥克風接收信號的幅值和頻率定位方法可以精確定位,但數據處理的復雜度高。基于不同麥克風接收信號的時間差定位技術具有計算復雜度較低、速度較快等特點,但國內相關產品較少,且大多仍處于仿真階段。因此,研究以嵌入式STM32 微處理器為核心的聲源定位系統具有重要意義。
本文采用了最新的STM32 作為核心處理器,開發了一種基于到達時間差(time difference of arrival,TDOA)的聲源定位裝置。該裝置能夠實時定位并顯示聲源的位置。定位系統由聲音采集模塊接收聲音信號,利用STM32 微處理器對采集的信號進行處理,最終實現聲源位置的定位和實時顯示功能。
1 TDOA工作原理
本文主要利用了基于不同麥克風接收信號的TDOA 定位技術。這種技術分為兩個主要步驟:首先,估計聲音的TDOA,從中獲得傳聲器陣列中陣元之間的聲延遲;其次,利用獲取的聲音時間差,結合已知的傳聲器陣列的空間位置,進一步確定聲源的位置。這種方法的計算量通常較小,且有利于實時處理,因此在語音信號的聲源定位中具有重要作用。
2 硬件電路設計
本文以STM32 作為核心處理器,開發了一種基于不同麥克風接收信號的時間差的實時聲源定位裝置。聲源定位裝置結構框圖如圖2 所示。
本文的硬件系統包括電源、聲源、麥克風、前置電路、輸入接口、微控制器和顯示。電源為整個電路系統提供所需的電能;麥克風采集聲源信號,并經過前置電路處理后傳送至微控制器;微控制器對接收到的信號進行數據處理和分析,以確定聲源的位置;微控制器將聲源的具體位置實時顯示在有機發光二極管(organic light-emitting diode,OLED)顯示屏上,實現聲源的定位功能。
2.1 電源電路
電源電路是開發板的生命線,為整個系統提供能量,這是其正常運行的基礎。本設計的電源電路如圖3 所示。聲源定位裝置采用USB 接口供電,電源的引腳將與5 V 電壓連接,點亮電源指示燈。5 V電壓通過低壓差線性穩壓芯片(LD39050PU33R)轉換為3.3 V 的電壓,向STM32 芯片及外圍電路供電。LD39050PU33R 是低壓差線性穩壓器(lowdropout regulator,LDO)的芯片,固定輸出3.3 V 電源,最大輸出電流為500 mA。在穩壓芯片的輸入端和輸出端接有4 個電容進行濾波,分別濾除高頻和低頻信號的干擾,確保輸出電壓的穩定。
2.2 麥克風陣列設計
麥克風可以將聲音信號轉換成電信號,然后以電壓的形式輸出,其性能直接影響輸出信號的質量。本文選取駐極式小話筒,它具有體積小、靈敏度高、成本低、噪聲低等特點,頻率響應范圍為20 ~16 000 Hz,能夠滿足設計精度和穩定性的要求。
2.3 前置電路模塊
由于麥克風采集的輸出信號的電壓是毫伏級的,并且相鄰兩個采樣點之間的信號變動較小,因此必須使用放大電路對麥克風的輸出信號進行放大,使放大后的信號處在模擬數字轉換器(analogto digital converter,ADC)的信號采集范圍內。
本文選用了LM386 放大電路,它是一種功率放大器集成電路,專門用于低功耗電源。LM386 內置的增益為20 dB,但通過適當選擇pin1 和pin8 腳位之間的電容,可以將增益提高至最高200 dB。該芯片將電池作為供電源,電壓范圍為4 ~ 12 V。在沒有輸入信號時,它的靜態電流僅為4 A,而且失真較低。
2.4 信號采集模塊
信號采集模塊中的信號采集電路是通過引腳PA0、PA1、PA2 接入芯片內部的三路ADC 中來采集放大后的聲音信號。
2.5 最小系統
本文中的STM32F411RET6 處理器最小系統包括電源電路、晶振電路、復位電路以及配置模式電路。電源電路確保供電電壓為3.3 V,5 V 電壓通過低壓差線性穩壓芯片(LD39050PU33R)轉換為3.3 V 的電壓。晶振電路采用8 MHz 外部晶振提供穩定的時鐘信號。復位電路采用低電平、上電復位的設計。配置模式電路可以選擇STM32 的啟動方式。
2.6 顯示模塊
顯示電路采用OLED 模塊, 模塊內部集成了顯示驅動芯片SD1306, 顯示尺寸為0.96 in(1 in ≈ 2.54 cm),顯示分辨率為128×64。為了提高顯示屏的刷新率,采用了串行外圍設備接口(serial peripheral interface,SPI) 與STM32芯片連接的方式。對應的引腳為PA4、PA5、PA6、PA7,引腳PB7 作為復位信號,引腳PC7 作為命令/數據選擇信號。
3 軟件算法設計
本文以STM32F411RET6 處理器為核心,設計了麥克風陣列聲源定位裝置的軟件。軟件設計結構框圖如圖4 所示,其中,DMA 為直接存儲器訪問,FFT 為快速傅里葉轉換。軟件開發過程中,使用了意法半導體公司(ST)的STM32CubeMx 和安謀國際科技股份有限公司(ARM)的MDK-ARM 工具。STM32CubeMx 提供了圖形化的芯片配置工具,簡化了目標選擇、引腳分配、外設配置和時鐘配置等步驟,并自動生成了初始化代碼和應用程序的工程框架。而MDK-ARM 集成了Keil uVision5,提供了完善的調試和編譯功能。軟件實現主要包括兩個部分:一是STM32CubeMX 的配置,涉及芯片及外設的基本設置;二是MDK-ARM 程序編寫,包括具體的應用程序代碼編寫,以實現系統的功能和特性。
3.1 STM32CubeMX 配置
STM32CubeMX 工具大大降低了編程難度。STM32CubeMX 軟件的設置流程如下:首先,選擇STM32F411RET6 作為主控芯片,并設置外部高速時鐘源為8 MHz。其次,啟用ST-Link 調試口,并配置PA13 和PA14 引腳。再次,啟用ADC 功能,以便采集聲音信號,并將相應的引腳設置為PA0、PA1、PA2。最后,開啟SPI1 端口,并配置硬件NSS 端口,以便連接并驅動OLED 顯示屏,相關端口設置為PA4、PA5、PA6 和PA7。
3.2 MDK-ARM 程序編寫
MDK-ARM 提供了源代碼編輯、編譯、下載調試和仿真等多種功能支持。需編寫的程序主要包括ADC 采集、OLED 顯示、TDOA 算法實現以及Chan 算法實現等模塊,這些模塊的設計使得系統具備了聲源定位的基本功能。MDK-ARM 的強大功能為開發者提供了便利,使得軟件開發工作更加高效和便捷。
4 測試分析
將單片機電源斷開,使用杜邦線將3 個麥克風傳感器連接在STM32 單片機的引腳上,3 個麥克風的距離固定不變。聲源部分利用細繩將音響按照規定路線以一定速度向前移動,開啟單片機電源即可運行麥克風傳感器,從而記錄聲源到達不同麥克風的時間,計算出時間差。通過STM32 單片機計算角度和距離,最后在顯示屏上顯示出聲源位置。測試結果如表1 所示,結果表明該裝置實現了聲源的準確定位。
5 結論
本文介紹了一種基于TDOA 的聲源定位裝置的設計與實現過程。結果表明,該定位裝置通過傳感器位置和聲音時間差,成功估計聲源的橫坐標和縱坐標。這一方法在聲源定位領域具有廣泛的應用前景,可以提高定位精度。