駱潤卿,張雙彪,陳 晨,佘怡欣,游凱卉
(北京信息科技大學 信息與通信工程學院,北京 100101)
智能寵物陪伴機器人是一類具有智能喂食、寵物監護、與寵物互動等功能的機器人,其設計目的是幫助外出的主人陪伴、監護家中寵物。智能寵物陪伴機器人大多配備有攝像頭,便于主人遠程查看寵物動態。而寵物在家中的活動范圍較大,可能出現寵物不在攝像頭范圍內的情況,此時主人便無法通過攝像頭遠程查看寵物動態。解決上述問題的方案之一是:機器人首先定位家中寵物,然后控制移動機構到達寵物附近,使得攝像頭范圍內有寵物。而目前已有的智能寵物陪伴機器人缺少對寵物進行室內定位的技術路線或功能模塊。本文提出利用基于麥克風陣列的聲源定位技術路線設計解決機器人對寵物室內定位的問題。單個麥克風易受噪聲干擾,為了增強聲音信號的采集、定位等,多數研究采用麥克風陣列形式,即多個麥克風以不同幾何結構排列組合而成的陣列。較之單個麥克風,麥克風陣列在減少環境噪聲干擾等方面具有明顯優勢。基于麥克風陣列的聲源定位技術利用麥克風陣列采集聲音信號,運用數字信號處理技術處理所得樣本,采取合適聲源定位算法對處理后的數據進行計算得出位置信息、聲源相對位置坐標及角度等[1]。基于麥克風陣列的聲源定位算法主要有基于可控波束形成的聲源定位算法、基于高分辨率頻譜估計的聲源定位算法及基于到達時間差的聲源定位算法,其中基于到達時間差(Time Difference Of Arrival, TDOA)的聲源定位算法相對來說實時性好、計算量小,具有較高的實用性[2]。基于TDOA 的定位算法通過計算所收集的聲源信號到達麥克風陣列的時間差進行時延估計,再通過構成麥克風陣列的幾何形狀建立聲源定位模型,最后通過算法求解相對位置從而進行定位估計。已有將基于TDOA 的聲源定位算法應用于室內實時定位系統中的研究[3]。本文將介紹寵物音頻信號的預處理方法,以及基于麥克風陣列對寵物聲源進行室內定位的聲源定位算法。
采集到的寵物聲音信號會由于寵物的發聲器官本身和用于采集音頻信號的設備產生混疊、高頻和高次諧波失真等,被降低音頻質量。在對聲音信號進行預加重、分幀、加窗、端點檢測等預處理操作后,得到的信號更均勻、平滑,能提取效果更好的信號參數,更加有效地進行寵物聲音信號的分析與處理,提高音頻信號的質量和處理音頻信號的效率。
通常來說,語音信號的頻率范圍為300 ~3 400 Hz,貓的叫聲的頻率范圍為760 ~1 500 Hz,而狗的叫聲的頻率范圍為452 ~1 800 Hz。因為貓狗聲音的頻率范圍均在語音信號的頻率范圍內,所以對寵物發出的聲音進行預加重處理可以采用語音信號的處理方法。
1.1.1 預加重處理目的
由于語音信號s(n)的平均功率譜受聲門激勵和口鼻輻射的影響,大約在200 ~500 Hz 范圍內,以6 dB/倍頻程衰減,并且隨著頻率的升高,對應的分量也變得更少,因此要在對語音信號s(n)進行分析前對其高頻部分進行改進,使其始終處于由低頻率至高頻率的全頻段,在同樣的信噪比條件下可以方便地進行頻譜分析和聲道參數分析。
1.1.2 預加重處理方法
寵物發聲與語音信號類似,口鼻輻射在高頻段較為明顯,而對低頻段的影響較小。因為口鼻輻射所引起的能量損耗與輻射阻抗的實部成正比,所以輻射模型R(z)為一階類高通濾波的形式,是一階后向差分,表達式為:
為使聲門脈沖的影響減到最小,保留聲道部分,便于后續進行聲道參數的分析,結合輻射模型,在取樣后插入一個一階高通濾波器。
預加重處理采用一階FIR 高通數字濾波器來實現[4],其輸出和輸入的語音信號s(n)的關系式為:
式中,α為預加重系數,通常取0.9 ~1.0,音頻信號預加重處理中α取0.937 5。一階FIR 高通數字濾波器幅頻特性、相頻特性曲線如圖1 所示。

