張二亮,曹雪林,朱 松,付 康
(鄭州大學(xué) 機(jī)械與動(dòng)力工程學(xué)院, 鄭州 450001)
聲源定位是語(yǔ)音信號(hào)處理中的重要研究?jī)?nèi)容之一,被廣泛應(yīng)用到民用和軍事領(lǐng)域,如遠(yuǎn)程會(huì)議中的演講者定位、狙擊手位置檢測(cè)、設(shè)備異響檢測(cè)、監(jiān)視和噪聲源追蹤等[1]。這些應(yīng)用大部分是在低信噪比、強(qiáng)混響環(huán)境下進(jìn)行的,且要求實(shí)時(shí)、高精度定位。
為了解決混響環(huán)境下的聲源定位問(wèn)題,Barrios等[2]提出了基于相位變換加權(quán)指向響應(yīng)功率(SRP-PHAT)算法,其在低信噪比、強(qiáng)混響環(huán)境下具有較好的魯棒性。為了進(jìn)一步提高SRP-PHAT算法的定位性能,Ramamurthy等[3]引入PHAT-β加權(quán)函數(shù)。由于聲學(xué)定位算法需要對(duì)感興趣平面進(jìn)行電子遍歷搜索,因此,海量計(jì)算給SRP-PHAT算法的實(shí)際應(yīng)用帶來(lái)局限。目前存在兩類解決途徑,一類可歸為智能搜索,如Do等[4]提出了隨機(jī)區(qū)域收縮SRP-PHAT算法,有效提高了計(jì)算速度。Zhuo等[1]提出了改進(jìn)的離線數(shù)據(jù)庫(kù)來(lái)控制響應(yīng)能力和相變,基本思想是在定位前使用SRP-PHAT和密度峰值聚類來(lái)確定可能的聲源位置,然后進(jìn)行定位。Boora等[5]將SRP-PHAT與迭代網(wǎng)格搜索策略相結(jié)合,先在粗網(wǎng)格計(jì)算,然后迭代細(xì)化網(wǎng)格,直到完成聲源定位。Salvati等[6]先對(duì)所有區(qū)域進(jìn)行靈敏度劃分,在靈敏度高的區(qū)域降低分辨率來(lái)計(jì)算。另一個(gè)提高計(jì)算速度的途徑是借助圖形處理單元(GPU)的強(qiáng)大算力,譬如文獻(xiàn)[7-9]中提出的CPU和GPU異構(gòu)并行計(jì)算,有效提高了計(jì)算效率。此外,Diaz-Guerra等[10]提出了一種基于SRP-PHAT和卷積神經(jīng)網(wǎng)絡(luò)的單聲源DOA估計(jì)方法,加快了計(jì)算效率,驗(yàn)證了算法在強(qiáng)混響下的性能。
為了實(shí)現(xiàn)在低信噪比、強(qiáng)混響環(huán)境下多聲源定位,Liu等[11]提出了SRP與多通道互相關(guān)系數(shù)相結(jié)合,通過(guò)抑制非入射波方向來(lái)提高聲源定位精度。Diaz-Guerra等[12]提出了聲源消除技術(shù),該方法基于在與源位置正交的子空間上的投影來(lái)消除源產(chǎn)生的主峰和與其相關(guān)的峰,以此來(lái)提高定位效果。Daniele等[13]提出了一種基于幾何采樣網(wǎng)絡(luò)的體積網(wǎng)格SRP-PHAT算法,通過(guò)使用最大池化操作來(lái)最小化噪聲和混響的影響,最大化提高GCC精度來(lái)提高定位性能。Awad-Alla等[14]提出先根據(jù)到達(dá)時(shí)間差來(lái)估計(jì)波達(dá)方向,再結(jié)合SRP-PHAT對(duì)波達(dá)方向進(jìn)行計(jì)算,但該方法計(jì)算量仍舊較大。
雖然上述智能搜索算法能夠降低計(jì)算成本,但目前僅限于單個(gè)聲源定位。為了實(shí)現(xiàn)多聲源實(shí)時(shí)定位,在隨機(jī)區(qū)域收縮法[4]的基礎(chǔ)上,提出一種基于K-means聚類的隨機(jī)區(qū)域收縮SRP-PHAT算法。該算法通過(guò)最小描述長(zhǎng)度(MDL)準(zhǔn)則確定聲源的數(shù)量,根據(jù)K-means聚類算法進(jìn)行空間區(qū)域劃分,根據(jù)瑞利限修正K-means聚類算法將1個(gè)聲源錯(cuò)分成2個(gè)聲源的情形,通過(guò)隨機(jī)區(qū)域收縮算法進(jìn)行空間區(qū)域快速收縮,利用波束主瓣寬度判別聚類將2個(gè)聲源看成1個(gè)聲源的情形,從而實(shí)現(xiàn)多聲源快速正確定位。最后,通過(guò)仿真分析,驗(yàn)證在不同信噪比情形下所提出算法的快速性和定位精度。本文算法的描述和設(shè)計(jì)過(guò)程中會(huì)涉及較多的參數(shù)符號(hào),對(duì)其進(jìn)行整理,如表1所示。
表1 參數(shù)表
假設(shè)陣列中心接受的信號(hào)為s(t),則t時(shí)刻第j個(gè)傳感器接收到的信號(hào)為
xj(t)=s(t-τj)+nj(t)
(1)
式中:j=1,…,M。
利用傅里葉變換,得到接收信號(hào)的頻域模型為
X(ω)=A(ω)S(ω)+N(ω)
(2)
式中:X(ω)=[X1(ω),…,XM(ω)]T,上標(biāo)T為轉(zhuǎn)置運(yùn)算;A(ω)=[e-jωτ1,…,e-jωτM]T為導(dǎo)向矢量。
如圖1所示,假設(shè)q為聲源面上的一點(diǎn),則q處的指向響應(yīng)功率SRP-PHAT-β定義為
圖1 麥克風(fēng)陣列的空間成像原理
(3)
式中:上標(biāo)*為共軛轉(zhuǎn)置;τ(l,m)為聲源位置q到達(dá)傳感器l、m的時(shí)差。由于PHAT加權(quán)對(duì)幅度做歸一化,僅保留相位信息,因此使SRP-PHAT算法在低信噪比、強(qiáng)混響環(huán)境下具有較好的魯棒性[2]。
通過(guò)遍歷q,找到指向響應(yīng)功率的最大值,確定聲源位置qs,即
qs=arg maxP(q)
(4)
隨機(jī)區(qū)域收縮SRC的基本步驟為:① 劃定一個(gè)初始矩形搜索區(qū)域,在矩形搜索區(qū)域內(nèi)計(jì)算初始數(shù)量均勻分布的聲源潛在坐標(biāo)點(diǎn)的功率P,選取較大功率的坐標(biāo)點(diǎn),根據(jù)選取的坐標(biāo)點(diǎn)確定下次迭代的矩形搜索區(qū)域;② 從第二次迭代開(kāi)始,計(jì)算坐標(biāo)點(diǎn)功率的平均值;③ 選取大于平均值的位置,確定迭代中需要計(jì)算隨機(jī)坐標(biāo)點(diǎn)的數(shù)量,計(jì)算功率值并且確定新的矩形搜索區(qū)域;④ 依次迭代,直到矩形搜索區(qū)域小于網(wǎng)格分辨率,迭代終止。
傳統(tǒng)的SRC算法目前僅限于單聲源定位,本節(jié)將其拓展至多聲源定位情形。首先,根據(jù)MDL確定聲源個(gè)數(shù),利用K-means聚類算法,劃分空間區(qū)域進(jìn)行收縮,提出聲源判別準(zhǔn)則,實(shí)現(xiàn)多聲源快速定位。
使用MDL準(zhǔn)則確定聲源個(gè)數(shù)?;陬l域快拍模型,麥克風(fēng)陣列接收信號(hào)的協(xié)方差矩陣為
(5)
對(duì)協(xié)方差矩陣RXX進(jìn)行特征值分解,獲得特征值:
λ1≥λ2≥λ3…λd≥λd+1≥…≥λM
(6)
MDL信息準(zhǔn)則為
(7)
潛在的聲源數(shù)量d可通過(guò)最小化MDL(d)來(lái)獲得,即
d=arg minMDL(d)
(8)
為了實(shí)現(xiàn)多聲源實(shí)時(shí)定位,將K-means聚類算法與SRC算法結(jié)合為KSRC算法,K-means聚類算法用于在初始矩形區(qū)域選取初始數(shù)量的坐標(biāo)點(diǎn)后,將選取的坐標(biāo)點(diǎn)結(jié)合,計(jì)算得到的聲源數(shù)量d進(jìn)行K-means聚類,然后進(jìn)行迭代。在聚類過(guò)程中,有可能會(huì)出現(xiàn)兩類錯(cuò)誤,一是聚類時(shí)把1個(gè)聲源劃為不同簇,二是聚類時(shí)把2個(gè)聲源歸為同一類。為了判別和修正可能出現(xiàn)的兩類錯(cuò)誤,在迭代中引入瑞利限準(zhǔn)則和波束主瓣寬度準(zhǔn)則。
1) 瑞利限準(zhǔn)則
為了判別和修正第一類錯(cuò)誤,引入瑞利限準(zhǔn)則:
(9)
若計(jì)算的2個(gè)簇中最大值的坐標(biāo)點(diǎn)之間的距離小于Δu/2,則把該2個(gè)簇合并為一類(即來(lái)自于同一聲源)。
2) 波束主瓣寬度準(zhǔn)則
為了判別和修正第二類錯(cuò)誤,引入波束主瓣寬度準(zhǔn)則:
(10)
若基于某一簇中的坐標(biāo)點(diǎn)計(jì)算獲得的主瓣寬度大于理論值W0,則應(yīng)該將該簇分解為2個(gè)類。提出的快速多聲源定位算法流程如圖2所示。
圖2 快速多聲源定位算法流程
Do等[4]指出為了提高計(jì)算效率,為參數(shù)J0和Ni尋找最優(yōu)值是有必要的。當(dāng)其他參數(shù)確定,根據(jù)Ji確定方式不同,衍生了KSRC-Ⅰ和KSRC-Ⅱ兩類算法:① KSRC-Ⅰ,Ji為找到Ni-Gi個(gè)高于平均值ui的點(diǎn);② KSRC-Ⅱ,Ji為找到Ni-Gi個(gè)高于集合中對(duì)應(yīng)最小輸出功率的點(diǎn)。
使用40個(gè)傳感器的對(duì)數(shù)多臂螺旋陣列進(jìn)行實(shí)驗(yàn),計(jì)算公式為
(11)
式中:α=5π/16,α為螺旋角;a=1,2,…,Na,Na=5,a為陣列螺旋臂數(shù)量;b=1,2,…,Nb,Nb=8,b為螺旋臂上麥克風(fēng)數(shù)量;rmax=0.25 m,rmin=0.05 m,分別為最大極徑和最小極徑;φab為第a個(gè)螺旋臂上第b個(gè)傳感器的極角。
令聲速c=340 m/s,采樣頻率fs=217Hz,期望信號(hào)為高斯白噪聲,信噪比(signal to noise ratio,SNR)SNR=5 dB。Ramamurthy等[3]已經(jīng)證明β=0.65~0.8時(shí),聲源定位效果最好,本文中選用β=0.7。圖3給出了初始隨機(jī)坐標(biāo)點(diǎn)數(shù)量J0對(duì)定位準(zhǔn)確率的影響??梢钥闯?隨著J0的增大,定位準(zhǔn)確率隨之增加,當(dāng)J0>1 000,定位準(zhǔn)確率不再明顯增加,因此選取J0=1 000。經(jīng)研究發(fā)現(xiàn),當(dāng)N0=50時(shí),便能夠選取足夠數(shù)量的坐標(biāo)點(diǎn)(超過(guò)最大指向響應(yīng)功率的1/3)進(jìn)行聚類分析,因此取N0=50。聲源面與麥克風(fēng)陣列中心的距離L=2 m,聲源面大小為4 m×6 m(參見(jiàn)圖1)。
圖3 J0對(duì)定位準(zhǔn)確率的影響曲線
針對(duì)雙聲源和三聲源進(jìn)行定位算法分析。雙聲源和三聲源定位的收縮迭代歷程如圖4所示。
圖4 雙聲源和三聲源迭代歷程
可以看出,所提算法無(wú)論是對(duì)雙聲源還是三聲源都能夠準(zhǔn)確快速得到聲源定位結(jié)果。
表2給出了當(dāng)分辨率為1 cm×1 cm、信噪比為5 dB,以及不同聲源個(gè)數(shù)時(shí),經(jīng)典SRP-PHAT、KSRC-Ⅰ和KSRC-Ⅱ的平均計(jì)算次數(shù)。
表2 算法的平均計(jì)算次數(shù)
由表2可知,與傳統(tǒng)的SRP-PHAT算法相比,KSRC-Ⅰ、KSRC-Ⅱ算法不管是單聲源、雙聲源還是三聲源都可以提高至少30倍的計(jì)算效率,能夠?qū)崿F(xiàn)快速定位。
另外,對(duì)不同信噪比對(duì)定位準(zhǔn)確率的影響進(jìn)行研究。分別設(shè)置SNR=10、5、0 dB,添加的噪聲為高斯白噪聲,研究雙聲源定位和三聲源定位在不同信噪比下的定位精度,結(jié)果如圖5所示。
圖5 不同信噪比的定位精度曲線
由圖5可以看出,所提算法在3種不同的信噪比情形下,無(wú)論是雙聲源定位還是三聲源定位,隨著信噪比的降低,精度都沒(méi)有發(fā)生明顯下降,且定位精度都高于95%,表明所提算法在不同的噪聲環(huán)境下都能保持較好的魯棒性。提出的兩類算法的定位準(zhǔn)確度低于傳統(tǒng)的SRP-PHAT算法,原因是其中一個(gè)聲源的功率低于最大功率的1/3,導(dǎo)致選取坐標(biāo)點(diǎn)時(shí)被忽略。還可以看出,提出的兩類算法三聲源定位精度比雙聲源低,其原因是聲源個(gè)數(shù)越多,在K-means聚類時(shí)發(fā)生錯(cuò)誤的概率越大。
針對(duì)多聲源實(shí)時(shí)定位問(wèn)題,提出了一種適用于多聲源的隨機(jī)區(qū)域收縮SRP-PHAT定位算法,引入了瑞利限準(zhǔn)則和波束主瓣寬度準(zhǔn)則,糾正聚類分析將同一聲源劃為不同簇和不同聲源的問(wèn)題,突破了現(xiàn)有同類算法僅適用于單聲源定位的局限。結(jié)果表明,針對(duì)不同聲源的情形,兩類算法都能夠提高至少30倍的計(jì)算效率;針對(duì)不同信噪比的情形,兩類算法都能夠保證定位精度高于95%,能夠?qū)崿F(xiàn)快速多聲源定位,具有較好的魯棒性,對(duì)于強(qiáng)混響和低信噪比環(huán)境中的多聲源實(shí)時(shí)定位具有重要參考價(jià)值。