黃小奇,范 晟,陳光文,許卓偉,彭 鍇,方志丹,王 爍
(廣東電網有限責任公司汕頭供電局,廣東汕頭 515000)
語音交互作為最方便、易學的人機交互方式,已開始嘗試應用于智能家居、車載系統(tǒng)、智能手機等電子產品領域[1-2]。然而,語音交互技術的真正成熟應用還需克服眾多困難,尤其是在語音識別上。如實用與訓練環(huán)境通常存在巨大的差異,導致實際使用過程中語音識別率較低;或者語用層、聲學層和語言層的語音識別能力與人類相比仍有較大差距;亦或是人類通常在交流中存在笑聲、咳嗽、哭泣等非正常語音現(xiàn)象與重復、停頓等不規(guī)則語言現(xiàn)象,導致語音識別誤差較大[3-5]。因此,如何使用合適的語音交互算法準確識別實際環(huán)境下人類的語言,是提高語音識別率的關鍵。
實際上,在人類交流的過程中,通常只需要通過幾個關鍵詞就可以正確推斷出談話的核心內容,而不需要對連續(xù)語音進行辨析與識別,這為語音識別提供了思路[6-7]。目前,基于語音關鍵詞的識別過程主要有基于垃圾模型、基于音素與音節(jié)識別、基于連續(xù)語音識別共3 類關鍵詞識別結構[8]。3 類識別結構有各自的優(yōu)勢和弊端,因此,文中將音素、音節(jié)與連續(xù)語音識別相結合,將后者結構中的網格(詞網格)用音素、音節(jié)的網格進行替代?;诤诵牡腣iterbi 搜索解碼技術,結合前端處理、聲學與語言模型,設計了面向漢字的智能語音交互算法。該算法主要側重于語音識別的關鍵詞檢測,并在交互平臺上進行整合測試。測試結果表明,該算法具有一定的實用價值。
語音識別系統(tǒng)通常包括語音輸入、信號處理、信號解碼以及文本輸出4大部分,如圖1所示。
圖1 語音識別過程框架示意圖
語音輸入主要是通過麥克風采集原始的語音信號,通過語音信號處理提取語音的特征,然后使用聲學、語言模型進一步進行建模處理、概率計算和結果輸出[9-10]。
語音信號處理主要用于加工實際音頻信號,去除次要部分,從而提高后續(xù)處理的質量與效率[11]。首先,采用端點檢測來確定收集到的實際語音有效信號的頭尾,即排除靜音段和頭尾部無用段,以此降低誤判的可能,從而提高語音識別的性能。由于短時平均過零率Zn與短時能量En通常是語音信號的時域特征,所以文中選用上述時域特征的結合算法,對原始語音信號的端點進行檢測。
然后采用預加重提高語音信號的高頻部分。由于音頻信號的高頻部分能量少,直接傳輸會造成音頻信號高頻傳輸衰弱,因而需要預加重來提高音頻的高頻部分,從而彌補口唇輻射與聲門激勵的倍頻跌落影響(6 dB/倍頻),得到較為平坦的語音信號頻譜。采用一階高通濾波傳遞函數(shù):
其中,a為預加重系數(shù),且0.9<a<1.0。
聲學特征參數(shù)如能量、頻率等主要用于描述語音信號的特性及變化情況,通常為隨時間變化的函數(shù)。提取聲學特征參數(shù)主要有基于線性預估系數(shù)轉換的倒頻譜、感知線性預測和梅爾頻率倒譜參數(shù),也是文中選用動態(tài)幀長分析法提取的參數(shù)(24 維,由1 階差分與前12 階參數(shù)構成)[12]。
聲學模型主要有:1)HMM 隱馬爾科夫模型,即統(tǒng)計模型,表現(xiàn)出雙重隨機過程,可用于描述非平穩(wěn)信號中出現(xiàn)的短時平穩(wěn)段和短時平穩(wěn)段之間的動態(tài)特性;2)GMM 混合高斯模型,為常用的統(tǒng)計模型,由K個單高斯模型分量線性相加構成;3)SGMM 子空間混合高斯模型。
語言模型用于對自然語言的結構和統(tǒng)計中存在的內在規(guī)律進行描述,在連續(xù)語音識別中尤其是在大詞匯的情況下發(fā)揮著重要作用。該模型對候選序列能夠起到聲學特征的輔助決策作用,這在很大程度上能夠降低搜索空間,從而提高搜索效率。語言模型主要分為基于文法(根據(jù)文法規(guī)則建立,包括正則文法與上下文無關文法)或基于統(tǒng)計(對文本資料中詞匯的出現(xiàn)概率進行統(tǒng)計,通常與聲學模型相結合,從而有效提高識別準確率)的語言模型[13]。文中選用的是基于統(tǒng)計的語言模型,具體為N-gram 語言模型。
搜索解碼主要用于在搜索空間中找到最佳的匹配結果,是語音交互算法的核心所在。
搜索解碼主要有Viterbi 和A*算法,文中選用Viterbi 搜索解碼算法設計智能語音交互算法[14],其具有典型的動態(tài)規(guī)劃特性,能夠對觀察序列(長度為T)的最佳狀態(tài)序列進行搜索與查找。此外,該算法實質上為遞歸算法,其最優(yōu)解不會丟失,并可以較好地規(guī)避最優(yōu)狀態(tài)序列與聲學觀測序列間常出現(xiàn)的時間對準問題。圖2 為Viterbi 搜索解碼算法的一般過程示意圖。
圖2 Viterbi搜索解碼算法的一般過程示意圖
其步驟可描述為:對狀態(tài)1 進行初始化,如式(2)所示;遞歸,得到式(3)、(4);對最佳狀態(tài)進行搜索,得到式(5),S*與P*分別代表最佳狀態(tài)序列和最佳分數(shù);回溯路徑如式(6)所示。
在語音識別過程中多次使用了搜索策略,通過知識源、語言/聲學模型的高效循環(huán)使用,提高語音識別率。通常多次搜索的中間結果形式為Lattice 網格、N-Best 列表及混淆網絡[15-16]。
圖3 為文中語音識別過程的框架示意圖。將采集到的語音輸入到連續(xù)語音識別器中,產生Lattice網格或N-Best 詞格(存儲為文本格式),借助關鍵詞搜索器(基于關鍵詞搜索算法)輸出候選關鍵詞。再經置信度和關鍵詞確認,輸出關鍵詞。
圖3 語音識別過程的框架示意圖
根據(jù)式(1),在預處理過程中將預加重系數(shù)選取為0.95;借助漢明窗進一步進行分幀處理(每幀定為20 s,幀移定為15 ms),從而得到上述3 種聲學特征參數(shù)。
在預處理結束后的聲學模型訓練中,文中選用HMM-SGMM-UBM 模型作為聲學模型對預處理后的語音信號進行訓練。由于其算法面向的是大詞匯量的漢語,因此選取聲韻母基元作為基本的語音基元。
在語音模型的訓練中,文中選用清華大學漢語庫中的基于詞的三元語音模型。該語音模型具備48 k 個字,總共包括772 000 句,總字數(shù)為1.15 億,總詞量為1 800 萬,由SRILM 工具訓練得到。
在最佳路徑搜索中,文中利用Viterbi Beam 搜索解碼算法得到音節(jié)與詞網格。Viterbi Beam 算法能夠按照一定的規(guī)則裁剪路徑,使得搜索計算量大幅度減少,從而避免經典的Viterbi 搜索解碼算法由于考慮所有路徑而造成的計算量巨大的問題。其搜索步驟依次為:
1)路徑初始化;
2)遞推過程,為嵌套循環(huán):
3)終止并確定路徑。
值得注意的是,裁剪路徑會根據(jù)實時情況忽略得分較低或可能性較低的路徑,其標準為各路徑與最優(yōu)路徑的得分差是否大于設定閾值。
Lattice 網格由式(7)進行定義,其各邊對應音節(jié)或詞候選,包含了語言學與聲學信息,如圖4 所示(以語句“上海的工人師傅克服困難”為例)。
圖4 詞Lattice網格結構圖
其中,P與S分別代表了全部節(jié)點和有向邊的集合;pstart與pend分別代表了唯一起始和結束節(jié)點。
每一條邊又可用式(8)進行表示:
其中,S(a)、E[a]分別代表了邊a的起始與結束節(jié)點;I(a)為候選標識;lk(a)為權重。由語言模型得分(lm[a])和聲學模型得分acc[a]加上權重系數(shù)λtm(λtm>0)計算得到[17-18],如式(9)所示。
由于令牌傳遞算法具有查找關鍵詞效率高、計算存儲空間要求低的特點,文中選用該算法作為語音識別的關鍵詞搜索算法,對關鍵詞候選項進行逐步生成。
具體而言,關鍵詞搜索的步驟為:
1)對長度為N的關鍵詞進行搜索,起始于拼音格中的第一個音節(jié)節(jié)點w’,在達到某個音節(jié)節(jié)點Pt時的時刻記為t。若關鍵詞W’與Pt的相似度超過了設定閾值,則輸出候選Token。若前向節(jié)點此時已存在有激活的Token,則將該Token 復制到節(jié)點Pt,此時的候選音節(jié)串(長度為l)可表示為P=p1p2…pt;若l<[N+α·N],則對該Token 進行保留,以供后續(xù)擴展;若l=[N+α·N],則對相似度進行計算;若相似度并未超過設定閾值,則將該Token 刪除,否則記錄關鍵詞信息并刪除該Token。
2)若搜索過程已到達Lattice 尾部,則停止搜索,并將殘留的Token 刪除,最終可得到一個關鍵詞候選序列。
由于關鍵詞檢測通常存在替代與插入現(xiàn)象,因此需要對常規(guī)的置信度算法進行改進。式(10)即為文中改進置信度算法引入的最小編輯距離字符串相似度函數(shù):
其中,λ1(i=1,2,3,4)表示的是一個常數(shù),Plat與Length(W)分別代表的是候選關鍵詞W的后驗概率得分和音節(jié)個數(shù),Pmed表示的是音節(jié)串相似度。
同一語音段通常存在較多的候選關鍵詞,因此文中引入兩類關鍵詞輸出規(guī)則解決該問題,從而確定一個關鍵詞的假象命中:
1)不限制關鍵詞在語音段的數(shù)量與位置;
2)必須選擇最優(yōu)候選關鍵詞作為假象的唯一有效命中而輸出。
通常,針對語音識別輸出的候選關鍵詞,若在一定時間內與實際關鍵詞相同,則表明檢測正確;否則,表明檢測失敗。進一步,文中使用查準率(正確識別數(shù)/檢測總數(shù))、召回率(正確識別數(shù)/參考總數(shù))和誤識率(錯誤識別數(shù)/參考總數(shù))對語音識別進行評價。
該文的硬件部分為Intel Core i7 9700k CPU,32 GB 內存與2 T 硬盤的服務器,安裝的系統(tǒng)為Centos 7,使用的軟件為Kaldi 工具(基于C++),編寫程序的腳本為Python、Perl與Shell。
該文的智能語音交互的語音識別實現(xiàn)界面如圖5 所示。其包括批量關鍵詞搜索和錄音交互兩個部分,支持關鍵詞檢測、創(chuàng)建現(xiàn)場錄音及錄音的保存與顯示。
圖5 文中語音識別的交互實現(xiàn)界面圖
在對關鍵詞詞表進行預置后,通過“選擇文件”按鈕可對待檢語音文件進行選取與顯示;通過“執(zhí)行檢測”按鈕可開始檢測選中的語音文件,其運行結果在檢測結果窗口輸出。圖6 為3 條語句的檢測結果??梢钥闯?,檢測出的關鍵詞總共耗時21.34 s。
圖6 該文語音識別的運行結果界面圖
此外,該文的智能語音交互還可以實現(xiàn)測試集的整體導入與檢測,導入的所有文件列表、檢測結果和性能統(tǒng)計將在界面上顯示;若已含有測試集標注文件,還可輸出查準率、召回率與誤識率,如圖7所示。
圖7 測試集整體檢測和結果輸出界面圖
經過多次、長期的測試,該智能語音交互的關鍵詞語音識別效果較好,查準率能夠穩(wěn)定維持在90%以上,召回率也能穩(wěn)定維持在95%以上,誤識率一般低于13%,可以為相關智能語音交互算法設計提供借鑒和參考。
由于人類交流通常只需要通過幾個關鍵詞即可正確推斷出談話的核心內容,而不需要對連續(xù)語音進行辨析和識別。文中基于Viterbi 搜索解碼技術,結合前端處理(語音信號)、聲學和語言模型,設計了面向漢字關鍵詞的智能語音交互算法。該算法依次通過連續(xù)語音識別器、關鍵詞搜索器、置信度確認、關鍵詞確認等過程實現(xiàn)對語音中關鍵詞的搜索。經過人機交互軟件的載入和測試,表明文中的算法具有較高的查準率、召回率和較低的誤識率。