圖1 一階FIR 高通數字濾波器的幅頻、相頻特性
音頻信號是時變的,但是在很短的時間內(一般認為在10 ~30 ms 內),其特性基本上沒有改變,即相對穩定,因此可將其看作是一個準穩態過程,即聲音信號的短時平穩。短時分析技術貫穿語音分析的整個過程,對音頻信號進行分割,每個片段被稱作“幀”,而幀長度通常是10 ~30 ms,對每幀的特性參數進行分析,從而在整體上分析出每個特征參數的時間序列。
加窗的目的是對抽樣n附近的音頻波形進行加強,同時削弱其他波形。使用最多的3 種窗函數分別為矩形窗、漢明窗(Hamming)和漢寧窗(Hanning),由于漢明窗相對另兩種窗函數能更好地保留原始音頻信號的頻譜特性,所以在短時分幀后,寵物音頻信號利用漢明窗口對聲音信號進行處理。
漢明窗定義公式為:
端點檢測的目的主要是實現對寵物語音信號的起始和終止點的自動檢測。寵物音頻信號的端點檢測采用了雙門限比較方法[5]。利用雙門限比較方法,將短時能量E和短時平均過零率Z相結合,提高了檢測精度,有效地縮短了系統的運行周期,排除了靜音部分的噪聲,提高了音頻信號的處理性能。
1.4.1 短時能量
短時能量序列反映了聲波的振幅和能量隨時間而逐漸改變的一種規律,表達式為:
音頻信號的短時平均能量如圖2 所示。

圖2 音頻信號短時平均能量
1.4.2 過零率
短時過零率表示在一幀語音信號中,其波形穿過零點的次數,可以在一定程度上反映頻率的高低,適用于音頻信號噪聲較高的情況。音頻信號的短時過零率如圖3 所示。

圖3 音頻信號短時過零率
基于TDOA 的聲源定位算法通常分為兩步,首先利用時延估計算法求出聲源達到兩麥克風的時延值,然后利用位置解算算法根據時延值對聲源進行定位。
在空間中僅有一個聲源s(t)(位于S位置),將兩個麥克風m1、m2所在位置記為M1、M2。TDOA 時延計算模型如圖4 所示。

圖4 TDOA 計算模型
所接收信號記為xi(t),τi為聲源到達麥克風的延遲時間,ni(t)為加性噪聲,則有:
式中:
由此可以算出聲源信號到達兩個麥克風的TDOA 為:
時延估計算法采用廣義相關函數(Generalized Cross-Correlation Function, GCCF),為了減少噪聲和混響使用,在互功率譜域使用加權函數加權,然后經過IFFT 運算后找到峰值估計時延[6]。
兩個麥克風之間的到達時間(Time Of Arrival, TOA)可以等效為能夠使麥克風輸出的濾波信號之間的互相關函數最大的時間間隔,表達式為:
廣義互相關函數(Generalized Cross Correlation, GCC)計算公式為:
式中,ψ12為頻域加權函數,常見的有互相關函數(Cross-Correlation, CC)、平滑相關函數、PHAT(PHAse Transformation)加權等。此處將CC 與PHAT 進行對比。
廣義互相關函數有多種不同的變形,其中廣義互相關- 相位變換(Generalized Cross Correlation PHAse Transformation, GCC-PHAT)方法應用最為廣泛[7-10]。
在不同聲場下的聲源信號應采用不同的處理模型,需要根據實際來確定選擇近場或是遠場模型,從而實現較為精準的定位。當聲源與麥克風之間的距離r符合式(13)的條件時,則為遠場模型。
式中,λmin為聲源最高頻率語音的波長,即聲源的最小波長[2]。遠場模型如圖5 所示。

