苗曉孔 張雄偉
(陸軍工程大學(xué)指揮控制工程學(xué)院 南京 210007)
近些年隨著神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)等技術(shù)在語音智能等方面的運(yùn)用,語音數(shù)據(jù)庫制作也受到關(guān)注。語音數(shù)據(jù)庫可用來幫助訓(xùn)練和改善語音處理算法,為了豐富語音數(shù)據(jù)庫內(nèi)容,同步錄制包含周圍環(huán)境噪聲的語音數(shù)據(jù)也逐步得到重視。含噪語音可以用來檢驗相關(guān)語音算法在不同真實(shí)場景中的處理效果。而語音分割技術(shù)就是將不同情況下的連續(xù)語句進(jìn)行分割、提取,以制取完備的語音數(shù)據(jù)庫。針對含噪語音或者某些低信噪比環(huán)境下的語音數(shù)據(jù)分割,高效、魯棒的分割算法對提升語音轉(zhuǎn)換、語音識別、語音截取[1]等技術(shù)的性能將起到一定的作用。
語音分割關(guān)鍵是準(zhǔn)確得到語句起始和結(jié)束端點(diǎn),按其端點(diǎn)檢測方式目前語音分割方法大致可分三類:(1)基于特征參數(shù)提取的分割方法:主要是提取語音信息中的時頻特征參數(shù)進(jìn)行端點(diǎn)檢測,然后分割。時域特征如過零率、短時能量以及自相關(guān)函數(shù)等[2?3];頻域特征主要有梅爾倒譜距離、頻率方差、LPC以及譜熵等[4?7]。這類算法操作簡單,便于實(shí)現(xiàn),但算法魯棒性差,在低信噪比環(huán)境適應(yīng)效果不理想。(2)基于模型的分割方法:通常是將端點(diǎn)檢測問題轉(zhuǎn)化為分幀問題,分別對噪聲和語音進(jìn)行二分類建模,然后檢測語音端點(diǎn)并分割。常用模型有隱馬爾科夫模型(Hidden Markov models,HMM)、支持向量機(jī)(Support vector machine,SVM)、深度神經(jīng)網(wǎng)絡(luò)(Deep neural network,DNN)[8?9]等。這些算法比較復(fù)雜,其分割效果取決于模型與環(huán)境噪聲的匹配程度,匹配度越高效果越好,所以其依賴性較強(qiáng),適應(yīng)性較差。(3)基于一些新理論的方法:運(yùn)用混沌理論、分形理論的端點(diǎn)檢測分割算法。這些算法的運(yùn)算量大,只適用于一些特殊噪聲,具有一定的局限性[10]。
針對上述分割算法存在的問題,本文提出了基于骨導(dǎo)語音的自適應(yīng)分段雙門限語句分割方法。首先利用骨導(dǎo)語音的抗噪性提升時域參數(shù)特征融合算法魯棒性(因骨導(dǎo)語音通過捕獲振動源的機(jī)械振動獲取語音,去除了周圍環(huán)境噪聲影響,且骨導(dǎo)設(shè)備廉價易得,可操作性強(qiáng)),然后引入隨機(jī)動態(tài)閾值進(jìn)行自適應(yīng)的端點(diǎn)檢測,最后通過分段雙門限和層聚類的方式實(shí)現(xiàn)語音分割。實(shí)驗證明:本文所提分割算法提高了語音分割的精度和準(zhǔn)確度,算法適應(yīng)性強(qiáng),魯棒性好且便于實(shí)現(xiàn)。同時與其他幾種算法對比,本文分割算法的分割效果獲得明顯改善。
傳統(tǒng)的時域參數(shù)融合分割方法,在語音預(yù)處理階段主要是對氣導(dǎo)語音進(jìn)行信號預(yù)加重加窗分幀,通過預(yù)處理提升語音信號的信噪比。但是大多數(shù)情況下采集到的氣導(dǎo)語音信號含有噪聲,對受到不同噪聲影響的氣導(dǎo)語音進(jìn)行分割,需要考慮不同的去噪方法,這使得算法的適應(yīng)性降低。本文提出在預(yù)處理階段引入骨導(dǎo)語音,利用骨導(dǎo)語音的低頻抗噪性來提升算法的適應(yīng)性,通過對骨導(dǎo)語音簡單的噪聲濾波,減少去噪復(fù)雜度進(jìn)而實(shí)現(xiàn)魯棒的端點(diǎn)檢測。
骨導(dǎo)語音是骨導(dǎo)麥克風(fēng)通過捕捉頭骨或喉頭振動采集的語音信號,由于其不受空氣中的噪聲干擾,得到的語音具有很強(qiáng)的抗噪性能。雖然骨導(dǎo)語音本身仍存在有待改善的問題,例如:語音中高頻成分較弱,可懂度低等,但是充分利用其較強(qiáng)的抗噪性能,對于改善語音切割效果會起到很大作用。為了驗證骨導(dǎo)語音的抗噪性,通過實(shí)驗得到如圖1所示結(jié)果。
圖1是同步采集語音信號的氣導(dǎo)語音與骨導(dǎo)語音時域信號圖形及其對應(yīng)幀的頻率成分分析圖。兩者在時間和內(nèi)容上都具有一致性。
圖1中左側(cè)圖形均為氣導(dǎo)語音的相關(guān)圖,右側(cè)均為骨導(dǎo)語音的相關(guān)圖。圖1(a)展示了相同語句內(nèi)容,氣導(dǎo)和骨導(dǎo)的時域圖和頻率成分圖??梢钥闯觯撜Z句內(nèi)容的氣導(dǎo)語音在中高頻部分幅度較大,其保存信息相對較多,而骨導(dǎo)語音在低頻部分幅度較大,說明骨導(dǎo)低頻部分保存信息相對較多。圖1(b)展示了在受嘈雜人聲背景噪聲影響下,氣導(dǎo)和骨導(dǎo)分別對應(yīng)的時域波形和頻率成分圖。分析圖1(b)可知,氣導(dǎo)語音受噪聲干擾后其中高頻信息已受到嚴(yán)重干擾,由頻率成分圖可知,此時氣導(dǎo)語音的低頻信息較強(qiáng)而中高頻信息則相對較弱,與圖1(a)中的氣導(dǎo)頻率成分圖產(chǎn)生較大變化。而骨導(dǎo)語音幾乎不受外界任何干擾,其頻率成分分析圖與圖1(a)中基本保持不變,由此可見骨導(dǎo)語音的抗噪性相對氣導(dǎo)更加明顯。所以在制備語音數(shù)據(jù)庫時,同步錄制骨導(dǎo)語音,在預(yù)處理階段提取骨導(dǎo)語音信號,對其進(jìn)行去噪處理,可以很大程度上減少外界噪聲對算法適應(yīng)性的干擾。后續(xù)在進(jìn)行端點(diǎn)檢測或語音分割時,可提升其檢測或分割的適應(yīng)性。
圖1 氣導(dǎo)語音與骨導(dǎo)語音的頻率成分Fig.1 The frequency component of air conduction speech and bone conduction speech
改進(jìn)分割算法主要體現(xiàn)在兩個方面:一是采用骨導(dǎo)語音應(yīng)對多種復(fù)雜噪聲,提升算法抗噪性和適應(yīng)性;二是結(jié)合分段雙門限檢測和語音聚類等方法實(shí)現(xiàn)語音分割,有效降低了傳統(tǒng)固定閾值分割帶來的“一句分割成多句”或“多句分為一句”等問題。在處理過程中還提出了一些其他改進(jìn)步驟,如:引入隨機(jī)動態(tài)閾值、改善相似度度量方式以及自適應(yīng)等改進(jìn)方案,最終從整體上提升了語音分割算法的準(zhǔn)確度和魯棒性。
改進(jìn)分割算法的基本流程如圖2所示,針對改進(jìn)流程下面具體介紹各步驟實(shí)現(xiàn)方法。
圖2 改進(jìn)語音分割算法基本流程Fig.2 The basic process of improving the speech segmentation algorithm
語音端點(diǎn)檢測算法主要包括特征提取和端點(diǎn)判定兩個環(huán)節(jié)[10]。傳統(tǒng)的方法在特征提取時,提取單一的時域參數(shù)或頻域參數(shù),作為區(qū)分語音段與噪聲段的特征。本文在利用骨導(dǎo)語音良好的抗噪性能的前提下,使用了短時能量和過零率時域融合的參數(shù)特征,克服了單一參數(shù)特征抗噪性差與區(qū)分性差的缺點(diǎn),一定程度上提升了端點(diǎn)檢測算法的準(zhǔn)確性[2,11?12]。但在連續(xù)語音分割時,因語句內(nèi)容的長短不一,并且在一句話內(nèi)部中也會產(chǎn)生停頓和間隙,所以在進(jìn)行端點(diǎn)檢測時,還是會容易造成誤檢(將語句內(nèi)部的停頓作為新語句的起始點(diǎn)分割)。為了有效避免此類誤檢,引入隨機(jī)變化的動態(tài)閾值進(jìn)行端點(diǎn)判定,將固定區(qū)間的截取變成動態(tài)區(qū)間的截取,克服了固定閾值不能自適應(yīng)環(huán)境的缺點(diǎn),使端點(diǎn)檢測算法適應(yīng)性更強(qiáng)。其實(shí)現(xiàn)的具體方法如下:
式(1)中,τi表示初始設(shè)置第i段中包含靜音幀的數(shù)量值,length(S)表示初始選取一段語音的時間長度(單位:ms),ω表示幀和秒的轉(zhuǎn)換關(guān)系(單位:ms/幀),n表示選取的隨機(jī)語音段內(nèi)能量出現(xiàn)能量峰的個數(shù),κ表示信號分幀時選取的幀移位置的大小,rand表示隨機(jī)生成的(0,1]區(qū)間上的數(shù),通過式(1)能夠確定檢測出語音起始端點(diǎn)后需要向后位移的幀數(shù)。因為引入了rand隨機(jī)量的生成,所以間隙起點(diǎn)與語音結(jié)束點(diǎn)恰好重合的概率大大降低。
雙門限檢測,是指通過設(shè)置檢測門限的最低值和最高值來判定語音是否開始和結(jié)束。分段雙門限則是為了有效應(yīng)對語句內(nèi)部間隙停頓和語句間間隔類似情況下造成語句分割點(diǎn)誤判的問題。簡單來說,就是為了防止因為語句內(nèi)部間隙原因而將一句話誤分成兩句話或多句話的問題。分段第二段采用的檢測方法與第一段相同,但是其在設(shè)置語音信號間隔中的靜音幀數(shù)和隨機(jī)參量做了調(diào)整,其計算公式如下:
由公式(2)可以看出,其主要是在對靜音段幀數(shù)進(jìn)行了一定程度上的減少,a是一個比例系數(shù),其取值范圍(0,1],相關(guān)系數(shù)主要通過實(shí)驗測試所得,本實(shí)驗中取2/3。通過上述分段的兩段檢測,通常會得到一段較長的語音和一段相對較短的語音段,在連續(xù)語音中兩者交替出現(xiàn)。
當(dāng)對說話人語音進(jìn)行分割之后,輸入音頻被切分成了若干片段,通常希望分割后每個片段中只包含一個人的一句話,而聚類就是將這些語音片段依次重新組合,把一句話的片段聚為一類。常見的聚類策略有基于支持向量機(jī)、層次凝聚聚類等。層次凝聚聚類是一種貪心聚類方式,在聚類的過程中把相似度高的兩個類別合并,簡單高效,示意圖如圖3所示。
本文正是采用層次凝聚聚類方法,其具體實(shí)現(xiàn)步驟如下:
(1)將端點(diǎn)檢測之后得到的語音片段作為初始類別,對每個類別進(jìn)行建模。
(2)算出兩兩類別之間的相似程度,得到距離度量矩陣。
(3)依次對相鄰兩個語音片段進(jìn)行相似度比較,如果相似度高(相似度大于某一閾值)即合并為一句,然后將合并后的句子與接下來一句繼續(xù)進(jìn)行比較,直到其相似度小于閾值。如果第一次比較就小于相似度閾值,則不合并前兩句,分別將第一句生成單獨(dú)的語音片段,第二語音片段作為下次比較的第一個片段,繼續(xù)比較。
(4)重復(fù)步驟(2)和步驟(3),當(dāng)遍歷所有語音片段后停止聚類。
圖3 語句聚類圖Fig.3 Statement clustering
聚類過程中一個重要的問題就是相似度判別方式,大多情況下首先以其兩者之間的距離作為度量。在本文中,采用了歐氏距離2范數(shù)的方法來進(jìn)行相似度度量,求各個元素的平方求和然后求平方根。其計算公式如式(3)所示:
式(3)中,di表示第i個相鄰語音片段之間的歐氏距離,xi表示第i段語音片段的開頭位置,yi表示第i段語音截止位置,li表示另一種對其相似度的判斷條件。計算出di和li后分別與閾值比較,閾值設(shè)定則根據(jù)實(shí)際觀測取定值。
為了驗證本文所提改進(jìn)算法的有效性和可行性,在windows操作系統(tǒng)下的Matlab 13.0環(huán)境中進(jìn)行了實(shí)驗。實(shí)驗選取了20名男生,20名女生,每人200句連續(xù)語句作為樣本進(jìn)行分割,共計8000個樣本。
實(shí)驗樣本語音是選取了32.00 kHz的采樣和16 bit量化情況下同步錄制真實(shí)包含周圍嘈雜人聲的語音數(shù)據(jù),幀長取240采樣點(diǎn),幀移取80采樣點(diǎn)。本文算法的分割效果如圖4所示。
圖4(a)是實(shí)驗中男8(編號為8的男生)錄取包含背景噪聲情況下混合雙聲道的部分語句時域波形圖。圖4(b)為分離后氣導(dǎo)語音時域波形圖,圖4(c)分離后的骨導(dǎo)語音時域波形圖。對比圖4(b)和圖4(c)可以看出,氣導(dǎo)語音受到嚴(yán)重干擾,而骨導(dǎo)語音受外界環(huán)境的影響很小,較好地保持了說話人語句起始和終止的位置信息。圖4(b)中的黑色豎線和圖4(c)紅色豎線分別表示本文算法在氣導(dǎo)語音和骨導(dǎo)語音上分割出第一句語音的起始和終止位置。圖4(d)中藍(lán)色部分表示氣導(dǎo)情況下截取的第一段語音,紅色表示骨導(dǎo)情況下截取的第一段語音。放大提取后的語音片段,可以明顯看出,基于骨導(dǎo)語音的分割更加準(zhǔn)確,這也說明骨導(dǎo)語音具有良好的抗噪性,可以更好地利用這一特點(diǎn),對含噪語音進(jìn)行分割和提取。
為了更加充分證明實(shí)驗分割的準(zhǔn)確度,對8000句語音進(jìn)行切割,其統(tǒng)計結(jié)果如表1所示。
表1 本文方法分割后語音的數(shù)量和正確率Table 1 The number and accuracy of the speech after this method is segmented
表1統(tǒng)計了本文分割算法對20名男生和20名女生的分割結(jié)果,分割語句的數(shù)量并不代表準(zhǔn)確率,因為分割中出現(xiàn)的誤聚類、分割丟失或一句多分等情況,正確率計算公式為分割正確數(shù)量/分割所得總數(shù)量。表1中所給出的正確率為經(jīng)人工檢驗分割語句內(nèi)容后計算所得。因為在語音庫制取過程中,還存在人為因素,比如語句不流暢、發(fā)音不明顯等問題,語句與語句間隔有時甚至不如一句話內(nèi)部停頓時間長,對于上述情況本文算法仍然無法有效分割,但是對于受噪聲影響的語句則可以有效準(zhǔn)確地分割。由表1可得其分割正確率比較高。核對數(shù)量則相對較少,所以其可以大大減少人工分割的時間,提高工作效率。
圖4 本文所提算法實(shí)驗效果圖Fig.4 Experimental ef f ect of the algorithm in this paper
為了進(jìn)一步說明本文所提算法的優(yōu)良性,本文還與骨導(dǎo)情況下的傳統(tǒng)單特征和混合特征的單門限分割算法以及氣導(dǎo)情況下的融合特征單門限分割算法進(jìn)行了對比。針對含有嘈雜人聲、音樂背景、汽車鳴笛背景等多種噪聲環(huán)境進(jìn)行了測試。本次實(shí)驗選取了同步錄制時含有背景音樂的語音數(shù)據(jù)進(jìn)行測試,效果如圖5所示。
圖5展示了四種分割算法對同一段語音分割出第一個語句的分割效果。圖5(a)表示含有音樂背景噪聲的氣導(dǎo)語音和骨導(dǎo)語音時域波形圖。圖5(b)表示本文的分割方法,經(jīng)檢驗其分割正確,同時可以看出語句中間存在的較長間隙,但本文所提方法依舊能夠?qū)崿F(xiàn)正確分割。圖5(c)表示基于骨導(dǎo)語音選取單特征時分割算法的分割效果,其誤語句中間的間隙作為語句截止點(diǎn),將一句話分割成多句,分割錯誤。圖5(d)表示基于骨導(dǎo)語音的融合特征固定閾值分割方法,可看出由于分割閾值固定,當(dāng)語句內(nèi)部停頓或靜音段較大時會造成分割錯誤,引起后半句語句內(nèi)容丟失。在實(shí)際實(shí)驗中需要不斷調(diào)整固定閾值,因為后續(xù)語句間隔的不確定性仍舊會造成“一句多分”的現(xiàn)象出現(xiàn)。圖5(e)表示基于氣導(dǎo)語音的融合特征分割法,由于受到背景音樂的干擾,直接對其分割,其分割準(zhǔn)確率很低。如果采用去噪方法,不同的背景噪聲所需去噪方法不同,分割算法的適應(yīng)性降低。由此可見本文的分割算法優(yōu)于其他三種分割算法。同時對四種算法進(jìn)行了分割效果統(tǒng)計,如表2所示。
圖5 四種方法分割效果對比Fig.5 Comparison of four methods of segmentation
表2是四種分割算法對男生和女生分別同步錄制三種不同背景噪聲(音樂背景噪聲、嘈雜人聲背景噪聲、車輛鳴笛噪聲)情況下的語句分割正確率的統(tǒng)計結(jié)果。結(jié)合圖5的分割效果,可以看出融合特征算法優(yōu)于單特征分割算法,基于骨導(dǎo)的優(yōu)于基于氣導(dǎo)的分割效果,進(jìn)而驗證了本文分割算法效果更好,分割準(zhǔn)確率更高,也說明算法的適應(yīng)性較強(qiáng)。
表2 四種分割算法在不同噪聲環(huán)境下分割的正確率Table 2 Accuracy rate of four segmentation algorithms for dif f erent noise environments
本文利用骨導(dǎo)語音具有的優(yōu)良抗噪性,在對骨導(dǎo)語音預(yù)處理的基礎(chǔ)上提出了一種自適應(yīng)的分段雙門限語音分割算法,通過時域特征融合、引入隨機(jī)動態(tài)閾值以及分段雙門限檢測等多個方面改善語音分割效果,并通過實(shí)驗證明了其有效性和魯棒性。針對需要同步錄制背景噪聲或某些信噪比較低情況下的語句分割問題,找到一種最接近手工分割結(jié)果的端點(diǎn)位置,從而達(dá)到對噪聲環(huán)境下的連續(xù)語音進(jìn)行分割的目的,且分割精度和準(zhǔn)確度獲得一定程度上的提高。當(dāng)然,算法還存在一些可以繼續(xù)完善的地方,例如:在相似度判定上還可以做進(jìn)一步的自適應(yīng)調(diào)整,根據(jù)語音長度和整個語句信息的相關(guān)參數(shù)確定一個變化的相似度閾值,可以使算法的性能進(jìn)一步拓展,后續(xù)相關(guān)工作也可以在這方面進(jìn)行相應(yīng)的實(shí)驗和改進(jìn)。