??? 摘 要:針對智能家居系統(tǒng)中信息不能隨時隨地進行控制及其交流方式不流暢的問題,融合電話公用網(wǎng)和家庭網(wǎng)絡(luò)設(shè)計了一個基于ARM9和語音識別技術(shù)的智能家居系統(tǒng)。該系統(tǒng)采用RASTA濾波方法去除語音信號中夾雜的卷積信道噪聲,采用改進的動態(tài)時間規(guī)正(DTW)算法對語音命令進行識別。
??? 關(guān)鍵詞:智能家居;語音識別;帶通濾波器;動態(tài)時間規(guī)正
?
??? 隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,“智能家居”越來越被人們所重視。綜觀國內(nèi)外的智能家居系統(tǒng),大部分側(cè)重于利用Internet進行遠程控制。由于受到上網(wǎng)設(shè)備的限制,這種方式給智能家居系統(tǒng)的使用帶來了不便。例如,在用戶回家途中希望能夠打開空調(diào),很可能就因為不方便上網(wǎng)而無法實現(xiàn)。隨著電話的普及,利用電話對家電進行遠程控制可以做到隨時隨地。目前國內(nèi)外使用的控制方式主要有:利用短消息控制和用語音播放受控設(shè)備的名稱或代號,再根據(jù)用戶的選擇來控制相應(yīng)的設(shè)備。這兩種方式的弊端是:交流的方式不流暢自然,而且當(dāng)受控設(shè)備的個數(shù)達到10個以上時需要考慮新出現(xiàn)的問題。
??? 本文所介紹的系統(tǒng)采用三星公司生產(chǎn)的S3C2410芯片作為微處理器,基于公用電話交換網(wǎng)設(shè)計而成。系統(tǒng)先對用戶從電話輸入的語音命令進行語音識別,然后根據(jù)識別結(jié)果向串口發(fā)送相應(yīng)的命令,實現(xiàn)對家電的控制。
1 語音識別原理 ?
??? 語音識別的過程可歸結(jié)為模式識別和匹配。通過對語音信號進行預(yù)處理和分析計算可抽取出所需的語音特征,并以此建立語音識別所需的模板。而當(dāng)對語音進行識別時,則需要將系統(tǒng)中存放的語音模板與輸入的語音信號的特征進行比較,并根據(jù)一定的算法和策略,找出一系列最優(yōu)的與輸入的語音匹配的模板,最后輸出識別結(jié)果,識別流程如圖1所示[1]。
?
??? 預(yù)處理包括采樣、去除噪音、端點檢測、預(yù)加重、分幀、加窗等。而特征參數(shù)的提取,目前較為常用的有線性預(yù)測倒譜系數(shù)(LPCC)與Mel倒譜系數(shù)(MFCC)。本文采用的是MFCC。系統(tǒng)采用改進的動態(tài)時間規(guī)正DTW (Dynamic Time Warping)算法對語音進行訓(xùn)練和識別。
2 系統(tǒng)的硬件設(shè)計
2.1 系統(tǒng)的組成
??? 系統(tǒng)由ARM9核微處理器構(gòu)成主控部分,接收外部的控制信號,負責(zé)信息的處理,調(diào)控系統(tǒng)各部件協(xié)同進行工作。接口電路提供微處理器與電話網(wǎng)絡(luò)的接口,包括振鈴檢測電路、模擬摘掛機電路、語音電路、雙音多頻(DTMF)信號解碼電路。系統(tǒng)的硬件框圖如圖2所示。其中振鈴檢測電路、模擬摘掛機電路可由電話接口模塊替代。
?
??? 系統(tǒng)的工作過程是:當(dāng)有電話接入時,電話接口模塊中的振鈴檢測電路檢測到有振鈴信號并送微處理器;微處理器發(fā)送摘機信號到摘掛機電路,實現(xiàn)模擬摘機;語音模塊立即播放語音提示,要啟動家電控制則輸入密碼,正常通話則等待3s;當(dāng)用戶有按鍵輸入時,相應(yīng)的DTMF信號經(jīng)雙音多頻信號解碼電路解碼并送微處理器對它進行判斷;若輸入的密碼正確,則由語音模塊播放提示音,要求用戶輸入語音控制命令;語音命令的模擬信號經(jīng)A/D轉(zhuǎn)換電路轉(zhuǎn)換成數(shù)字信號后送微處理器進行語音識別;識別結(jié)果通過串口輸出。
2.2硬件的設(shè)計
??? 系統(tǒng)以S3C2410芯片為核心,配合電話接口模塊、語音單元、存儲單元實現(xiàn)語音識別的訓(xùn)練及識別過程。該芯片是SAMSUNG公司生產(chǎn)的一款基于ARM920T內(nèi)核的芯片,擁有獨立的16 KB指令Cache和16 KB數(shù)據(jù)Cache,片內(nèi)資源豐富并支持MMU虛擬內(nèi)存管理單元,采用它作為程序的主控芯片可減少工作量,降低開發(fā)難度。為實現(xiàn)對語音的處理,系統(tǒng)的語音單元采用了PHILIPS公司的UDA1341TS語音編解碼芯片。語音的模擬信號從電話線經(jīng)過偏置和濾波處理后輸入到UDA1341TS中轉(zhuǎn)換為數(shù)字信號后再送到S3C2410進行處理。本系統(tǒng)和電話公用網(wǎng)之間的接口是PH8809電話模塊,PH8809是專業(yè)設(shè)計的電話接口電路,采用標準DIP32P封裝,體積小巧,具備振鈴檢測、摘掛機檢測和控制及語音接收/輸出、DTMF輸入/輸出等功能,并帶有電話線斷線檢測端口及音量自動增益調(diào)節(jié)電路,集成度高,性能穩(wěn)定。出于安全考慮,系統(tǒng)采用密碼驗證的方式對用戶身份進行識別,而密碼的輸入借助于DTMF信號。HT9170是DTMF信號接收解碼芯片,它可對接收到的DTMF信號進行檢測和解碼,并將不同的DTMF輸入信號轉(zhuǎn)換成相應(yīng)的4位BCD碼數(shù)字信號輸出。系統(tǒng)的存儲部分選用32 M×8 bit Flash K9F5608U芯片,用于燒寫程序,2片8 M×32 bit大容量SDRAM芯片型號為HY57V561620。其中電話接口模塊PH8809與語音編解碼芯片UDA1341TS及DTMF解碼電路HT9170、微處理器S3C2410的連接如圖3所示。
?
?
??? 圖3中,SW是摘掛機控制開關(guān),高電平導(dǎo)通,低電平斷開。RING為振鈴信號輸出,輸出高電平時無振鈴,輸出低電平則表示有振鈴。DXC是電話線斷線檢測輸出,輸出高電平表示電話線斷線,輸出低電平時電話線連接正常。
3 系統(tǒng)的軟件設(shè)計
??? 系統(tǒng)首先通過移植vivi BootLoader、Linux 操作系統(tǒng)建立系統(tǒng)的開發(fā)環(huán)境,然后再開發(fā)語音識別程序及硬件驅(qū)動程序并把它們燒寫進目標板。其中重點難點在于語音識別程序的開發(fā),本文只介紹此部分。
3.1通信信道噪聲的消除
??? 基于電話的語音識別不同于普通的桌面語音識別,要想達到較好的識別效果,噪聲的影響不能忽略。而RASTA濾波處理正是通過一個低端截止頻率很低的帶通濾波器對語音參數(shù)的時間軌跡進行濾波處理,以使頻譜中的常量或者緩慢變化的部分得到抑制。系統(tǒng)引入了RASTA濾波技術(shù)并把它應(yīng)用到Mel對數(shù)譜上,使得變化緩慢的通道噪聲得到抑制[2]。
??? MFCC通過構(gòu)造人的聽覺模型,以語音通過該模型(濾波器組)的輸出為聲學(xué)特征,經(jīng)過離散傅里葉變換(DFT)后,可得MFCC為
???
??? 式(1)中,f (k)為第k個濾波器的對數(shù)輸出,n為MFCC的階數(shù),M為濾波器的個數(shù)。
??? 設(shè)RASTA濾波器的系統(tǒng)函數(shù)為H(z),則
? ?
??? 又設(shè)分別代表RASTA處理前和處理后的第k個Mel頻帶對數(shù)頻譜,則有:
???
??? 再對Mel頻率對數(shù)頻譜進行離散余弦變換(DCT),可得:
????
式(5)中是經(jīng)過RASTA處理后的n階MFCC。將式(4)代入式(5),可得
???
??? 從式(6)中可以看出,RASTA處理完全可以從對數(shù)頻率譜擴展到倒譜,即先求出MFCC,然后再做帶通濾波處理,從而減少計算代價。
3.2語音識別算法
??? 在對語音信號提取MFCC特征參數(shù)及RASTA濾波去噪以后,語音信號就轉(zhuǎn)化成為一組組特征向量,而語音識別算法的作用就是將待識別的語音信號的特征向量同系統(tǒng)中已建立起來的特征向量模板進行比較,找出最優(yōu)的匹配模板。目前,常用的語音識別算法有隱馬爾可夫模型(HMM)算法、動態(tài)時間規(guī)正(DTW)算法和人工神經(jīng)網(wǎng)絡(luò)(ANN)算法。其中,DTW算法具有系統(tǒng)開銷小、運算速度快、對孤立詞和小詞匯表的識別簡單而有效等特點,非常適合嵌入式系統(tǒng)的研制,而改進的DTW算法進一步減小了對計算量和存儲空間的需求,因而本系統(tǒng)選用它作為系統(tǒng)的識別算法。
??? DTW算法是利用動態(tài)規(guī)劃的思想, 將一個復(fù)雜的全局最優(yōu)化問題化為許多局部最優(yōu)化問題來處理,并自動尋找一條路徑,使兩個特征矢量之間的積累失真量最小,從而避免由于時長不同而可能引入的誤差。
??? 設(shè)參考模板共有M幀矢量,待測語音模板共有N幀矢量(一般M≠N),則動態(tài)時間歸正就是尋找一個時間歸正函數(shù)m=ω(n),它將測試矢量的時間軸n非線性地映射到模板的時間軸m上并使得測試矢量和模板矢量各幀之間的距離測度的累積和最小,從而使得兩矢量之間的匹配路徑最小,這樣就保證了待測模板與參考模板之間具有最大的聲學(xué)相似特性。通常,規(guī)正函數(shù)m=ω(n)被限制在一個平行四邊形(設(shè)為ABCD)網(wǎng)格內(nèi),它的起點坐標是(1,1),終點坐標為(N,M ),相鄰兩邊的斜率分別為2和1/2,如圖4所示。
?
??? 即只需對位于平行四邊形ABCD內(nèi)的各點對應(yīng)的幀匹配距離進行計算即可,然而傳統(tǒng)的DTW算法卻對整個矩形區(qū)域MBND都進行了計算,增加了系統(tǒng)的計算量。此外,傳統(tǒng)的DTW算法還保存了所有的幀匹配距離矩陣和累積距離矩陣,而實際上每一列各個點上的匹配計算只用到了前一列的3個網(wǎng)格。改進的DTW算法對以上兩點進行了改進,把實際的動態(tài)規(guī)正拆分為(1, Xa), (Xa+1,Xb),(Xb+1,N)3段,其中,Xa和Xb為最相近的整數(shù)且滿足下式
???
??? 當(dāng)不滿足以上條件時,認為兩者差別實在太大,無法進行動態(tài)規(guī)正匹配。
??? 而在X軸上的每一幀不再與Y軸上的每一幀進行比較,而只與Y軸上[ymax,ymin]間的幀進行比較,其中ymax,ymin由以下二式計算得到:
???
??? 當(dāng)Xa>Xb時, DTW可拆分為(1,Xb),(Xb+1,Xa)和(Xa+1,N)3段,計算過程類似。
??? 對于X 軸上,每前進一幀,彎折特征都是一樣的,累積距離的更新用下式實現(xiàn)
??? D(x,y)=d(x,y)+min[D(x-1,y),D(x-1,y-1),D(x-1,y-2)]?
??? 上式中,矢量 D 用于保存前一列的累積距離,矢量 d 用于計算當(dāng)前列的累積距離。根據(jù)上式,當(dāng)在X軸上每前進一幀時,按上式可求出當(dāng)前的累積距離,而它又可供下一列使用。如此不斷的更新,當(dāng)進行到待測模板的最后一幀時,矢量 D 的最后一個元素即為兩個模板經(jīng)過動態(tài)規(guī)正后的匹配距離??梢钥闯觯撍惴ú]有像傳統(tǒng)的DTW算法一樣保存整個距離矩陣,從而節(jié)約了系統(tǒng)的存儲空間[3]。
??? 系統(tǒng)通過DTMF信號密碼驗證方式對用戶身份進行識別,采用語音命令方式對家電進行控制,具有交流方式流暢自然、可實現(xiàn)隨時隨地控制、較高的安全性能等特點。實驗結(jié)果表明,在一般的背景環(huán)境下,對孤立詞的語音命令識別正確率達到95%以上,具有一定的應(yīng)用價值。
參考文獻
[1]?趙建光.嵌入式連續(xù)語音識別系統(tǒng)研究[D].河北工程大學(xué)碩士學(xué)位論文,2007.
[2]?HERMANSKY H, MORGAN N. RASTA processing of speech[J]. IEEE Trans on Speech and Audio Processing, 1994, 2(4): 578-589.
[3]?林波,呂明.基于DTW改進算法的孤立詞識別系統(tǒng)的仿真與分析[J].信息技術(shù), 2006(4): 56-59.