圖5 遠場模型
由于距離較遠,可以將聲源信號傳播視為平面波,兩個麥克風的距離為d,聲源傳播到兩個陣元的方位角均為θR(z),以m1作為參考陣元,使用簡單的幾何知識,可得:

圖6 近場模型
用MATLAB 對移動聲源的定位進行仿真,并對比在不同信噪比條件下CC 算法和GCC-PHAT 算法的表現。
3.1.1 聲源信號
使用audioread()函數讀取一段音頻作為寵物聲源,采樣頻率fs=48 kHz,得到聲源信號。聲源信號時域波形如圖7所示。

圖7 聲源信號時域波形
3.1.2 麥克風陣列
采用由水平方向和垂直方向共9 個麥克風組成的麥克風陣列對移動的聲源定位。麥克風在直角坐標系中的位置坐標見表1 所列。麥克風在空間中的分布如圖8 所示。

表1 麥克風坐標

圖8 麥克風位置分布
3.2.1 比較GCC-PHAT 算法和CC 算法
用MATLAB 對二麥克風模型下的固定聲源定位進行仿真,并對比在不同信噪比條件下CC 算法和GCC-PHAT 算法的表現。
(1)建立模型
設置聲源位置s(sx,sy)、麥克風位置M1(Mx1,My1)、M2(Mx2,My2),并計算s(sx,sy)與M1(Mx1,My1)間的距離distance1,以及s(sx,sy)與M2(Mx2,My2)間的距離distance2。計算∠sM1M2并畫出圖像,如圖9 所示。

圖9 聲源與麥克風坐標
這里設置s(10, 10)、M1(0, 0)、M2(2, 0)。計算得出distance1=14.142 135 623 730 951 m,distance2=12.806 248 474 865 697 m,angle=45°。
(2)模擬聲源
加載MATLAB 自帶的chirp(掃頻余弦信號)來擬合寵物的聲音,采樣頻率fs=48 kHz。為模擬真實場景,用delayseq()函數給聲源設置時延,用awgn()函數給聲源添加噪聲。原始聲源信號的時域波形如圖10 所示。

圖10 聲源信號波形
(3)聲源定位
設置兩組信噪比(SNR)值。第一組為110 dB,即大信噪比的情況下,分別用GCC-PHAT 算法和CC 算法計算聲源的到達角(Angle Of Arrival, AOA),與真實值angle=45°對比,比較兩種算法定位的準確度;再畫出GCC 函數和CC 函數的圖像,根據互相關函數的特點,在M1(0, 0)處峰值越突出,效果越好,以此來比較兩種算法實現聲源定位的效果。第二組設置SNR=1 dB,即小信噪比情況下,仿真步驟同第一組。仿真結果如下:
① 高信噪比情況
添加的高斯白噪聲信號波形如圖11 所示。

圖11 噪聲信號波形(SNR=110 dB)
GCC-PHAT 算法計算得出AOA=44.900 5°,CC 算法計算得出AOA=44.612 3°。GCC-PHAT 算法函數圖像如圖12所示。CC 算法函數圖像如圖13 所示。

圖12 GCC-PHAT 函數圖像(SNR=110 dB)

圖13 CC 函數圖像(SNR=110 dB)
從AOA 的計算結果可以看出,GCC-PHAT 算法比CC 算法準確。由函數圖像可以看出,在大信噪比情況下,GCC-PHAT的函數圖像在M1(0, 0)尖峰突出,其他位置函數值為0;而CC 的函數圖像雖在麥克風位置尖峰突出,但在其他位置處仍有函數值。故在大信噪比情況下,GCC-PHAT 算法優于CC 算法。
② 低信噪比情況
用delayseq()函數給聲源設置時延,用awgn()函數給聲源信號添加噪聲。繪制出原始聲源信號波形、含噪聲信號波形、延遲含噪聲信號的波形,如圖14 所示。

