王曉輝,徐文淵,吳燕靜
(浙江大學(xué) 電氣工程學(xué)院,浙江 杭州310027)
隨著普適計算、物聯(lián)網(wǎng)概念的深入,智能手機(jī)傳感器應(yīng)用得到越來越多的關(guān)注,研究的范圍覆蓋諸多領(lǐng)域,如,行為感知、情景識別、室內(nèi)定位和環(huán)境監(jiān)測等[1]。如何綜合這些傳感器的數(shù)據(jù),拓寬手機(jī)的使用場景,仍然是一個開放的問題。風(fēng)速風(fēng)向測量廣泛應(yīng)用于氣象、海洋、機(jī)場等多領(lǐng)域,目前普遍使用超聲波測風(fēng)儀測量風(fēng)速風(fēng)向[2]。
手機(jī)是人出行必備設(shè)備,完成的功能也越來越多。當(dāng)前已經(jīng)存在利用手機(jī)測量風(fēng)速的應(yīng)用,例如:Wind Meter[3]可以根據(jù)麥克風(fēng)輸出聲音信號的特點,測量氣流吹向麥克風(fēng)的速度。借助于外置的配件,Vaavud[4]可以測算出當(dāng)前的實時風(fēng)速。但是對于風(fēng)向信息的測量還沒有得到應(yīng)有的重視。本文提出了基于智能手機(jī)的麥克風(fēng)和姿態(tài)傳感器測量風(fēng)向的方法。首先,通過模型分析和實驗驗證,建立了風(fēng)吹向麥克風(fēng)產(chǎn)生的風(fēng)噪聲和風(fēng)的入射角度的關(guān)系;然后設(shè)計算法從風(fēng)噪聲數(shù)據(jù)中識別出風(fēng)向;最后在Matlab 上完成算法仿真和性能分析。
智能手機(jī)上普遍采用的聲音傳感器是MEMS 麥克風(fēng)。MEMS 麥克風(fēng)內(nèi)傳感部分(transducer)的實質(zhì)是一個可變電容器,其結(jié)構(gòu)如圖1 所示。傳感原理利用了固定板(backplate)和可動板(diaphragm)聯(lián)接形成的電容的變化。氣流通過背板的音孔,振動膜板,改變電容兩極之間的氣隙,引起電容的變化。
姿態(tài)傳感器通過三個角度和一個時間戳(timestamp)描述手機(jī)各個時刻的姿態(tài),這三個角度分別為方位(azimuth)角,俯仰(pitch)角和翻滾(roll)角。通過這三個角度,可以得到手機(jī)相對于地球參考系的姿態(tài)。其中,三個角度的定義如下:
圖1 MEMS 麥克風(fēng)傳感部分構(gòu)造和手機(jī)參考系Fig 1 Structure of sensing part of MEMS microphone and reference system of smartphone
1)方位(azimuth)角,手機(jī)圍繞z 軸的轉(zhuǎn)動度數(shù)。這是地磁北極和設(shè)備的y 軸之間的夾角。例如:如果手機(jī)的y軸與地磁北極對準(zhǔn),此值是0°,如果y 軸指向南,這個值是180°。同樣,當(dāng)y 軸指向東這個值是90°,當(dāng)它指向西這個值是270°。
2)俯仰(pitch)角,手機(jī)圍繞x 軸的轉(zhuǎn)動度數(shù)。當(dāng)手機(jī)z 軸正向朝向y 軸正方向轉(zhuǎn)動時,俯仰角為正,當(dāng)z 軸正向朝著y 軸負(fù)方向轉(zhuǎn)動時,此值為負(fù)。俯仰角的范圍為180°~180°。
3)翻滾(roll)角,手機(jī)圍繞y 軸的轉(zhuǎn)動度數(shù)。當(dāng)z 軸正向朝向x 軸正向轉(zhuǎn)動時,這個值是正的,當(dāng)z 軸正向朝向x 軸負(fù)方向轉(zhuǎn)動時,它是負(fù)值。翻滾角的范圍為90°~90°[5]。
本文通過方位(azimuth)角推算手機(jī)的指向,并依此確定風(fēng)源所在方向。
聲波并不是唯一能使麥克風(fēng)產(chǎn)生輸出的振動源[6]。由麥克風(fēng)的傳感原理可知,振動引起的麥克風(fēng)內(nèi)兩極板間間隙的改變是產(chǎn)生輸出信號的原因。當(dāng)風(fēng)吹向麥克風(fēng)時,氣流同樣可以引起可動膜板的振動,進(jìn)而產(chǎn)生輸出信號。本文中稱這種由氣流直接引起的輸出信號為風(fēng)噪聲。
氣流進(jìn)入麥克風(fēng)口的角度(入射角如圖2)影響風(fēng)噪聲的特性,通過實驗發(fā)現(xiàn)了風(fēng)噪聲和入射角的關(guān)系。
圖2 氣流入射角示意圖Fig 2 Illustration of airflow incident angles
1)風(fēng)噪聲的強(qiáng)度隨著入射角的變化而變化,且最大值所對應(yīng)的入射角不固定。當(dāng)入射角為0°,即風(fēng)正向吹向麥克風(fēng)時,產(chǎn)生的噪聲強(qiáng)度并不一定總是最大。在風(fēng)速較小條件下,風(fēng)產(chǎn)生的噪聲在入射角為0°時達(dá)到最大。但當(dāng)風(fēng)速較大時,0°傾角產(chǎn)生的噪聲并不是最大。這個結(jié)論表明,通過噪聲最大值確定風(fēng)向的辦法不可行。
2)風(fēng)噪聲的波形呈現(xiàn)對稱性,且對稱軸的位置對應(yīng)于風(fēng)源。在風(fēng)速不變情況下,當(dāng)入射角的度數(shù)相同時,風(fēng)從左側(cè)和從右側(cè)吹向麥克風(fēng)產(chǎn)生的噪聲相似。當(dāng)風(fēng)從一側(cè)均勻變化到另一側(cè)吹向麥克風(fēng)口時,麥克風(fēng)產(chǎn)生的噪聲的波形呈現(xiàn)對稱的特性,稱這個現(xiàn)象為風(fēng)噪聲的對稱性,如圖3 描述了空調(diào)作為風(fēng)源時,三種不同風(fēng)速下,風(fēng)噪聲在各個入射角下的波形圖和頻譜圖(spectrogram)。觀察波形,發(fā)現(xiàn)對稱軸的位置對應(yīng)于風(fēng)源所在的方向角。這個結(jié)論表明,可以通過定位對稱軸的角度,計算出風(fēng)源的方向。
圖3 風(fēng)噪聲的時域波形和頻譜圖Fig 3 Time domain waveforms and spectrograms of wind noise
為了實現(xiàn)手機(jī)測量風(fēng)向,設(shè)計了Wind Compass 系統(tǒng)。圖4 描述了Wind Compass 的工作流程。
開始測量后,一邊轉(zhuǎn)動手機(jī),一邊記錄數(shù)據(jù)。手機(jī)將會同時記錄環(huán)境中的聲音(包括風(fēng)噪聲和其他聲音)和手機(jī)的姿態(tài)數(shù)據(jù)。數(shù)據(jù)預(yù)處理包括兩個步驟:提取風(fēng)噪聲特征信息和恢復(fù)風(fēng)噪聲對稱性。由于麥克風(fēng)可能記錄風(fēng)噪聲以外的聲音,而對稱性分析的是風(fēng)噪聲和入射角的關(guān)系,所以,需要將代表風(fēng)噪聲的特征量提取出來。其次,預(yù)處理將時間均勻變化的聲音信號采樣成為入射角度均勻變化的聲音信號。接著,根據(jù)本文提出基于循環(huán)卷積的循環(huán)自卷積(circular auto-convolution,CAC)算法,計算出風(fēng)噪聲信號的對稱軸。最后,通過對稱軸的時間戳,確定手機(jī)在該時刻的方向角,計算出風(fēng)向。
圖4 Wind Compass 的工作流程Fig 4 Workflow of Wind Compass
風(fēng)噪聲信號的對稱軸對應(yīng)于風(fēng)向,因此,測量風(fēng)向的核心是定位出風(fēng)噪聲信號的對稱軸。由于噪聲信號波形的多樣性和其它噪聲的干擾,通過個別點確定對稱軸位置的誤差會很大。因此,設(shè)計了CAC 算法。最基本的思想是,當(dāng)兩個相似的信號完全重疊時,卷積的值最大。
卷積是通過兩個函數(shù)f 和g 生成第三個函數(shù)的一種數(shù)學(xué)算子,表征函數(shù)f 與經(jīng)過翻轉(zhuǎn)和平移的g 的重疊部分的面積[7]。對于定義在離散域的函數(shù),卷積定義為
自卷積即定義中的f 和g 為同一個函數(shù),循環(huán)卷積指f和g 中有一個函數(shù)是周期性延拓的。
卷積的大小量化了平移過程中,原始信號和翻轉(zhuǎn)信號重疊部分面積的大小。重疊部分面積越大,卷積的值越大。循環(huán)卷積是為了確保平移過程中重疊的點數(shù)始終相同。自卷積是為了得到信號本身兩部分間的相似程度。一個給定信號的循環(huán)自卷積值的大小,只和信號本身的相似程度有關(guān)。如果信號是近似對稱的,無論對稱軸位于信號中哪個位置的,信號本身的波形如何,那么,一定是兩個信號的對稱軸重合時重疊部分的面積最大,卷積的值最大。
圖5 列舉了3 組原始信號序列和相對應(yīng)的循環(huán)自卷積序列。選擇的3 組原始信號分別代表風(fēng)噪聲三種典型的波形。三種情況中,原始信號的對稱軸都位于N=60°的位置。原始信號的波形沒有包含完整一周(0° ~360°)的信息,且對稱軸不是在序列的中間位置。但三種情況下,CAC算法都成功定位出對稱軸的位置,并用虛線表示在原始信號中。
在Matlab 上實現(xiàn)CAC 算法,并用實驗中的聲音數(shù)據(jù)分析算法的有效性。圖6 描述了其中一個樣本的結(jié)果。圖6(a)描述了時域內(nèi)取絕對值后的聲音信號,圖6(b)是計算出來的卷積序列。圖6(a)中的橫軸,既是聲音信號的時間軸,也表示手機(jī)轉(zhuǎn)動的時間。手機(jī)勻速轉(zhuǎn)動下,風(fēng)的入射角度和時間線性相關(guān)。數(shù)據(jù)中,當(dāng)手機(jī)轉(zhuǎn)動到第8 s 時,麥克風(fēng)正指向風(fēng)源。圖6(b)的卷積序列中,最大值是序列中的第Xm個點,由粗實線標(biāo)出。根據(jù)算法推出聲音信號的對稱軸在Xa位置,用虛線表示,并在聲音信號中用實線標(biāo)出。觀察可知,標(biāo)記的對稱軸和風(fēng)源的位置重合。因此,算法有效地定位出了風(fēng)源的方向角。
圖5 利用CAC 算法定位對稱軸的示意圖Fig 5 Illustration of symmetry axis locating by CAC algorithm
圖6 利用CAC 定位聲音序列對稱軸實例Fig 6 Example of symmetry axis of sound sequence locating by CAC
測試了60 組實驗數(shù)據(jù),并統(tǒng)計了測量結(jié)果和誤差,如圖7 所示。60 組數(shù)據(jù)的平均誤差是3°,最大誤差是10°。
圖7 測量結(jié)果Fig 7 Results of measurement
本文提出了使用智能手機(jī)來測量風(fēng)向的方法Wind Compass。Wind Compass 利用手機(jī)的麥克風(fēng)和姿態(tài)感應(yīng)器分別記錄風(fēng)噪聲和方向數(shù)據(jù)。風(fēng)噪聲是指氣流振動麥克風(fēng)膜板產(chǎn)生的聲音信號。通過實驗,發(fā)現(xiàn)氣流在對稱入射角下產(chǎn)生的噪聲相似。入射角均勻變化下的風(fēng)噪聲波形具有對稱特性,對稱軸的角度對應(yīng)于風(fēng)向。本文首次提出通過定位噪聲序列中對稱軸確定風(fēng)向的方法。然后設(shè)計了基于卷積的CAC 算法定位序列的對稱軸。在Matlab 上完成算法仿真,并分析了實際的聲音數(shù)據(jù)。60 組數(shù)據(jù)的平均誤差是3°,最大誤差是10°。
[1] 李文洋.基于智能手機(jī)傳感器的行為識別算法研究[D].長春:吉林大學(xué),2014.
[2] 程啟明,汪明媚.風(fēng)力發(fā)電中風(fēng)速測量技術(shù)的發(fā)展[J].自動化儀表,2010,31(7):11-13.
[3] Goingapps.iphone windmeter[EB/OL].[2013—10—12].http:∥www.goingapps.com/pages/default.aspx.
[4] Vavuud.phone accessory[EB/OL].[2013—10—16].http:∥vaavud.com/.
[5] Google.Android API[EB/OL].[2014—09—18].http:∥developer.android.com/reference/android/hardware/SensorEvent.html.
[6] Staple B W,Schladt G A,Holmes M E.Wind noise and vibration noise reducing microphone:U S,5,288,955[P].1994—02—22.
[7] 維基百科.卷積[EB/OL].[2014—06—15].http:∥zh.wikipedia.org/wiki/%E5%8D%B7%E7%A7%AF.