衛(wèi) 敏
(山西職業(yè)技術學院 計算機工程系, 山西 太原 030006)
本研究項目依托3D虛擬平臺嘗試開發(fā)了一個智能家居的交互模擬系統(tǒng),其目的是通過三維虛擬仿真技術對智能家居交互系統(tǒng)的演示效果進行模擬。虛擬智能家居系統(tǒng)主要提供了兩種交互方式,一種是通過移動終端的觸摸屏操作實現人機交互,一種是通過語音識別進行人機交互[1]。采用設備操作的方式進行人機交互,用戶需要花費時間在設備上進行瀏覽、選擇和點擊等操作,如果界面設計功能較多的話,人們還需要再對界面進行學習和了解。而語音識別的交互方式極大地簡化了系統(tǒng)的操作步驟,用戶可以直接通過語音發(fā)布指令,脫離了對設備操作的依賴性。
目前主流的3D開發(fā)平臺都未集成語音識別功能。為了滿足虛擬智能家居的語音交互需求,本文嘗試對基于隱馬爾可夫算法的語音識別策略進行了改進,并應用在了虛擬智能家居交互系統(tǒng)當中。
語音識別技術簡單來說就是將語音轉換成對應文字的一種技術,它主要由聲學模型與語言模型兩部分構成,前者用于解決語音的發(fā)聲特性識別問題,后者用于描述語言的用詞習慣,并對其進行區(qū)分[2]。其功能模型的一般結構如圖1所示。
語音本身的特征變化非常豐富,同一個人連續(xù)兩次發(fā)同一個音時,都會存在持續(xù)時長和語氣輕重的不同變化,不同的人發(fā)出的語音更是千差萬別。因此在構建語音識別模型時,對語音識別的算法設計是非常重要的。
圖1 語音識別系統(tǒng)功能結構圖Fig.1 Functional structure diagram of speech recognition system
語音識別技術中比較具有代表性的算法有動態(tài)特征值規(guī)整算法、隱馬爾可夫算法和神經網絡模型等[3]。
非線性的動態(tài)特征值規(guī)整算法,簡單來說就是將輸入的語音信號基于時間軸進行彎曲調整,目的是要將其特征值曲線與算法內置的特征模板盡可能地進行匹配。這種匹配不僅是基于時長的,還包括距離測度。將語音信號中獲取的特征值與特征模板中特征值視作兩個矢量,不斷進行最小距離的測算(可采用路徑算法),以達到距離上的匹配,最終獲取的最小距離所對應的語音即為識別結果。由于語音時長的不均勻,輸入的語音特征與模型特征的比對就會出現較大誤差;采用該算法能夠較好地解決這一問題,但其算法過于簡單,未引入統(tǒng)計模型對特征值進行連續(xù)的記憶和分析,在連續(xù)發(fā)音情境下識別準確度較差。
基于統(tǒng)計模型的隱馬爾可夫算法,其統(tǒng)計模型的構建,主要由狀態(tài)序列與觀察序列兩組識別基元組成。為了能夠適應各類突發(fā)情況,兩組識別基元可實現連續(xù)和離散兩種狀態(tài)下的特征參數分析,并在識別過程中,持續(xù)將新的識別結果加入到統(tǒng)計模型當中進行學習。隨著統(tǒng)計模型的不斷擴充,該算法能夠高效地模擬出人類通過大腦對語法和語言需要的分析所產生的音素流,使其變?yōu)橐粋€可觀測的時變序列,由此可以快速準確獲取其狀態(tài)序列,并進行識別。由于統(tǒng)計模型中能夠不斷通過學習獲取到不同的特征參考序列,因此該算法可以對各類語音特征進行準確識別,具有極高的識別性與抗噪性。
神經網絡模型,該模型借鑒了人類神經系統(tǒng)工作原理,設計了神經元、網絡拓撲和學習方法三個功能模塊[4]。通過神經元實現非線性的語音識別處理,通過網絡拓撲實現大規(guī)模數據的并行處理,通過學習方法提高語音識別的學習能力。適用于較為復雜的環(huán)境背景,例如語義不明、噪音干擾、知識背景不確定和邏輯關系不清等。但該算法的實現非常復雜,且開銷較大,不易應用在較小規(guī)模的系統(tǒng)開發(fā)當中。
結合3D虛擬智能家居系統(tǒng)開發(fā)的實際需求,基于隱馬爾可夫算法的語音識別功能實現,既可以有效提高語音識別的準確性,又不會對系統(tǒng)性能造成太大的開銷負擔,是目前較為理想的一種解決方案。
語音識別技術在虛擬智能家居系統(tǒng)中的應用主要是實現系統(tǒng)控制命令的識別功能,例如開關燈命令和開關電器命令等。這類詞匯語義簡單,詞匯量也很少,通過構建小型的孤立詞識別庫,即可滿足語音識別的需求。
采用隱馬爾可夫算法實現孤立詞匯的語音識別功能,首先要構建孤立詞識別庫。由于虛擬智能家居系統(tǒng)的控制命令都較為簡單且有限,因此孤立詞識別庫的構建并不復雜,只要識別庫中涵蓋了所有的操作命令即可[5]。接著要對輸入的語音信號進行矢量化序列轉換,經過量化轉換的語音信號才能與識別庫中的孤立詞匯做進一步的比對。在與孤立詞的特征序列比對過程中,依次計算語音信號與各個孤立詞的匹配概率,最后選取匹配概率最高的孤立詞作為最終的識別結果。實現過程如圖2所示。
圖2 基于隱馬爾可夫算法的孤立詞識別策略Fig.2 An isolated word recognition strategy based on HMA
語音信號的矢量化轉換實質是從信號采樣中抽取若干特征矢量,并構成離散型的觀察序列。設該觀察序列為Q={q1,q2,…,qn},觀察序列的概率P(Q|V)由公式3.1可知:
(1)
其中N為觀察序列可能取值的個數,at連續(xù)觀察時刻下特征值狀態(tài)的前向概率。設孤立詞模型的給定模型參數V=(A,B,π),其中A表示狀態(tài)轉移概率,B表示輸出觀測概率,π表示初始狀態(tài)概率,計算最大概率值V*,公式如下:
V*=arg max{P(Q|V1),P(Q|V2), …,P(Q|Vk)}
(2)
最后依據V*所對應的孤立詞模型,獲取最終的識別結果。
隱馬爾可夫算法所構建的統(tǒng)計模型支持自主訓練學習,通過訓練獲取到大量的語音數據,可以對語音信號作出精確的描述,識別效果良好,功能穩(wěn)定[6]。但是該算法對于語音中噪聲的過濾效果較差,如果處于非常嘈雜的環(huán)境當中,其識別的準確率就會大大降低。為了有效解決這一問題,還需對語音識別功能做出進一步改進。
在日常生活中,人們常常會處在非常嘈雜的環(huán)境當中,身邊會有各種各樣的噪聲干擾語音識別的準確性。為了能夠從語句中準確識別出有效的詞匯指令,本文嘗試在語音識別策略中加入了預處理改進功能。
預處理的主要目的是對語句中疑似指令的詞匯進行特征分析和提取,以過濾無效的噪聲,提高指令識別的準確率。其功能實現主要由三部分組成,如圖3所示。
圖3 語音噪聲過濾預處理功能的實現過程Fig.3 The realization process of voice noise filtering preprocessing function
在人機交互中,人們通常會對涉及指令的詞匯加重發(fā)音,因此可以通過預加重方式對語音中的每幀信號按一定比例做增強處理。增強后的語音信號的高低頻差異會更加明顯,通過對低頻信號的過濾可以剔除掉大部分的噪聲。信號加重公式為:
s[n]=p[n]-ep(n-1)
(3)
其中:s[n]為加重后的信號樣本序列;p[0]為輸入的初始語音信號序列,數字化語音信號的最小存儲單位為16 bit,也是最小的信號樣本,n為輸入的信號樣本總數;e為預設的信號加重系數,其取值范圍為0.9 經過初步過濾后,將提取到的高頻信號序列作進一步的分段處理,以獲取到真正有效的語音段。由于語音信號的變化與時間長短有著密切關聯,且有效語音信號在短時間內會呈現出較為平穩(wěn)的狀態(tài),通常這個時間長度約在10 ms到20 ms之間。采用過零率分析法,以15 ms為一個時間周期,假設音頻采樣頻率為40 kHz,可知需采樣的語音樣本點為225個,公式如下: As=(15000/1000)×15=225 (4) 對這225個信號樣本進行過零電平檢測,如果過零的次數超過了系統(tǒng)所設定的閾值,則認為該時間段內的語音為有效語音,否則為無效語音。 為了使獲取到的多個有效語音段之間能夠平滑地過渡,對其進行分幀處理,即將語音序列以幀為單位進行前后銜接,每幀所持續(xù)的時長即為幀長。為了保證幀之間的銜接信號完整,一般會使前后幀有一定重疊。采用加窗法對語音序列進行分幀,通過給定寬度的可移動窗口加權的方式對語音信號進行分幀操作。公式表示為: F(n)=s(n)×win(n) (5) 其中s(n)為待分幀處理的語音信號序列,win(n)為加窗函數。加窗函數按計算方式分為三類,分別為Rectangle window、Hamming window、Hanning window。Rectangle window雖然低通性較差,但在短時語音特征分析中能夠更好地實現過渡,且計算效率較高,因此選用Rectangle window作為加窗權值。 經過預處理的語音信號中無聲段和明顯的噪聲段都可以得到有效去除,因此能大大提高隱馬爾可夫算法的語音識別效率和準確度。 圖4 語音識別服務主要功能Fig.4 The main function of voice recognition service 語音識別策略主要提供的是語音識別服務,應用在虛擬智能家居系統(tǒng)中還需要提供對應的接口進行交互,即各類終端語音采集設備的調用,統(tǒng)稱為語音交互服務系統(tǒng)。語音交互服務系統(tǒng)采用WEB服務框架實現其核心功能的調用,通過http方式實現語音請求的提交。語音識別服務功能主要包括三大部分,如圖4所示。 1)采集與校驗語音信息,目前終端的語音采集設備已經將采集與識別、校驗等多種語音服務封裝在統(tǒng)一的接口調用中,能夠為各類第三方軟件提供語音的交互服務。 2)過濾噪聲,通過語音識別的預處理策略提取有效的語音序列。 3)基于語音識別算法實現語音控制命令的識別。 3D虛擬智能家居系統(tǒng)中語音交互功能調用采用Java編程來實現,并封裝了三類接口: 1)常量類設置接口,包括TracktypeCon(聲道類型接口),用于切換語音輸入的聲道類型,聲道類型主要包括單聲道與雙聲道兩種;SampleRate(采樣頻率接口),采樣頻率的設置決定了語音采樣的樣本點生成數量,樣本過少會降低語音識別的準確率,樣本過多又會對系統(tǒng)性能產生影響,結合虛擬智能家居系統(tǒng)的實際運行情況,這里提供兩種采樣頻率,分別為16 kHz和20 kHz;Parsetting(系統(tǒng)參數接口),用于對全局資源中所需參數進行初始化配置,并提供了全局變量設置的對外接口。 2)外部調用類接口,包括ListenintMec(監(jiān)聽事件接口),采用Android事件監(jiān)聽機制監(jiān)聽外語語音的輸入請求;ResultsDataOn(結果數據獲取接口),獲取語音識別的結果數據;ErrorDataOn(錯誤信息獲取結果),用于捕獲識別過程中的異常錯誤信息;StartSpeech、EndSpeech分別是開始識別與結束識別的調用接口。 3)中間類控制接口,主要實現語音識別服務系統(tǒng)的內外部功能銜接控制。接口定義的代碼如下: MiddleControle(int TracktypeCon,int SampleRate,int Area,int Amountres,int frequency,int genderage,int TypeChannelTo,string OnBase,TManager Telmanager) MiddleControle中的形參主要涉及外部的參數設置,例如聲道選擇和頻率設定等,以及全局變量的傳遞和語音控制命令的傳遞。 以上三種常用類型的接口功能調用實現了3D虛擬智能家居系統(tǒng)的語音交互功能,結合后端的語音識別算法,基本滿足了系統(tǒng)的交互需求。 本研究結合3D虛擬智能家居系統(tǒng)中語音交互的功能需求,圍繞語音識別技術的算法原理和策略應用展開深入研究,在語音識別策略中采用隱馬爾可夫算法實現了對系統(tǒng)命令的語音識別,通過預處理策略改進實現了噪聲的有效過濾。并在此基礎上嘗試構建了語音交互服務系統(tǒng),通過常量類設置接口、外部調用類接口和中間類控制接口調用實現了3D虛擬智能家居系統(tǒng)語音交互功能的擴展。 隱馬爾可夫算法是語音識別技術中應用非常成熟的一種算法,因此針對孤立詞的識別效果非常好,準確率可達到90%。但是由于其對噪聲過濾的性能較差,因此還需進行另外的噪聲處理,也就增加了系統(tǒng)執(zhí)行開銷。當交互環(huán)境非常嘈雜的時候,對語音識別的準確度也會有很大影響。在之后的研究當中,本研究還將針對系統(tǒng)性能的進一步提高與噪聲的有效屏蔽等問題繼續(xù)開展語音識別策略的改進研究。4 語音識別策略的應用
4.1 語音交互服務系統(tǒng)
4.2 語音交互功能的接口實現
5 結論