圖14 聲源信號(上)、含噪信號(中)、延遲含噪信號(下)(SNR=1 dB)
GCC-PHAT 算法計算得出AOA=[(1.800 0e+02)-(1.183 6e+02i)]°,CC 算法計算得出AOA=44.900 5°。
GCC-PHAT 算法的函數圖像如圖15 所示。CC 算法的函數圖像如圖16 所示。

圖15 GCC-PHAT 函數圖像(SNR=1 dB)

圖16 CC 函數圖像(SNR=1 dB)
從AOA 的計算結果看出,CC 算法比GCC-PHAT 算法更準確。從函數圖像可以看出,在小信噪比情況下,GCC-PHAT 函數在非M1(0, 0) 處的函數值比CC 函數更大,CC 函數在M1(0, 0)的峰值比GCC-PHAT 函數突出。故在小信噪比情況下,GCC-PHAT 的聲源定位效果比CC 算法差。
綜合兩組仿真結果可知,GCC-PHAT 方法本身具有一定的抗噪聲和抗混響能力,但是在信噪比降低和混響增強時,該算法性能急劇下降。麥克風的信噪比一般不低于70 dB。根據理論分析和仿真實驗的結果,聲源定位算法選擇GCCPHAT 算法效果更佳。
3.2.2 利用GCC-PHAT 算法對移動聲源定位
采用GCC-PHAT 算法對移動聲源進行定位,并繪制定位過程的俯視圖和立體圖。俯視圖如圖17 所示。

圖17 對移動聲源定位的俯視圖
如圖18 所示,立體圖中,XOZ平面內有小五角星共9 個,代表麥克風位置,由于麥克風之間距離較近有重疊,立體圖中只能看到5 個小五角星。XOY平面內的圓形是移動的聲源,粗實線是根據聲源定位算法計算出的聲源與麥克風陣列的距離和AOA 畫出的。

圖18 對移動聲源定位的立體圖
設在t時刻,移動聲源的實際坐標為(xi,yi),聲源定位算法估計出的聲源坐標為, 誤 差,將每個時刻t和對應的θ(t)描點連線,得到的圖像如圖19 所示。

圖19 時間與定位誤差的關系
由圖19 的曲線可以看出:0 ~0.3 s 時定位誤差較大;0.3 s 以后,定位誤差在5 m 以內變化。而智能寵物陪伴機器人配置的攝像頭可視范圍一般超過10 m,因此可以采用麥克風陣列、GCC-PHAT 算法對室內的寵物進行聲源定位,定位后機器人控制移動機構運動到寵物附近,使得攝像頭范圍內有寵物。
本文針對智能寵物陪伴機器人對寵物的室內定位問題,提出了寵物聲源定位算法設計。對采集的音頻信號進行預加重、分幀、加窗、端點檢測預處理,改善音頻信號的質量,提高處理音頻信號的效率。然后利用基于到達時間差的聲源定位算法,通過時延估計,得出聲源的位置。對TDOA 聲源定位算法當中的時延估計算法和位置解算算法分別建立了物理模型,并在此基礎上進行推導計算。最后使用MATLAB 對GCC-PHAT 算法和CC 算法分別在大信噪比和小信噪比情況下的聲源定位效果進行對比,得出GCCPHAT 方法在大信噪比條件下具有較好的聲源定位效果,但是在信噪比降低時該算法性能急劇下降。綜合考慮實際情況和仿真結果,選擇GCC-PHAT 算法進行聲源定位,并將GCC-PHAT 算法應用于采用麥克風陣列對移動聲源實時定位的場景,通過MATLAB 仿真得到該場景下的定位效果圖并計算出定位誤差。結果顯示,定位誤差在5 m 以內,在機器人攝像頭可視距離范圍,可以滿足寵物室內定位要求。