劉鵬輝,房建東
(內(nèi)蒙古工業(yè)大學(xué)內(nèi)蒙古呼和浩特010080)
近年來(lái),語(yǔ)音識(shí)別理論研究飛速發(fā)展,其相應(yīng)的現(xiàn)實(shí)應(yīng)用大大提高了人們的工作效率和生活質(zhì)量[1]。語(yǔ)音技術(shù)的廣泛應(yīng)用是移動(dòng)互聯(lián)網(wǎng)條件下各種平臺(tái)的核心應(yīng)用,在微信公開平臺(tái)催生的語(yǔ)音生態(tài)圈情況下,抓住這一機(jī)遇,以用戶需求為導(dǎo)向,將語(yǔ)音應(yīng)用在更加廣闊的應(yīng)用中,催生更多更好的應(yīng)用場(chǎng)景。語(yǔ)音模式識(shí)別分為兩種情況,一種是實(shí)時(shí)語(yǔ)義轉(zhuǎn)化為文字,另一種是將語(yǔ)音命令識(shí)別出來(lái),去執(zhí)行指令內(nèi)容,控制關(guān)聯(lián)載體。本文以語(yǔ)音感知識(shí)別為理論基礎(chǔ),通過(guò)與模式識(shí)別相結(jié)合的方式將其應(yīng)用到家居照明系統(tǒng)控制領(lǐng)域,實(shí)現(xiàn)對(duì)特定語(yǔ)音信號(hào)自動(dòng)識(shí)別,并且自動(dòng)關(guān)聯(lián)照明模擬圖像效果,通過(guò)仿真實(shí)驗(yàn)論證了方法的可靠性及正確性。
語(yǔ)音識(shí)別算法有很多種,DTW是一種小詞匯量,孤立詞語(yǔ)音識(shí)別的相對(duì)成熟,它是把時(shí)間規(guī)整和間距量計(jì)算連接在一起的非線性動(dòng)態(tài)規(guī)劃算法,相對(duì)比較簡(jiǎn)單而且有效[2]。本文以語(yǔ)音感知識(shí)別為基礎(chǔ),通過(guò)與模式識(shí)別相結(jié)合的方式將其應(yīng)用到家居照明的模擬控制領(lǐng)域,實(shí)現(xiàn)對(duì)語(yǔ)音信號(hào)進(jìn)行識(shí)別并自動(dòng)控制照明系統(tǒng),具有一定的使用價(jià)值。
Matlab GUI界面的設(shè)計(jì)方法有兩種,一是直接編寫.m文件來(lái)開發(fā)整個(gè)GUI;二是通過(guò)Matlab圖形用戶界面開發(fā)環(huán)境duide命令來(lái)形成相應(yīng)文件。guide為用戶提供了一個(gè)方便高效的集成環(huán)境,使用guide創(chuàng)建GUI時(shí),可以將設(shè)計(jì)好的GUI界面保存為一個(gè)fig資源文件,同時(shí)自動(dòng)生成對(duì)應(yīng)的.m文件。該.m文件包含了GUI的初始化代碼和組建界面布局的控制代碼。由于這種方法比較直觀,且在.m文件的管理和程序代碼的修改上也比較方便[3],因此本文采用第二種方式完成界面設(shè)計(jì)。
本文以Matlab2014a作為實(shí)驗(yàn)環(huán)境,設(shè)計(jì)圖形用戶界面GUI,可以實(shí)現(xiàn)語(yǔ)音信號(hào)的讀取、MFCC特征參數(shù)的提取、音頻文件的播放、模擬照明等通用功能,界面美觀,易于拓展,可以作為語(yǔ)音感知的照明控制系統(tǒng)的初始工具。
GUI設(shè)計(jì)模塊分為信號(hào)顯示模塊、操作流程控制面板模塊、識(shí)別結(jié)果輸出模塊、模擬燈光展示平臺(tái)模塊、退出模塊等,用于實(shí)現(xiàn)對(duì)語(yǔ)音信號(hào)的顯示、處理、識(shí)別、操作及說(shuō)明等功能。這些操作分別通過(guò)文件、錯(cuò)誤提醒的方式進(jìn)行顯示,同時(shí)給出下一步該操作的提醒。通過(guò)對(duì)語(yǔ)音庫(kù)及特征參數(shù)的提取來(lái)建立已知知識(shí)庫(kù)(也稱為參考模板),通過(guò)選擇音頻文件和播放音頻文件來(lái)控制音頻信號(hào)的獲??;通過(guò)文本輸出和模擬燈光顯示以及播放音頻文件的操作來(lái)執(zhí)行模式匹配,進(jìn)而驗(yàn)證其識(shí)別的準(zhǔn)確性。
基于以上功能,設(shè)計(jì)Matlab GUI軟件界面架構(gòu)圖如圖1所示。
圖1 軟件界面設(shè)計(jì)架構(gòu)圖
語(yǔ)音識(shí)別就是讓機(jī)器通過(guò)識(shí)別和理解過(guò)程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高技術(shù),也就是讓機(jī)器聽懂人類的語(yǔ)音[4]。語(yǔ)音識(shí)別的原理框圖如圖2所示。
圖2 語(yǔ)音識(shí)別原理框圖
將提取的語(yǔ)音特征序列經(jīng)過(guò)特定訓(xùn)練產(chǎn)生語(yǔ)音參考模板,形成供識(shí)別的參考模型庫(kù);語(yǔ)音識(shí)別包括對(duì)聲音的起始點(diǎn)、結(jié)束點(diǎn)判斷和處理,對(duì)一些控制命令語(yǔ)義的理解。在整個(gè)系統(tǒng)開發(fā)中,語(yǔ)音識(shí)別是最關(guān)鍵的,需要建立模板庫(kù)。語(yǔ)音庫(kù)的建立是在實(shí)驗(yàn)室安靜環(huán)境下,分別請(qǐng)2名同學(xué)在一定時(shí)間內(nèi)錄制‘離家模式'、‘睡覺(jué)模式'、‘開客廳燈'、‘開臥室燈'、‘關(guān)客廳燈'、‘關(guān)臥室燈'6種語(yǔ)音。目前每種語(yǔ)音進(jìn)行6次錄制,其中5次用來(lái)訓(xùn)練,1次用來(lái)測(cè)試,即構(gòu)成了60條的語(yǔ)音信號(hào)的語(yǔ)音庫(kù),由于可用的語(yǔ)音信息只占整個(gè)語(yǔ)音信號(hào)的一部分,所以需要對(duì)60條語(yǔ)音遍歷進(jìn)行預(yù)處理、MFCC特征提取、訓(xùn)練,從而構(gòu)成語(yǔ)音庫(kù)。這樣可以提高識(shí)別率和識(shí)別速率。
由于原始語(yǔ)音信號(hào)一般不能滿足實(shí)際需要,處理起來(lái)很復(fù)雜或者根本無(wú)法處理,所以在進(jìn)行語(yǔ)音識(shí)別之前都要對(duì)原始語(yǔ)音信號(hào)進(jìn)行預(yù)處理[5]。預(yù)處理是通過(guò)一些環(huán)節(jié)得到有用的語(yǔ)音信號(hào),例如預(yù)加重、加窗分幀、端點(diǎn)檢測(cè)等;
1)預(yù)加重:預(yù)加重是通過(guò)提升語(yǔ)音的高頻部分,將其進(jìn)行加重,增加語(yǔ)音高頻分辨率。具體是將語(yǔ)音信號(hào)通過(guò)一階濾波器實(shí)現(xiàn),本文采用傳遞函數(shù)為H(z)=1-0.975z-1的一階FIR高通數(shù)字濾波器來(lái)實(shí)現(xiàn)預(yù)加重。
2)加窗分幀:語(yǔ)音信號(hào)可認(rèn)為是短時(shí)平穩(wěn)的,所以需要將其作分幀處理。本文采取漢明窗對(duì)語(yǔ)音信號(hào)進(jìn)行分幀。
3)端點(diǎn)檢測(cè):端點(diǎn)檢測(cè)就是找到語(yǔ)音信號(hào)的起點(diǎn)與終點(diǎn),減少真實(shí)數(shù)據(jù)的處理量,縮短處理時(shí)間,提高識(shí)別效率。本文采用基于特征的雙門限檢測(cè)法,即利用語(yǔ)音信號(hào)的短時(shí)能量與短時(shí)過(guò)零率聯(lián)合檢測(cè)。在Matlab中對(duì)語(yǔ)音“離家模式”端點(diǎn)檢測(cè)進(jìn)行繪制[6],結(jié)果如圖3所示。
圖3 截取真正的語(yǔ)音信號(hào)
特征提取是從有用的語(yǔ)音信號(hào)中提取出隨時(shí)間變化的特征序列來(lái)表征語(yǔ)音信號(hào)。本文選擇Mel頻率倒譜系數(shù)(MFCC)作為其特征參數(shù)進(jìn)行訓(xùn)練與識(shí)別。因?yàn)镸FCC參數(shù)比較充分的利用人耳這種特殊的感知特性提取語(yǔ)音信號(hào)的特征參數(shù),并且有較高的識(shí)別率[7]。
Mel頻率倒譜系數(shù)(MFCC)考慮到了人類的聽覺(jué)特征,先將線性頻譜映射到基于聽覺(jué)感知的Mel非線性頻譜上,然后再轉(zhuǎn)換到倒譜上[8]。提取MFCC的過(guò)程[8]:
1)對(duì)原始語(yǔ)音信號(hào)進(jìn)行預(yù)加重、分幀、加窗;
2)對(duì)每一幀短時(shí)信號(hào),通過(guò)FFT變換得到對(duì)應(yīng)的頻譜;
3)對(duì)每一幀的頻譜分別通過(guò)24階Mel濾波器組得到Mel頻譜;
4)計(jì)算每個(gè)濾波器組輸出的對(duì)數(shù)能量;
5)對(duì)Mel頻譜進(jìn)行倒譜計(jì)算,具體是:取對(duì)數(shù),做逆變換,一般是通過(guò)DCT離散余弦變換,取DCT后的第二個(gè)到第13個(gè)系數(shù)作為MFCC,獲得特征系數(shù)MFCC。具體流程圖如圖4所示。
圖4 MFCC特征向量提取流程
MFCC模仿了人耳特殊的非線性感知特性參數(shù),它與線性頻率的轉(zhuǎn)換關(guān)系為[9]:
本文采用的是12階標(biāo)準(zhǔn)MFCC參數(shù)作為特征參數(shù)。
在構(gòu)建完成語(yǔ)音庫(kù)后,對(duì)每一個(gè)語(yǔ)音提取MFCC特征參數(shù),然后進(jìn)行訓(xùn)練,訓(xùn)練過(guò)程中,將MFCC特征向量存入S.mat中,方便進(jìn)行匹配。
語(yǔ)音識(shí)別過(guò)程實(shí)際上是一個(gè)模式匹配的過(guò)程。模式匹配是指在識(shí)別時(shí)將未知的語(yǔ)音特征序列同參考模板庫(kù)進(jìn)行匹配和比較,計(jì)算出它們之間的匹配程度,具體算法見章節(jié)3。
軟件算法主要采用動(dòng)態(tài)時(shí)間規(guī)整DTW算法,實(shí)現(xiàn)的功能有原始語(yǔ)音數(shù)據(jù)的提取、預(yù)處理、特征參數(shù)提取、訓(xùn)練以及語(yǔ)音識(shí)別,軟件算法設(shè)計(jì)架構(gòu)圖如圖5所示。
圖5 軟件算法設(shè)計(jì)架構(gòu)圖
為匹配之前錄制好的60條種訓(xùn)練集的MFCC特征向量,我們采用DTW算法進(jìn)行匹配,DTW是基于動(dòng)態(tài)規(guī)劃(DP)的算法來(lái)實(shí)現(xiàn)的,成功解決了發(fā)音長(zhǎng)短不一的問(wèn)題[10-11]。DTW使用所有這些相似點(diǎn)之間的距離的和,稱之為歸整路徑距離來(lái)衡量?jī)蓚€(gè)時(shí)間序列之間的相似性,DTW算法的訓(xùn)練中幾乎不需要額外的計(jì)算[12]。DTW算法要求參考模板與測(cè)試模板采用相同類型的特征向量、相同的幀長(zhǎng)、相同的窗函數(shù)和相同的幀移[13]。
為了將兩條語(yǔ)音序列匹配,需要計(jì)算兩條語(yǔ)音序列中各幀的匹配程度[14]。參考模板表示為{R(1),R(m),…,R(M)} ,測(cè)試模板表示為T(1),T(n),…,{T(N)}(n,m表示語(yǔ)音幀的時(shí)序標(biāo)號(hào),n=m=1表示起始語(yǔ)音幀,n=N,m=M表示終止語(yǔ)音幀),參考模板與測(cè)試模板均為提取的MFCC特征參數(shù)。為了比較它們的相似情況,計(jì)算它們之間的歐氏距離,即d[(T,R)],距離越小代表二者相似度越高。
為了得到最小匹配路徑,通常采用動(dòng)態(tài)規(guī)劃方法[15]。在傳統(tǒng)的DTW算法中,需將測(cè)試模板中的每一幀與參考模板中的每一幀作相似度比較[16]。這有一定的局限性,需要對(duì)其加以限制,將其路徑范圍彎折率的變化區(qū)間設(shè)定在[0.5,2]。
即如果路徑已經(jīng)通過(guò)了格點(diǎn)(ni,mi),那么下一個(gè)通過(guò)的格點(diǎn)(ni+1,mi+1)可能是下列3種情況:
即搜索路徑的方法如下:搜索從(ni,mi)點(diǎn)出發(fā)到(N,M)結(jié)束,可以展開若干條滿足公式(2)的路徑,假設(shè)可計(jì)算每條路徑達(dá)到(N,M)點(diǎn)時(shí)的總的累積距離,具有最小累積距離者即為最佳路徑。最佳路徑對(duì)應(yīng)的模板記為識(shí)別結(jié)果。累計(jì)距離計(jì)算公式為:
經(jīng)過(guò)對(duì)路徑進(jìn)行約束后,匹配范圍進(jìn)行了縮小,減少了一些不必要的計(jì)算量,提高了識(shí)別效率與縮短了識(shí)別時(shí)間。
本文基于2名同學(xué)、6種不同語(yǔ)義內(nèi)容作了識(shí)別實(shí)驗(yàn)。在語(yǔ)音庫(kù)的建立一節(jié)中已經(jīng)表明:實(shí)驗(yàn)所需樣本共72個(gè),其中60個(gè)為參考模板存入模板庫(kù),12個(gè)樣本作為測(cè)試用。實(shí)驗(yàn)結(jié)果顯示可以正確識(shí)別語(yǔ)音信號(hào),并且有正確的關(guān)聯(lián)輸出。
對(duì)于不同的語(yǔ)音信號(hào)可以控制不同的模擬燈光狀態(tài),可以通過(guò)點(diǎn)擊輸出識(shí)別結(jié)果命令按鈕可以獲取識(shí)別結(jié)果,并執(zhí)行指定的控制模擬操作。
本文使用的模擬燈光具體操作表現(xiàn)為:睡覺(jué)模式時(shí),客廳燈、臥室燈都成紅色;離家模式時(shí),客廳燈、臥室都成黑色;開客廳燈,表現(xiàn)為藍(lán)色;關(guān)客廳燈,表現(xiàn)為白色;開臥室燈,表現(xiàn)為綠色;關(guān)臥室燈,表現(xiàn)為黃色。語(yǔ)音識(shí)別完成后,需要對(duì)模擬燈光進(jìn)行關(guān)聯(lián)輸出,通過(guò)對(duì)語(yǔ)音信號(hào)類別進(jìn)行對(duì)應(yīng)來(lái)得到相應(yīng)的已知語(yǔ)義,進(jìn)而對(duì)應(yīng)相應(yīng)的模擬燈。
在打開該程序所在的Matlab程序后,打開EmotionRec.m文件,在此.m文件下點(diǎn)擊運(yùn)行,會(huì)出現(xiàn)如圖1顯示的界面。然后就可以在這個(gè)界面上完成所有用戶想要完成的動(dòng)作了。首先訓(xùn)練庫(kù)文件,點(diǎn)擊載入語(yǔ)音庫(kù)按鈕后,選擇語(yǔ)音庫(kù)所在的文件路徑;點(diǎn)擊訓(xùn)練語(yǔ)音按鈕,系統(tǒng)將會(huì)遍歷庫(kù)中所有的.wav文件,并從每一個(gè)語(yǔ)音的起始到結(jié)束提取特征向量,訓(xùn)練完成后構(gòu)建成語(yǔ)音庫(kù);用戶可以點(diǎn)擊待測(cè)音頻文件選擇需要識(shí)別的語(yǔ)音文件,點(diǎn)擊完成后,界面中會(huì)出現(xiàn)對(duì)應(yīng)的音頻原始信號(hào)圖;點(diǎn)擊識(shí)別結(jié)果,模擬燈光會(huì)執(zhí)行相應(yīng)的動(dòng)作,同時(shí)輸出文本框顯示識(shí)別出來(lái)的對(duì)應(yīng)文字。點(diǎn)擊播放音頻文件,會(huì)播放對(duì)應(yīng)的音頻。點(diǎn)擊退出系統(tǒng)做出判斷后會(huì)關(guān)閉界面。
圖6與圖7是訓(xùn)練過(guò)程界面顯示圖與識(shí)別完成結(jié)果顯示圖。
圖6 訓(xùn)練過(guò)程界面顯示圖
圖7 識(shí)別完成結(jié)果顯示圖
本文主要介紹了處理語(yǔ)音信號(hào)的前期步驟,并且利用MatlabGUI開發(fā)平臺(tái),設(shè)計(jì)開發(fā)了語(yǔ)音識(shí)別控制照明系統(tǒng)一體化平臺(tái),實(shí)現(xiàn)了語(yǔ)音識(shí)別的集成化、可視化、交互式的功能,同時(shí)實(shí)現(xiàn)了DTW算法的改進(jìn)。目前平臺(tái)上已經(jīng)集成了Matlab語(yǔ)音處理工具包中的部分算法以及模擬燈光顯示,結(jié)果可以直觀地幫助用戶方便快捷的實(shí)現(xiàn)語(yǔ)音識(shí)別的操作,同時(shí)使用文字輸出、模擬燈光的輸出、語(yǔ)音播放待識(shí)別語(yǔ)音的方法高效地判斷語(yǔ)音識(shí)別的正確性。