潘麗鵬
(咸陽師范學(xué)院 外國語學(xué)院, 陜西 咸陽 712000)
隨著計算機(jī)與人工智能技術(shù)的快速發(fā)展,智能機(jī)械設(shè)備的應(yīng)用越來越廣泛,作為智能控制的關(guān)鍵技術(shù)之一,語音識別控制的能力直接決定機(jī)械設(shè)備的智能化程度[1-3]。本文提出并設(shè)計了一種嵌入式英語語音識別控制系統(tǒng),采用隱馬爾可夫模型進(jìn)行英語語音的識別,選取WTV180芯片對語音信號進(jìn)行處理。該系統(tǒng)英語語音識別度高,控制能力強(qiáng),適于在智能控制領(lǐng)域推廣應(yīng)用。
與語音識別算法所對應(yīng)的數(shù)學(xué)模型由輻射、激勵和聲道三個部分組成。其具體結(jié)構(gòu)如圖1所示。
圖1 語音識別算法的數(shù)學(xué)模型結(jié)構(gòu)
其中,激勵部分的G(z)為聲門脈沖信號;聲道部分的V(z)為聲道傳輸函數(shù);輻射部分的R(z)為輻射阻抗;A為調(diào)節(jié)系數(shù),用以調(diào)整函數(shù)能量或幅值。該模型的核心功能是確定對語音信號進(jìn)行轉(zhuǎn)換處理時所需的輸出函數(shù)H(z),如式(1)。
H(z)=A·G(z)V(z)R(z)
(1)
將人類發(fā)音的模擬信號轉(zhuǎn)換為可用于通信傳輸?shù)臄?shù)字信號,需要對其基于倍頻程衰減完成離散化的預(yù)處理,從而使高頻信號更加突出,易于分辨,簡化分析信號參數(shù)的程序,通常基于一階數(shù)字濾波器進(jìn)行離散化處理,如式(2)。
H(z)=1-uz-1
(2)
式中,u為離散系數(shù)且u∈[0,1]。假定x(n)為某時間節(jié)點(diǎn)n對應(yīng)的數(shù)值,那么經(jīng)過預(yù)處理可得式(3)。
y(n)=x(n)-kx(n-1)
(3)
式中,k為根據(jù)高頻信號值取值的系數(shù),這里取k=0.95。
系統(tǒng)語音識別結(jié)果的精度取決于算法能夠準(zhǔn)確實(shí)現(xiàn)語音特征的提取。本文選取MFCC(梅爾倒譜系數(shù))方法進(jìn)行語音信號頻域特征提取。其提取過程如圖2所示。
圖2 基于MFCC方法的頻域特征提取過程
在現(xiàn)有的多種語音識別算法中,HMM(隱馬爾可夫模型)算法由于具有出色的過程狀態(tài)預(yù)測能力而被廣泛認(rèn)可,因此本文采用該算法實(shí)現(xiàn)系統(tǒng)的語音識別功能。
假定S1,S2,…,Sn為模型中的一組狀態(tài)量,與時間節(jié)點(diǎn)n對應(yīng)的唯一模型狀態(tài)為x(n)。n=0時,起點(diǎn)概率矢量π的表達(dá)式為式(4)。
πi=P{x0=Si} (i=1,2,…,n)
(4)
后續(xù)各時間節(jié)點(diǎn)對應(yīng)的狀態(tài)值僅與其前一個時間點(diǎn)的狀態(tài)值xn-1相關(guān),由此可得到轉(zhuǎn)移概率矩陣A={ai,j},可表示為式(5)。
ai,j=p{xn=Sj|xn-1=Si}
(5)
除起點(diǎn)外,剩余所有時間點(diǎn)的狀態(tài)都是隱藏的,所以僅可計算出單個時間點(diǎn)Rq所對應(yīng)的隨機(jī)監(jiān)測矢量Qn,其與Xn(Pn)的關(guān)系為式(6)。
Pxn=Si{On}=P{On|Si}
(6)
通過HMM算法,在提取語音信號特征時獲得了Qn,本文基于混合高斯分布對Qn進(jìn)行擬合,得式(7)。
(7)
式中,m為擬合階數(shù)值;Y為Qn的狀態(tài)值;Cm為加權(quán)系數(shù)。
HMM算法的第一步應(yīng)為創(chuàng)建英語語音詞表。假定一個包含V個英語詞匯的詞表,將模型系數(shù)λv分配每一個詞匯,則有式(8)。
λv=(Av,Bv,πv)
(8)
進(jìn)行語音識別時,應(yīng)首先提取監(jiān)測矢量O={o1,o2,…,oT},然后計算出模型系數(shù)λv的分配概率P(O|λ)。其中,v∈[1,V],最后得到具有最大似然概率的詞匯v*,也就是語音識別結(jié)果對應(yīng)的值,如式(9)。
(9)
嵌入式英語語音識別控制系統(tǒng)硬件部分的組成結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)硬件部分結(jié)構(gòu)
系統(tǒng)的核心處理器選用的是以Cortex-M3為內(nèi)核的STM32型處理器。這種芯片采用了Tail-chaining中斷的結(jié)構(gòu)形式,數(shù)據(jù)處理速度很高,同時,其所集成的Thumb-2指令集大幅提高了指令的執(zhí)行效率和芯片的運(yùn)行性能,在工控行業(yè)中應(yīng)用較為廣泛。同時,本文選取WTV180芯片用于英語語音的信號處理,其技術(shù)優(yōu)勢主要體現(xiàn)在以下幾點(diǎn)。(1) 在語音信號頻率為6 kHz的條件下,其最大識別長度可達(dá)340 s,內(nèi)型數(shù)量高且適用于多種環(huán)境;(2) 該芯片集成了DAC、優(yōu)化音質(zhì)算法與PSG語音合成器,能夠獲得較高的音質(zhì)。系統(tǒng)的語音識別電路如圖4所示。
圖4 系統(tǒng)語音識別電路原理圖
由SPK麥克風(fēng)進(jìn)行語音采集并將信號發(fā)送給WTV180芯片,在其中進(jìn)行語音信號轉(zhuǎn)換,輸出的信號利用DATA數(shù)據(jù)線發(fā)送至STM32嵌入式系統(tǒng),由其按照語音信號的指令對智能機(jī)械設(shè)備進(jìn)行控制。
本系統(tǒng)的軟件部分基于模塊化的程序進(jìn)行智能機(jī)械設(shè)備的訓(xùn)練和詞匯存儲,訓(xùn)練過程中單個控制指令各均重復(fù)10次;訓(xùn)練完成后調(diào)用輸入接口函數(shù)請求系統(tǒng)語音識別模塊開始識別,再調(diào)用輸出接口函數(shù)提交識別結(jié)果;主程序分析識別結(jié)果即指令內(nèi)容,通過控制模塊驅(qū)動智能機(jī)械設(shè)備執(zhí)行對應(yīng)的操作。系統(tǒng)語音識別控制的實(shí)現(xiàn)流程如圖5所示。
圖5 系統(tǒng)語音識別控制實(shí)現(xiàn)流程
語音識別控制系統(tǒng)的初始化是在接收到外界操作指令的時刻開始進(jìn)行的,在此之前系統(tǒng)一直處于待機(jī)狀態(tài),目的是為了保證智能機(jī)械設(shè)備運(yùn)行的穩(wěn)定性與實(shí)時性。系統(tǒng)軟件部分的核心執(zhí)行代碼如下。
void CBodyBasics::MSSListen() //語音識別初始化函數(shù)
{
if (FAILED(::CoInitialize(NULL))) //初始化COM接口
MessageBox(NULL,(LPCWSTR)L"COM接口初始化失?。?,(LPCWSTR)L"提示",MB_ICONWARNING|MB_CANCELTRYCONTINUE|MB_DEFBUTTON2);
HRESULT hr=m_cpRecoEngine.CoCreateInstance(CLSID_SpSharedRecognizer);//創(chuàng)建Share型識別引擎
if (SUCCEEDED(hr))
{
hr=m_cpRecoEngine->CreateRecoContext(&m_cpRecoCtxt);//創(chuàng)建識別上下文接口
hr=m_cpRecoCtxt->SetNotifyWindowMessage(m_hWnd,WM_RECORD,0,0);//設(shè)置識別消息
const ULONGLONG ullInterest=SPFEI(SPEI_SOUND_START)|SPFEI(SPEI_SOUND_END)|SPFEI(SPEI_RECOGNITION);//設(shè)置我們感興趣的事件
hr=m_cpRecoCtxt->SetInterest(ullInterest,ullInterest);
hr=SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN,&m_cpAudio);
m_cpRecoEngine->SetInput(m_cpAudio,true);
ullGrammerID=1000;
hr=m_cpRecoCtxt->CreateGrammar(ullGrammerID,&m_cpCmdGrammar);
WCHAR wszXMLFile[20]=L"";//加載語法
MultiByteToWideChar(CP_ACP,0,(LPCSTR)"CmdCtrl.xml",-1,wszXMLFile,256);//ANSI轉(zhuǎn)UNINCODE
hr=m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);
hr=m_cpCmdGrammar->SetRuleState(NULL,NULL,SPRS_ACTIVE);//C&C
hr=m_cpRecoEngine->SetRecoState(SPRST_ACTIVE);
}
else
{
MessageBox(NULL,(LPCWSTR)L"語音識別引擎啟動出錯!",(LPCWSTR)L"警告",MB_OK);
exit(0);
}
}
為了驗(yàn)證本文所設(shè)計英語語音識別系統(tǒng)的實(shí)際性能,采用MATLAB軟件進(jìn)行仿真模擬實(shí)驗(yàn),選取智能播種機(jī)作為實(shí)驗(yàn)用智能機(jī)械設(shè)備。按照系統(tǒng)功能,實(shí)驗(yàn)分為英語語音識別和智能播種機(jī)做控制兩個部分分別進(jìn)行。語音識別功能測試過程為:選取5條行動方向英文指令(run、left、right、backwards、stop)各重復(fù)發(fā)出20次,以驗(yàn)證系統(tǒng)英語語音識別準(zhǔn)確率。測試結(jié)果如圖6所示。
由圖6可見,系統(tǒng)對每條英語指令的識別準(zhǔn)確率都高于85%,且大多數(shù)達(dá)到90%以上,可見本文所設(shè)計的系統(tǒng)具有較高的識別準(zhǔn)確度。
圖6 語音識別功能測試結(jié)果
智能機(jī)械設(shè)備控制功能基于智能播種機(jī)的行進(jìn)途徑與指令的一致性進(jìn)行測試。測試結(jié)果如圖7所示。
圖7 系統(tǒng)控制功能測試結(jié)果
由圖7可見,測試過程中共向系統(tǒng)發(fā)出13次行動指令,智能播種機(jī)每次都能按照指令方向行進(jìn)并最終到達(dá)目的地??梢娤到y(tǒng)能夠?qū)崿F(xiàn)智能機(jī)械設(shè)備的高精度控制。
語音識別控制是自動化技術(shù)發(fā)展的重要成果,已成為當(dāng)前智能機(jī)械設(shè)備研發(fā)的核心技術(shù)之一[4-5]。本文提出并設(shè)計的嵌入式語音識別控制系統(tǒng),基于HMM算法實(shí)現(xiàn)了英語語音的識別功能,采用WTV180芯片進(jìn)行英語語音信號的處理,大幅提高了智能機(jī)械設(shè)備的語音識別和處理能力,對于人工智能相關(guān)技術(shù)的研究具有一定的參考價值。