李曉陽,李世豪,范天一,王富達
(南京航空航天大學金城學院信息工程學院,江蘇 南京 211156)
隨著時代的進步,在現(xiàn)實生活中很多東西是不可以隨意拆卸的,或者拆卸的難度很大要耗費很大成本。例如:汽車、家電、航空航天等聲音,尤其是噪聲和異響,它往往意味著產品質量的問題,有故障,存在風險隱患,而我們要解決這些質量、故障、事故等問題。通過噪聲源定位技術,確定產生這些問題的位置。
現(xiàn)代工業(yè)制造中我們發(fā)現(xiàn),絕大多數(shù)的機械設備在正常工作狀態(tài)下,會發(fā)出平穩(wěn)而有規(guī)律的噪聲,而當設備老化或者發(fā)生其他故障時,則會產生明顯異于平常的工作噪聲,這就為“以設備運行聲音判斷設備健康狀態(tài)”提供了有利的條件。聲音信號包含豐富的信息量,在很多視覺、觸覺、嗅覺不適用的場景下,具有獨特優(yōu)勢。同時,聲音信號具備非接觸性,可有效避免振動信號數(shù)據(jù)采集的困難。在國防現(xiàn)代化方面,聲源定位技術可以用來測量在地面作戰(zhàn)的炮兵陣地;可以用來找到隱藏在某地的狙擊手位置,還可用于測量彈藥試驗火炮的著落點和空中炸點[1]。隨著現(xiàn)在隱身技術的迅速發(fā)展,原本應用在軍事坦克和直升機上的傳統(tǒng)檢測技術已經喪失作用,在這種情況下,被動聲源探測技術將發(fā)揮巨大的優(yōu)勢。
本系統(tǒng)中涉及的算法包含F(xiàn)FT 算法及TDOA 算法,關于上述兩種算法的基本原理如下所示。
因為聲音是一個隨時間變化的連續(xù)函數(shù),任意一段間隔內都有無窮多個值,而無窮多的數(shù)據(jù)是沒辦法存儲在計算機中的。想要存儲,我們就需要將它離散化變成離散序列,具體的方法就是采樣,使用固定的間隔對函數(shù)進行求值。見圖1。
圖1 采樣后的結果
通過采樣,我們將一個無盡序列變成了一個有限序列,其中每一個值叫做樣本,這樣就可以方便在計算機中存儲了。采樣的關鍵參數(shù)有兩個,分別是采樣頻率和采樣深度[2]。采樣頻率是指每秒鐘采樣多少次,很明顯,采樣頻率越高,樣本越多,數(shù)據(jù)量越大,同時也更接近原始的聲音。采樣深度是指用多少比特去存儲采樣得到的值,使用的比特越多,還原得到的聲音越細膩,和圖片的色彩深度是一個道理。見圖2、圖3。
圖2 三段波形疊加之前的結果
圖3 三段波形疊加后的結果
通過FFT 算法,我們可以將一個復合波形拆解為構成它的簡單波形,即將結果2 轉換成結果1。隨聲音跳動的每個柱子,對應的是一個頻率或一組頻率,而柱子的高度則是頻率的分量大小,這兩個信息傅里葉變換都能給到。將想要得到的某一組或一段頻率提取并識別,即可做到濾波降噪[3]。
基于TDOA 的聲源定位算法具有運算量小、算法簡單易實現(xiàn)、定位精度較高、硬件成本低的特點,使得該算法在實際中的應用非常廣泛,而且可以實現(xiàn)實時定位。根據(jù)系統(tǒng)設計需求聲源設為(x,y),為第i 個聲音的接收模塊坐標為(xi,yi)。
因此發(fā)射聲音與拾音器之間滿足式(1)
然后可知Riy 代表發(fā)射聲音電路的第i 個接收模塊的距離差,則雙曲線定位中發(fā)射聲音(x,y)和拾音器(xi,yi)滿足式(2)
采用相位檢波的方法,將兩路正弦信號之間的相位差轉換為電壓信號,采用ADC 測量電壓信號就可以反向計算得到相位差,這樣最終就可以轉化為方程求解問題實現(xiàn)聲源定位[4]。
系統(tǒng)采用麥克風陣列與樹莓派相結合,樹莓派處理麥克風陣列的數(shù)據(jù),在樹莓派處理完數(shù)據(jù)以后傳入Arduino,采用串口通信的方式將麥克風陣列獲取到的數(shù)據(jù)傳入到Arduino,通過Arduino 進行云臺控制,實現(xiàn)激光定位,此外,為彌補市場上大部分聲音定位技術的不足,如使用雷達搜索目標面臨的電子干擾,仿人雙耳聲源定位在多干擾的場景下會面臨定位的準確的問題。本系統(tǒng)采用了FFT 算法,TDOA 算法,使本系統(tǒng)可以達到一個精準定位的程度[5],在用戶啟動樹莓派并移動到指定區(qū)域以后,當監(jiān)測數(shù)據(jù)高于標準值時,系統(tǒng)將啟動激光模塊進行定位,使用者也可以更據(jù)具體環(huán)境需求,對標準值。
處理器:采用Raspberry Pi 基金會生產的樹莓派見圖4。樹莓派是Raspberry Pi 基金會開發(fā)的一款微型電腦,樹莓派4B 在處理器速度,多媒體性能,內存和連接方面提供了突破性的增長,同時保留了向后兼容性和類似的功耗,且容易對其進行編程處理,基本可以滿足本次設計要求,后期調試工作也更加方便。
圖4 Raspberry Pi 基金會生產的樹莓派
麥克風陣列(見圖5):麥克風陣列模塊使用六個麥克風模塊組裝完成,據(jù)有可以定位聲源方向的功能采用電容式駐極體話筒(咪頭),該元件能將一般的聲音信號轉化為電信號。價格便宜,便于設計,之后再自行設計濾波與放大電路,一起構成聲音信號接收模塊。
圖5 麥克風陣列
裝置顯示電路采用0.96 寸OLED 屏幕(見圖6),可設計ui 實時顯示B 點位置和上述直線距離與夾角。
圖6 OLED 屏幕
聲源指示控制裝置:采用二維云臺承載激光筆(見圖7)。云臺不僅可水平轉向,還可以豎直轉動,并且云臺扭矩大,轉動力度較MG945 大。
圖7 源指示控制裝置
(1) 聲音檢測聲源檢測模塊依麥克風陣列,基于GPIO 框架編寫麥克風陣列的使用程序,判斷當前是否有聲音發(fā)出。
(2) 聲音預處理 當麥克風陣列接收到聲源以后,樹莓派使用FFT 執(zhí)行預處理算法對聲音進行降噪處理,去除無用的噪聲,便于后續(xù)對聲源進行準確的定位。
(3) 云臺驅動 云臺驅動模塊依托Arduino,基于GPIO 框架編寫二維云臺硬件的使用程序,使之能夠根據(jù)樹莓派的輸出,驅動云臺轉動合適角度,從而將激光筆指向聲源發(fā)出的位置。
采用計算機聲音系統(tǒng)識別,通過麥克風陣列,應用FFT 算法進行降噪處理,通過樹莓派上的聲音識別系統(tǒng),檢測當前的聲源進行定位,最終用云臺舵機定位聲源發(fā)出的位置,從而實現(xiàn)聲源定位的目的。第一步,將待聲源放于置物板上,麥克風陣列檢測到聲源,聲源定位系統(tǒng)進入工作狀態(tài)。第二步,云臺舵機開始轉動,轉動角度由檢測到的聲源確定,可以旋轉0°、90°、180°。待云臺舵機轉動到聲源發(fā)出位置時激光筆開啟。第三步云臺舵機完成一次工作,等待下一次工作周期的到來,再一次進行聲源定位操作。第四步,樹莓派通過TDOA 算法對聲源進行定位處理,將處理好的數(shù)據(jù)傳遞給Arduino,Arduino 將通過外接0.96 寸OLED 屏幕,從而可以在顯示屏上直接顯示,使用戶能夠方便、快捷地查閱信息。
由表1 結果分析可知:
表1 該裝置在1 m~3 m 范圍內測試結果距離分析
(1) 雜音環(huán)境下測試與有較低響度的聲音麥克風接收信號強烈,精度較高。
(2) 1 m 位置時紅外線偏離圓心2°以內。2 m位置時紅外線偏離圓1°~3°。3 m 位置時紅外線偏離圓點5°左右。
本系統(tǒng)設計了一種基于Raspberry Pi 開發(fā)板的聲音定位系統(tǒng),利用麥克風陣列能夠實現(xiàn)對環(huán)境聲音進行精確的監(jiān)測,一旦發(fā)生異響可快速找到存在故障的地方,并對故障位置進行快速有效的處理,研究結果大大降低汽車的風險隱患,同時在家電、航空航天等領域存在的安全隱患有很大的前景[6],然而,由于實驗水平有限,本系統(tǒng)的測試結果存在一定程度誤差,測試結果容易受到外界環(huán)境干擾,但整體應用效果較為顯著,在后續(xù)的研究中我們將會從算法及元件選擇方面進一步改進,從而獲得更為準確的測試結果以指導實踐。