馮 濤 何治斌 張永成
(大連海事大學(xué)船舶動態(tài)仿真與控制國家重點實驗室 遼寧 大連 116026)
輪機模擬器是能夠模擬船舶機艙中設(shè)備操作的系統(tǒng),能夠體現(xiàn)船舶機艙中的實際操作情況。在一定程度上能夠克服實際中存在的缺陷,進行針對性的操作訓(xùn)練。近些年在STCW公約馬尼拉修正案的標(biāo)準(zhǔn)約束下,輪機模擬器的交互方式也一直在發(fā)生著變化[1],而在傳統(tǒng)模擬器的實際操作中仍然存在著操作者的分工職能無法體現(xiàn)的缺陷[2],并且在VR技術(shù)應(yīng)用于虛擬船舶機艙后,傳統(tǒng)的交互方式會破壞仿真環(huán)境下的沉浸感。語音識別技術(shù)的應(yīng)用能夠在一定程度上解決這個問題,在訓(xùn)練操作中如果出現(xiàn)超出操作者的職能范圍的操作,可以使用語音交互的方式對模擬器發(fā)出指令,來模擬合作者的身份,從而更好地體現(xiàn)分工合作的目的。在應(yīng)用了VR技術(shù)后的虛擬船舶機艙中,語音識別可以使操作者擺脫鍵盤與鼠標(biāo)的復(fù)雜交互方式,在虛擬船舶機艙中的交互更加便捷[3]。本實驗工作主要分為兩個部分:搭建語音識別系統(tǒng);展示基于語音交互的發(fā)電機操作。
語音識別系統(tǒng)的任務(wù)是在輸入為音頻信號的情況下,輸出最可能的詞序列。搭建語音識別系統(tǒng)的核心工作是構(gòu)建由語音特征矢量至模型詞序列之間的關(guān)系[4]。語音識別的原理可以用以下公式簡單概括:
可以看出,ASR(Automatic Speech Recognition)的概率模型分為P(Y|w)和P(w)兩個部分,其中:P(Y|w)表示在詞序列w一定的情況下獲得音頻信號Y的概率;P(w)表示在所有的字詞所組成的語句中,詞序列w的概率。前者在語音識別系統(tǒng)中通常被稱為聲學(xué)模型(Acoustic Model,AM),后者被稱為語言模型(Language Model,LM)。由式(2)可以看出語言模型和聲學(xué)模型對語音識別的結(jié)果至關(guān)重要,因此搭建語音識別系統(tǒng)的主要工作即在于對語言模型和聲學(xué)模型的建模[5]。語音識別系統(tǒng)的基本架構(gòu)如圖1所示。
圖1 ASR架構(gòu)
1.2.1語音信號處理與特征提取
處理語音信號并提取特征是訓(xùn)練聲學(xué)模型的準(zhǔn)備工作。通過設(shè)備采集到的音頻有低頻段信號能量小、信號不平穩(wěn)等問題,需要進行信號數(shù)字化、預(yù)加重、加窗分幀等處理。本實驗提取語音信號的梅爾頻率倒譜系數(shù)(Mel-Frequency Cepstral Coefficients,MFCC)作為聲學(xué)模型訓(xùn)練的聲學(xué)特征[6]。MFCC的特征提取流程如圖2所示。
圖2 MFCC提取流程
在提取特征的流程中,為了提高信號高頻部分的能量,使高頻信號共振峰更加明顯,對采集到的語音信號首先進行預(yù)加重。預(yù)加重濾波器為一階高通濾波器。給定時域輸入信號x(n),則預(yù)加重之后的信號可以表示為:
y(n)=x(n)-α(n-1) 0.9≤α≤1.0
(3)
由于語音信號為非平穩(wěn)信號且具有短時平穩(wěn)的特性,因此,對預(yù)加重后的語音信號進行分幀加窗來獲取短時平穩(wěn)的語音信號。具體操作為在時域上使用窗函數(shù)與原始信號進行相乘,可由式(4)表示。
y(n)=ω(n)x(n)
(4)
式中:x(n)為輸入信號;ω(n)為窗函數(shù);y(n)為加窗語音信號。窗函數(shù)的選取中較為常用的有:
對加窗分幀后的語音信號使用離散傅里葉變換,將時域信號變換到頻域,并取離散傅里葉變換系數(shù)的模,得到譜特征。對獲取的譜特征使用梅爾濾波器組進行濾波,然后對濾波后的結(jié)果取對數(shù)并進行離散余弦變換,獲取MFCC,這一過程的計算可表示為:
(7)
式中:M為梅爾濾波器組的個數(shù);s(m)表示第m個濾波器的輸出;L為MFCC的階數(shù)。
為了使聲學(xué)模型在輪機模擬器的指令識別中表現(xiàn)得更好,采集輪機領(lǐng)域相關(guān)的音頻作為聲學(xué)模型的訓(xùn)練語料,以80%、10%、10%的比例將數(shù)據(jù)劃分,分別用于對聲學(xué)模型的訓(xùn)練、測試與開發(fā)。具體提取過程分為以下幾個步驟:
(1) 將語音信號通過高通濾波器進行預(yù)加重。
(2) 對預(yù)加重后的語音信號進行加窗分幀,使用漢明窗,幀長為25 ms,幀移為10 ms。
(3) 對分幀后的每一幀信號做離散傅里葉變換,將信號從時域變換至頻域,并計算功率譜。
(4) 使用梅爾濾波器組對功率譜進行濾波,提取每個濾波器內(nèi)的對數(shù)能量。
(5) 對對數(shù)能量進行離散余弦變換,輸出12維原始MFCC。
(6) 計算原始MFCC的一階差分與二階差分、訊框能量、訊框能量的一階差分與二階差分,共計39維,作為生成聲學(xué)模型的MFCC特征。圖3為“啟動預(yù)潤滑油泵”的MFCC語譜圖展示。
圖3 “啟動預(yù)潤滑油泵”的MFCC語譜圖
1.2.2聲學(xué)模型訓(xùn)練
本次實驗采用混合高斯隱馬爾可夫模型(Gaussianof Mixture Hidden Markov Model)對聲學(xué)模型進行建模。其中,HMM(Hidden Markov Model)用于對聲學(xué)特征序列進行建模,HMM是一種雙重隨機過程的概率模型,通過對有限個狀態(tài)之間的轉(zhuǎn)換概率進行建模來描述語音信號特征[7]。GMM(Gaussian of Mixture)用于對HMM中的每個狀態(tài)的輸出概率進行建模。GMM-HMM聲學(xué)模型的示意圖如圖4所示,其中:Si表示HMM的狀態(tài)序列;Oi表示觀測序列,在語音識別中表現(xiàn)為MFCC特征向量;aij表示從狀態(tài)i跳轉(zhuǎn)至狀態(tài)j的轉(zhuǎn)移概率;bi(Ot)表示由狀態(tài)Si輸出觀測Ot的概率。圖4中語音信號表示的語句為“出口截止閥打開”。
圖4 GMM-HMM聲學(xué)模型示意圖
聲學(xué)模型的訓(xùn)練可表示為在已知觀測序列O=(o1,o2,…,oT)的情況下,估計模型λ使得P(O|λ)最大。使用Baum-Welch學(xué)習(xí)算法對GMM-HMM模型進行訓(xùn)練,其具體步驟如下:
(1) 初始化GMM-HMM參數(shù)。
(2) E步(count):估計狀態(tài)占用概率γ,即給定模型γ與觀測O,在時刻t處于狀態(tài)Si的概率,表示為:
γt(i)=P(it=Si|O,λ)
(8)
(3) M步(normalize):基于估計的狀態(tài)占用概率,最大化期望,重新估計GMM-HMM的參數(shù)。
(4) 重復(fù)步驟(2)和步驟(3)直至收斂。
聲學(xué)模型的訓(xùn)練在Kaldi平臺中實現(xiàn),其部分展示如圖5所示。
圖5 聲學(xué)模型片段
1.3.1語料收集與處理
語言模型是一種數(shù)學(xué)模型,用來描述語言之間的規(guī)律,決定了語音識別的輸出結(jié)果是否符合語言邏輯。特定的語言模型能夠使語音識別系統(tǒng)在其所使用的領(lǐng)域中識別更準(zhǔn)確。因此,本實驗從中國船務(wù)周刊、現(xiàn)代漢語語料庫等報刊與語料庫中選取輪機領(lǐng)域相關(guān)語料72 910句,并結(jié)合清華大學(xué)開源語料庫THCHS30,共計844 100句,作為本實驗訓(xùn)練語言模型的語料。對收集到的生語料使用ICTCLAS工具進行分詞,將不同詞性的詞語進行劃分,并對句子起始使用進行標(biāo)注。語料庫部分如圖6所示。
圖6 語料庫片段
1.3.2語言模型生成
語言模型的基本類型分為基于文法規(guī)則的語言模型和基于統(tǒng)計的語言模型兩種?;谖姆ㄒ?guī)則的語言模型需要設(shè)立文法規(guī)則并對不同文法使用不同模型,工作量大且無法覆蓋所有的語言詞句之間的組合?;诮y(tǒng)計的語言模型能夠使用統(tǒng)計的方法來處理語句之間的前后關(guān)系,在處理大型數(shù)據(jù)時較基于文法的語言模型更快速準(zhǔn)確[8]。為實現(xiàn)大詞匯量的連續(xù)語音識別,本實驗采用基于統(tǒng)計的方法對語言模型進行建模。統(tǒng)計語言模型是在提供的語料庫中的所有詞序列上的一個概率分布,包含有限集合V與函數(shù)P(x1,x2,…,xn),且滿足以下條件:
對于任意
(9)
本實驗使用統(tǒng)計語言模型中的N-gram語言模型作為系統(tǒng)使用的語言模型,也可以稱為N元語言模型。N-gram所表示的含義為使用前N-1個詞作為歷史來估計第N個詞(當(dāng)前詞)。一句由n個詞組成的句子S可以表示為:
式中:wi表示第i個詞。N-gram語言模型可以表示為:
使用SRILM工具訓(xùn)練并測試語言模型。建立語言模型的步驟分為統(tǒng)計詞頻、生成語言模型、計算困惑度三個步驟。困惑度(Perplexity,ppl)是用來評價一個語言模型性能的指標(biāo),合乎邏輯的詞序列出現(xiàn)概率與其困惑度成反比。在測試集W=w1w2…wN中,語言模型的困惑度可以表示如下:
為了得到性能更優(yōu)的語言模型,分別對基于Uni-gram、Bi-gram和Tri-gram的語言模型進行建模并對比三者困惑度。實驗結(jié)果如表1所示。
表1 三種語言模型的困惑度對比
在對語言模型進行測試的過程中,出現(xiàn)許多頻率為零的詞序列,這是由語料的稀疏性(sparse data)導(dǎo)致的。為了解決語言模型中出現(xiàn)的這一問題,通常使用平滑算法(Smoothing)處理語言模型,其主要思想是將一部分出現(xiàn)的詞序列概率分給未出現(xiàn)的詞序列。本次實驗采用Kneser-Ney平滑算法對語言模型進行處理。
Kneser-Ney平滑算法的基本思想為絕對折扣(absolute discounting)[9],并在此基礎(chǔ)上將絕對折扣與接續(xù)概率(continuation probability)進行插值,從而達(dá)到對語言模型進行平滑處理的效果。絕對折扣的具體操作是將語言模型中詞頻的統(tǒng)計計數(shù)直接減去一個數(shù)值,作為調(diào)整計數(shù)使用,減去的這個數(shù)值被稱作折扣系數(shù)。以Bi-gram為例,絕對折扣算法可以表示如下:
(14)
式中:wi為第i個詞;C(wi)為wi出現(xiàn)的次數(shù);α(wi)為歸一化系數(shù);D為折扣系數(shù)。
接續(xù)概率描述了當(dāng)給定詞序列w1w2…wi-1后,下一個詞為wi概率。當(dāng)一個詞在語料庫中出現(xiàn)更多種不同上下文時,其接續(xù)概率就更大。接續(xù)概率定義可以表示如下:
Kneser-Ney平滑算法將絕對折扣算法與接續(xù)概率結(jié)合并進行插值。以Bi-gram為例,可將Kneser-Ney算法表示如下:
(16)
經(jīng)過Kneser-Ney平滑算法處理后,將語言模型以ARPA Format形式存儲。ARPA Format是N-gram的標(biāo)準(zhǔn)儲存模式,列舉了所有非零的N元語法概率。每個語法條目中從左至右依次為:折扣后對數(shù)概率、詞序列和回退權(quán)重。圖7為生成的語言模型片段。
圖7 語言模型片段
在完成聲學(xué)模型和語言模型的建模后,使用基于OnlineFasterDecoder的解碼器進行解碼,用以測試語音識別系統(tǒng)。為了驗證使用Kneser-Ney平滑算法處理過語言模型的語音識別系統(tǒng)的性能,使用未處理過語言模型的語音識別系統(tǒng)作為實驗對照組。由癱船啟動的流程操作指令構(gòu)成測試使用的待識別語言,讓8個測試者對兩個語音識別系統(tǒng)各進行30次語音識別測試實驗。實驗結(jié)果如表2和表3所示。
表2 未使用平滑算法的語音識別系統(tǒng)測試結(jié)果
表3 使用Kneser-Ney平滑算法的語音識別系統(tǒng)測試結(jié)果
由實驗結(jié)果可以看出,在使用Kneser-Ney平滑算法處理語言模型后的語音識別系統(tǒng)中,測試平均識別準(zhǔn)確率較未使用平滑算法的語音識別系統(tǒng)準(zhǔn)確率提升20.4百分點,證明了Kneser-Ney平滑算法的有效性。處理后的語音識別系統(tǒng)的識別準(zhǔn)確率可以滿足在輪機模擬器中對輪機設(shè)備日常操作的使用需求。該語音識別系統(tǒng)的構(gòu)建也為語音識別系統(tǒng)應(yīng)用于船舶機艙或無人船中打下了基礎(chǔ)。
為了在現(xiàn)有輪機模擬器中展示語音交互的效果,使用訊飛SDK提供的接口進行封裝調(diào)用,完成語音合成功能。在Windows平臺下設(shè)計船舶發(fā)電機啟動的語音交互流程。交互流程如下:
(1) 啟動語音識別程序,語音識別系統(tǒng)進入監(jiān)聽狀態(tài),如圖8所示。
圖8 發(fā)電機關(guān)閉狀態(tài)
(2) 通過麥克風(fēng)講話,識別指令“啟動預(yù)潤滑油泵”,輪機模擬器啟動預(yù)潤滑油泵并通過語音播報“預(yù)潤滑油泵已開啟”。
(3) 識別“啟動輕油泵”指令,輪機模擬器啟動輕油泵并播報“輕油泵已啟動”。
(4) 識別“打開空氣截止閥”指令,輪機模擬器打開空氣截止閥并播報“空氣截止閥已打開”。
(5) 識別“啟動發(fā)電機”指令,輪機模擬器啟動發(fā)電機并播報“發(fā)電機已啟動”,如圖9所示。
圖9 發(fā)電機啟動狀態(tài)
通過測試表明,該交互系統(tǒng)表現(xiàn)良好,識別率高,行動執(zhí)行準(zhǔn)確。
作為最自然的交互方式,語音識別在智能家居的語音控制系統(tǒng)以及車載語音識別系統(tǒng)中已經(jīng)十分成熟,但在輪機模擬器以及船舶機艙仿真中卻仍未有人實踐。語音識別在輪機模擬器中的應(yīng)用不僅可以減少對輪機員培訓(xùn)時的人力消耗,并且可以提升輪機員操作體驗。本實驗通過對語音信號的特征提取、聲學(xué)模型的建模、多元語言模型的對比實驗,最終完成用于輪機模擬器的語音識別系統(tǒng),并在輪機模擬器的發(fā)電機操作上應(yīng)用語音交互系統(tǒng)。實驗表明語音識別系統(tǒng)的識別率能夠滿足應(yīng)用,解決了在培訓(xùn)輪機員時一人身兼多職和在虛擬環(huán)境下的交互問題,為在實際船舶機艙與無人船中應(yīng)用語音識別打下了基礎(chǔ),對船舶輪機仿真系統(tǒng)的智能化具有促進意義。