(南京理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,南京 210094)
在多個(gè)發(fā)聲者的普適環(huán)境中,正確地調(diào)整語音識(shí)別模型以提高語音識(shí)別精度一直是一項(xiàng)挑戰(zhàn)。從噪聲環(huán)境中恢復(fù)干凈的語音對(duì)于語音增強(qiáng)、語音識(shí)別和許多其它語音相關(guān)應(yīng)用具有重要意義。在現(xiàn)實(shí)生活中,有許多噪聲源,如環(huán)境、信道失真和揚(yáng)聲器可變性[1]。因此,已經(jīng)有許多算法用于消除語音中的噪聲[2-4]。這些算法大多需要額外的噪聲估計(jì),并且只適用于聽覺效果而不適用于自動(dòng)語音識(shí)別(ASR)。
本文介紹了一種自優(yōu)化語音活動(dòng)檢測(VAD)算法,以及信號(hào)分離后簡單但有效的噪聲消除過程,以提高語音識(shí)別率。所提出的VAD算法的關(guān)鍵是不需要對(duì)干凈的語音變化進(jìn)行先驗(yàn)估計(jì)。此外,用于語音/非語音判決的閾值是由噪聲本身所產(chǎn)生,即自優(yōu)化過程。對(duì)于噪聲去除過程是基于廣泛已知的頻譜減法(SS)[5],而不需要任何額外的模型或訓(xùn)練過程。最后利用NOIZEUS數(shù)據(jù)庫將VAD算法與SS方法、零交叉能量法(ZCE)[6]、熵權(quán)法[7]進(jìn)行了性能比較。
假設(shè)Sn(t),n=1,...,N是未知的語音源,其中N是發(fā)聲者的數(shù)目。M-傳感器麥克風(fēng)陣列的布置是線性的。輸出向量xm(t),m=1,...,M可以建模為:
x(t)=As(t)+n(t)
(1)
其中:A表示混合矩陣,x(t)=[x1(t),...,xM(t)]T是接收混合的向量,s(t)包含多個(gè)語音源,n(t)是加性高斯白噪聲向量,T是轉(zhuǎn)置運(yùn)算符。
基于上述信號(hào)模型的空間短時(shí)傅立葉變換(SSTFT)BSS算法的過程如下:
1)計(jì)算公式(1)中混合x(t)的STFT,得到每個(gè)時(shí)頻(TF)點(diǎn)(t,f)的M×1向量Sx(t,f):
Sx(t,f)=ASs(t,f)+Sn(t,f)
(2)
其中:下標(biāo)S表示STFT運(yùn)算符。
2)基于每個(gè)時(shí)刻的標(biāo)準(zhǔn)來檢測自動(dòng)源TF點(diǎn),即TF域中語音源的自動(dòng)定位:
(3)
3)基于SSTFT的算法的前提是估計(jì)源N的數(shù)量以及混合矩陣A。本文應(yīng)用文獻(xiàn)[8]中提出的方法,嘗試檢測一些主導(dǎo)的TF點(diǎn),即具有主要能量的源點(diǎn)與其他源和噪聲能量的點(diǎn)相比較。應(yīng)用均值漂移聚類方法[9]在不知道源的數(shù)量的情況下對(duì)主導(dǎo)TF點(diǎn)進(jìn)行分類。通過對(duì)同一簇中的所有TF點(diǎn)的空間矢量求平均來估計(jì)混合矩陣A,并且通過計(jì)算得到合成簇的數(shù)量來估計(jì)N。
4)基于檢測到的自動(dòng)源TF點(diǎn)集Ω和估計(jì)混合矩陣A,應(yīng)用基于子空間的方法來估計(jì)每個(gè)源的STFT值[10]。假設(shè)在每個(gè)自動(dòng)源TF點(diǎn)屬于點(diǎn)集Ω處最多存在K (4) (5) (6) 其中:+表示摩爾-彭羅斯的偽逆運(yùn)算符。Ω中的每個(gè)自動(dòng)源TF點(diǎn)處的能量分配給相應(yīng)源的K個(gè)STFT值。 6)每個(gè)源通過逆STFT[11]利用公式(6)估計(jì)的STFT值進(jìn)行恢復(fù)。 噪聲和語音通常在統(tǒng)計(jì)學(xué)上是相互獨(dú)立并且具有不同的統(tǒng)計(jì)特性[12]。噪聲更為對(duì)稱分布且始終呈現(xiàn),而語音由于其有效/無效周期,通常呈現(xiàn)出非平穩(wěn)性。語音的主動(dòng)/非主動(dòng)轉(zhuǎn)換使語音能量更集中在語音活動(dòng)期。 噪聲和語音的不同行為使得基于語音頻譜的最小/最大值來跟蹤語音或噪聲成為可能。具有高能量的部分更可能是語音,而低能部分更可能是噪聲,語音幅度大于噪聲幅度,這使得可以通過分析有噪語音的最大值來檢測語音。與噪聲相比,清晰語音幅度的概率分布函數(shù)在“尾部”部分更平坦,這意味著清晰語音幅度更可能遠(yuǎn)離其平均值。即使對(duì)于信噪比SNR=0 dB,也可以證明信號(hào)的峰值部分更可能來自語音。 假設(shè)語音被不相關(guān)的加性高斯噪聲所扭曲,VAD的兩個(gè)假設(shè)是: H0:語音缺失:Y=N+R; H1:語音呈現(xiàn):Y=S+N+R。 其中:Y,N,S和R分別表示來自盲源分離過程的頻域噪聲話音,噪聲,干凈話音和殘余話音。H0和H1的概率密度函數(shù)由下式給出: (7) (8) 本文還需要假設(shè)兩個(gè)條件PN(Y)/P(Y)<ε和PSPN,其中ε是0.01和0.2之間的啟發(fā)式參數(shù)。定義則第一個(gè)條件可以簡化為: (9) 因此,可以定義: (10) 其中:Yε可以作為更直接的閾值。頻率等級(jí)VAD標(biāo)志可以表示如下: (11) 計(jì)算語音概率密度函數(shù),可以得到|Yε|2。使用公式(11)實(shí)現(xiàn)二進(jìn)制VAD標(biāo)志。VAD算法適用于抑制噪聲,并且可以有效區(qū)分噪聲和濁音。為了提高自動(dòng)語音識(shí)別率,本文仍然需要跟蹤噪聲能量的變化,并更新包括語音幀在內(nèi)的所有幀的噪聲能量。 在VAD算法的設(shè)計(jì)中,由于語音信號(hào)是高度非平穩(wěn),軟判決算法優(yōu)于二進(jìn)制判決。沒有明確的邊界標(biāo)記發(fā)音的開始或結(jié)束,因此,判別信息被用作軟判決閾值。 能量計(jì)算在逐幀的基礎(chǔ)上進(jìn)行,每個(gè)幀乘以適當(dāng)?shù)拇翱谝詼p少來自快速傅立葉變換(FFT)的頻率混疊。其中,50%重疊意味著產(chǎn)生幀長度一半的初始延遲,應(yīng)仔細(xì)選擇框架尺寸。假設(shè)采樣率為FS,幀大小為N=2m,時(shí)間分辨率為N/FS,頻率分辨率為FS/N。顯然,較大的幀尺寸可以提供更好的頻率分辨率,但時(shí)間分辨率較差。通常,對(duì)于FS為8 000和16 000 Hz,對(duì)應(yīng)合適的幀大小N分別為256和512。 信號(hào)被分為16個(gè)子頻帶。當(dāng)幀的大小為256時(shí),第i個(gè)子頻帶的能量為: (12) (13) 利用幀能量和子帶能量計(jì)算基于當(dāng)前幀和噪聲幀的子帶能量分布概率來計(jì)算識(shí)別信息。假設(shè)隨機(jī)變量Y可能是a1,...,ak的值。Y的概率分布與假設(shè)H0和H1有關(guān)。設(shè)P0(ak)=P(ak|H0),P1(ak)=P(ak|H1),判別信息定義如下: (14) 可以利用子帶能量分布來計(jì)算當(dāng)前幀和噪聲幀的相似性: (15) (16) 閾值通過以下方式更新: 1)選擇前5幀為噪聲/非語音幀。 2)語音信號(hào)周期的前一幀認(rèn)為是噪聲幀。 3)當(dāng)前一幀確定為是噪聲幀時(shí),如果當(dāng)前幀滿足|Y|2≤|Yε|2,則當(dāng)前幀將視為噪聲幀。如果當(dāng)前幀滿足|Y|2>|Yε|2和d>Tr,則當(dāng)前幀將視為起始位置幀,并與接下來的6幀進(jìn)行比較。如果6幀也滿足|Y|2>|Yε|2和d>Tr,則可以將起始位置幀作為語音周期的起始位置。否則,當(dāng)前幀仍然認(rèn)為是噪聲幀。 4)當(dāng)前一幀是語音幀時(shí),如果當(dāng)前幀滿足|Y|2>|Yε|2,則仍然是語音幀。如果當(dāng)前幀滿足|Y|2≤|Yε|2和d 5)在上述確定的每個(gè)步驟中,噪聲閾值將進(jìn)行更新: THn=THn-1(1-λ)+|Y|2λ (17) 其中:THn表示第n幀的更新后的噪聲閾值,|Y|2為當(dāng)前語音的概率分布函數(shù)值,λ為噪聲更新因子,該噪聲更新因子由判別信息計(jì)算。 6)如果所有數(shù)據(jù)都已處理完畢,則自適應(yīng)調(diào)整結(jié)束。 語音信號(hào)Y(w)通常被加性高斯噪聲N(w)所破壞。理論上,可以通過估計(jì)其功率并使用以下濾波器對(duì)噪聲信號(hào)進(jìn)行濾波來實(shí)現(xiàn)最佳地消除噪聲: H(w)=(|Y(w)|-|N(w)|)/Y(w) (19) 本文所提出的VAD將檢測噪聲幀,并從語音信號(hào)中減去噪聲譜,試圖在ASR的特征提取過程中保留更多的信息,并消除在特征提取和模板匹配期間提供錯(cuò)誤信息的噪聲。由于語音信號(hào)總是非平穩(wěn)的,所以作出語音或噪聲的二元決策變得相當(dāng)困難。因此,本文通過計(jì)算語音活動(dòng)評(píng)分(VAS)來估計(jì)語音,當(dāng)導(dǎo)出的VAS表示語音和噪聲的混合時(shí),可以實(shí)現(xiàn)平滑的處理轉(zhuǎn)換。 框架下的VAS是由兩個(gè)方面決定:第一個(gè)涉及語音的可理解性,通過計(jì)數(shù)語音頻帶中的Bark頻帶的數(shù)量來近似量化,該頻帶的功率超過估計(jì)噪聲的相應(yīng)Bark頻帶的數(shù)量。語音頻帶范圍從第4到第14個(gè)Bark頻帶。第二個(gè)是當(dāng)前幀相對(duì)于估計(jì)噪聲功率的相對(duì)功率,幀的相對(duì)功率越高,其包含語音的可能性就越大。最后的VAS僅僅是這兩個(gè)方面的分?jǐn)?shù)之和。將參數(shù)ε設(shè)置為VAS的倒數(shù)并對(duì)每個(gè)幀進(jìn)行更新。連續(xù)VAS比固定參數(shù)提供更大的靈活性。即使需要對(duì)幀是否為純?cè)肼晭M(jìn)行二元判決,仍然可以在一定的值上處理改變和收斂。 本文將從前端特征提取,由詞單元和詞模板組成的訓(xùn)練過程以及最終識(shí)別過程闡述了整個(gè)系統(tǒng)。在VAD和噪聲抑制之后,將在ASR系統(tǒng)中對(duì)處理后的語音信號(hào)進(jìn)行評(píng)估。 用于此識(shí)別任務(wù)的特征向量是24 MFCC。幀窗口大小為20 ms,語音在16 kHz下采樣并具有16 bit分辨率。 訓(xùn)練過程的第一部分要求用戶記錄他們大約兩分鐘的演講。建議閱讀語音豐富的句子,以獲得更全面的分詞單元。在這個(gè)實(shí)驗(yàn)中,用戶被要求閱讀一系列哈佛大學(xué)經(jīng)典語錄。通過使用C均值算法得到的MFCC聚類為64個(gè)不同的單元,大致對(duì)應(yīng)于分詞的集合。然后使用4種高斯混合模型對(duì)這些聚類中的每一個(gè)進(jìn)行建模。在這個(gè)實(shí)驗(yàn)中,重新聚類不會(huì)在分詞模板生成過程中完成。為了簡化模型,進(jìn)一步計(jì)算生成64×64的Bhattacharyya距離矩陣。這個(gè)過程如圖1所示。 圖1 分詞單元生成 在這一步中,要識(shí)別的單詞被記錄。如圖2所示,要求用戶對(duì)單詞進(jìn)行發(fā)音,并且基于最大似然估計(jì)方式,模板生成將這些單詞轉(zhuǎn)換為子單詞單元索引序列。為了避免對(duì)單詞進(jìn)行過分割,只有當(dāng)與相鄰狀態(tài)存在顯著的似然差異余量時(shí)才允許改變子單詞索引,從而采用過渡啟發(fā)式。用戶想要向系統(tǒng)錄入每個(gè)單詞都必須重復(fù)該過程。 圖2 語言模板生成 假設(shè)系統(tǒng)中有M個(gè)詞模板,識(shí)別過程計(jì)算由模板生成的用戶輸入特征向量X輸入的概率,則選擇的詞是最大似然的詞: m*=argmaxpm(Xinput) (20) 模板可以看作是高斯混合模型(GMM)序列,這使得隨著詞表模板數(shù)目的增加,pm(Xinput)計(jì)算越來越復(fù)雜,并且很難觀察所提出的VAD算法[13]的效果。本文使用Bhattacharyya距離矩陣[14]將輸入特征轉(zhuǎn)換為分詞單元索引序列。兩個(gè)概率分布p1和p2之間的Bhattacharyya距離矩陣為: (21) 測試實(shí)驗(yàn)中的每個(gè)分詞單元使用4個(gè)混合GMM建模,因此它們之間的距離為: (22) 使用Levenshtein距離法計(jì)算所有64個(gè)分詞單元的距離。通過原始模式匹配算法的識(shí)別任務(wù)的平均運(yùn)行時(shí)間與模板的數(shù)目成比例地增加。對(duì)于Bhattacharyya編輯距離方法,當(dāng)模板數(shù)量增加時(shí),運(yùn)行時(shí)間非常穩(wěn)定,特別適用于實(shí)時(shí)識(shí)別系統(tǒng),圖3給出了其匹配過程。 圖3 識(shí)別匹配過程 發(fā)聲者識(shí)別過程與匹配過程相似,有兩個(gè)主要的區(qū)別:(1)只有在發(fā)聲者識(shí)別過程中才加載所選擇的說話者配置文件,由于發(fā)聲者的身份已知。在發(fā)聲者識(shí)別中,對(duì)發(fā)聲者配置文件進(jìn)行輪詢,并將輸入與每個(gè)發(fā)聲者的相應(yīng)激活關(guān)鍵字注冊(cè)進(jìn)行比較。(2)不考慮編輯距離,發(fā)聲者識(shí)別過程在給定模板中的GMM分布序列的情況下使用輸入的后驗(yàn)概率。這種方法使在設(shè)定接受閾值時(shí)具有更大的靈活性。 在本文的案例中,使用2個(gè)麥克風(fēng)接收來自4個(gè)發(fā)聲者的混合聲音。在分離的信號(hào)中,通過使用自動(dòng)發(fā)聲者識(shí)別選擇一個(gè)發(fā)聲者的聲音,然后進(jìn)行隔離單詞識(shí)別測試。 圖4給出了使用上述過程從2個(gè)麥克風(fēng)接收到的信號(hào)中分離出4個(gè)發(fā)聲者聲音的結(jié)果,兩個(gè)麥克風(fēng)的噪聲混合如圖5所示。 圖4 從4個(gè)發(fā)聲者中分離出來的聲音 圖5 由2個(gè)麥克風(fēng)接收的混合語音信號(hào) 由圖4可見,4個(gè)發(fā)聲者的振幅隨時(shí)間的變化趨勢相似,僅在振幅的數(shù)值上有微小差異,說明4個(gè)發(fā)聲者在信號(hào)分離過程中有語言重疊部分,但通過分詞單元匹配識(shí)別,仍然能夠分辨出不同發(fā)聲者的語音信號(hào)。圖5可見,2個(gè)麥克風(fēng)接收的混合語音信號(hào)隨時(shí)間的變化趨勢也相似,也僅在振幅的數(shù)值上有微小差異,說明2個(gè)麥克風(fēng)接收混合語音信號(hào)過程中可以有效地對(duì)噪聲進(jìn)行抑制,更好的接收不同發(fā)聲者的語音信號(hào)。因此,圖4和圖5分別從盲源分離和噪聲抑制兩個(gè)方面驗(yàn)證了所提出的語音信號(hào)識(shí)別方法的有效性。 本文將給出ASR系統(tǒng)的結(jié)果和客觀評(píng)價(jià)。首先定義信噪比: (24) 其中:S(k)是語音信號(hào)能量,N(k)是噪聲能量。在這個(gè)ASR實(shí)驗(yàn)中,車輛和餐廳的噪聲來自NOIZEUS噪聲數(shù)據(jù)庫。 使用ASR系統(tǒng)進(jìn)行語音識(shí)別測試,提出的盲盲源分離算法是在VAD算法之前實(shí)現(xiàn)。文獻(xiàn)[15]指出,與麥克風(fēng)相比,語音源更少的系統(tǒng)可以獲得更好的分離效果。將SS方法、ZCE方法和基于熵的方法的性能與在車輛和餐館噪聲環(huán)境中提出的VAD噪聲抑制方法進(jìn)行了比較。對(duì)于信噪比SNR為0,5和10 dB的情況,在表1中給出了車輛噪聲與餐廳噪聲內(nèi)的語音識(shí)別精度實(shí)驗(yàn)結(jié)果,其中,括號(hào)內(nèi)為餐廳噪聲環(huán)境下的識(shí)別率。 表1 車輛噪聲與餐廳噪聲內(nèi)的語音識(shí)別精度 與在VAD算法中實(shí)現(xiàn)精度最高的(基于熵的方法)相比,信噪比SNR=0 dB的情況下的相對(duì)改善達(dá)到2.5%(1.2%),而在信噪比為5 dB的情況下,改善率為1.4%(0.33%)。整個(gè)ASR系統(tǒng)以逐幀的方式工作,滿足大多數(shù)嵌入式電子應(yīng)用的實(shí)時(shí)操作。除了在實(shí)驗(yàn)中使用的噪聲,使用NOIZEUS的街道噪音也可以獲得相似的結(jié)果。 本文提出并實(shí)現(xiàn)了一種用于普適語音環(huán)境的完整語音恢復(fù)算法。它能有效地從多個(gè)發(fā)聲者的混合語音中恢復(fù)個(gè)體發(fā)聲者的聲音。所提出的算法的關(guān)鍵特征是不需要先驗(yàn)信息的來源數(shù)量和干凈語音方差的估計(jì)。用于抑制噪聲的閾值是從語音本身生成,從而導(dǎo)致適應(yīng)變化環(huán)境的理想能力。此外,所提出的盲源分離和噪聲抑制方法不需要任何額外的計(jì)算過程,有效地減少了計(jì)算負(fù)擔(dān)。最后,所提出的系統(tǒng)可以容易地在普適語音環(huán)境中實(shí)現(xiàn)。2 噪聲評(píng)估
2.1 噪聲描述
2.2 算法推導(dǎo)
3 噪聲抑制
3.1 子帶能量計(jì)算
3.2 閾值更新
3.3 改進(jìn)的VAD和噪聲抑制
4 發(fā)聲者和語音識(shí)別
4.1 前端特征提取
4.2 分詞單元生成
4.3 語言模板生成
4.4 匹配過程識(shí)別
5 實(shí)驗(yàn)研究
5.1 算法應(yīng)用與分析
5.2 算法評(píng)價(jià)
6 結(jié)論