李彥瑭,沈 一,潘欣裕,2,孫云飛,夏文浩,郭笑非,陸家欣,周 岑
(1.蘇州科技大學 電子與信息工程學院,江蘇 蘇州 215009;2.蘇州科技大學 蘇州智慧城市研究院,江蘇 蘇州 215009)
當前麥克風陣列在許多實用技術領域都有著廣泛的應用,如高背景噪聲情況下探測航空器的噪聲源[1]、在較遠距離識別聲音[2]、在聲環(huán)境中查詢鑒別出不同尋常的聲音[3]、用智能聲源定位的方式追蹤人類[4]、在高噪聲環(huán)境下對危險情況進行探測和分類[5]等。語音信號處理領域也引入了陣列信號處理的概念,并且根據(jù)聲音傳播的特點發(fā)展出了一些獨特的方法,如到達時間差估計(TDOA)[6]等。語音定位系統(tǒng)的主要目標是識別聲音的方向,一般使用TDOA算法測得目標發(fā)出的聲音到達麥克風單元的時間差,測得目標聲音的特征參數(shù),利用時間差來確定目標聲音點與陣列的角度。本文采用在功耗控制、可擴展性、集成度、性能等方面均具有較大優(yōu)勢的高性能STM32H743聲源定位系統(tǒng),完成基于STM32H743的聲源定位系統(tǒng)的硬件設計。
系統(tǒng)架構(gòu)如圖1所示,由5個麥克風組成陣列,負責聲音信號的采集和放大;MCU負責聲音信號的處理和定位運算;LCD屏提供人機交互界面,顯示相關信息。其中,每個麥克風都連接一個前置放大電路,對信號進行放大以便于適配ADC采集。
圖1 聲音定位系統(tǒng)結(jié)構(gòu)
(1)麥克風聲音采集模塊
實現(xiàn)聲源定位,必須使用麥克風陣列以測量聲波場并提取有關信息。系統(tǒng)采用CUI公司出品的CMA-4554PF-W型高靈敏度全向麥克風。麥克風得到的聲信號所轉(zhuǎn)化的電壓信號不僅微弱,還有正、負之分,但STM32H7內(nèi)部A/D轉(zhuǎn)換器只能對正電壓進行轉(zhuǎn)換,因此需要在麥克風后連接前置放大器,并且設置直流偏置電壓,才能讓內(nèi)部A/D轉(zhuǎn)換器正確將接收的聲音信號進行轉(zhuǎn)化。MAX4466EXK-T芯片支持寬電壓(2.4~5 V),STM32H743的標準工作電壓為3.3 V,可直供給放大電路,因此將MAX4466EXK-T作為麥克風單元前置放大電路中的放大芯片。圖2所示為麥克風單元及前置放大電路。
圖2 麥克風單元及前置放大電路
(2)麥克風陣列設計
麥克風陣列中,最簡單的結(jié)構(gòu)是麥克風線性陣列,即麥克風單元線性排列。這種結(jié)構(gòu)計算量最少,但僅能定位半個平面,因此本設計選用十字型分布[7]方法,為線性陣列加上2個輔助定位的麥克風單元。此設計可以在保留普通線性麥克風陣列計算量相對較少的條件下,提高線性麥克風陣列的定位角度,如二維平面360°定位角度。十字型分布的麥克風陣列中,3個麥克風單元構(gòu)成線性陣列,用于聲源定位,前后2個麥克風單元輔助定位、比較功率譜、判斷聲音處于線性陣列的前方或后方。麥克風陣列設計時,考慮到麥克風單元的間距太小會導致耦合度增加,且噪聲對麥克風陣列的影響增大,從而影響聲音定位的精確性;但麥克風單元的間距也不能過大,陣列設計中通常選擇麥克風單元的距離小于接收聲波的半個波長。一般人正常說話的頻率范圍為100~1 200 Hz,而聲速一般為340 m/s,因此間距d<14.17 cm。同時考慮麥克風單元體積的限制,故將麥克風陣列中麥克風單元的間距定為12 cm。麥克風陣列分布示意如圖3所示。
圖3 麥克風陣列分布示意圖
(3)MCU最小系統(tǒng)
該研究中的聲音定位系統(tǒng)需要充分考慮MCU的功耗、性能、拓展性和實時性等,所以選擇STM32H743VI完成A/D轉(zhuǎn)換、信號處理、聲音源定位、信息傳輸?shù)热蝿铡TM32H743VI核心板結(jié)構(gòu)如圖4所示。
圖4 STM32H743VI核心板結(jié)構(gòu)
當聲音信號自遠場發(fā)散,在有背景噪音的情況下被2個傳感器MIC1和MIC2分別檢測時,可以對其進行數(shù)學建模:
式中:s1(t)為聲音信號;n1(t)、n2(t)均為隨機噪聲;α表示信號到達2個MIC前后的衰減比。只要估算出MIC1和MIC2接收到信號的時間之差D,就可以通過D計算信號相對于2個傳感器間的位置。
聲音信號定位中較為常用的估計時間差的算法為廣義互相關(GCC)算法。真實環(huán)境下,D和α是緩慢變化量。得到信號數(shù)學模型后,計算信號x1(t)、x2(t)的廣義互相關函數(shù):
式中,E表示數(shù)學期望,互相關的極大值出現(xiàn)在雙麥時間差的位置上。將式(1)和式(2)帶入式(3),信號s1(t)、n1(t)、n2(t)獨立,展開得到式(4):
由互相關函數(shù)性質(zhì)可知,τ=D時Rx1x2(τ)取得最大值。求出互相關函數(shù)波峰對應的τ值,記為τmax,由此得到2個麥克風之間信號到達的時間差D。
當聲音信號自遠場發(fā)散,在有背景噪音的情況下被2個傳感器MIC1和MIC2分別檢測時,測量該語音信號到達方向的模型如圖5所示,最少需要2個麥克風組成線性陣列。
圖5 遠場原理示意圖
圖5中,A點表示遠場的單個聲源,由于聲音發(fā)散自遠場,到達麥克風時聲波可以近似看做平行入射,帶有箭頭的線表示聲音信號,a為2個麥克風之間的距離,d為聲音到達2個麥克風之間的距離差,θ表示聲信號的入射角度,根據(jù)幾何關系得到式(5):
由于a已知,若MIC1和MIC2之間的時間差為τ,該環(huán)境下聲速為c,則能確定到達方向θ,見式(6):
聲音定位系統(tǒng)軟件流程如圖6所示。上電后,軟件首先進行ADC、DMA和定時器的初始化,之后進行指定次數(shù)的ADC采樣以及DMA傳輸,達到指定次數(shù)后,對所有信號做FFT變換,然后兩兩計算互譜密度,最后根據(jù)條件采用TDOA算法進行距離與角度的計算。
圖6 軟件流程
將麥克風單元與STM32H743核心板連接后采樣,通過A/D轉(zhuǎn)換器和DMA將得到的數(shù)據(jù)通過串口發(fā)送到上位機,借助串口助手打印。聲源定位距離和角度測試結(jié)果見表1所列。
表1 聲源定位測試
本文主要介紹了使用STM37H7及麥克風陣列的聲源定位系統(tǒng)的構(gòu)成,經(jīng)測試,可以在STM32平臺上完成以往基于傳統(tǒng)PC平臺的聲源定位任務,并獲得較好的結(jié)果。同時該方案還可以作為一種在室內(nèi)實現(xiàn)高精度指向與定位的方案,為實現(xiàn)聲源定位系統(tǒng)提供參考。