具有語音識別功能的ZigBee傳感器網絡設計
1 語音識別
具有語音識別技術的無線網絡化測控技術是目前研究的一個方向,將語音識別、無線網絡和測控技術融合,實現無線網絡化語音控制系統,具有良好的實用價值和廣闊的應用前景。語音識別的過程可歸結為模式識別和匹配,通過對語音信號進行預處理和分析計算,抽取出所需的語音特征,并以此建立語音識別所需的模板。當對語音進行識別時,需要將系統中存放的語音模板與輸入的語音信號的特征進行比較,并根據一定的算法和策略找出一系列最優的與輸入的語音匹配的模板,最后輸出識別結果。語音識別系統采用的是模式匹配的原理,系統的一般結構如圖1 所示。
圖1 語音識別系統的一般結構
2 系統硬件設計
系統硬件結構可分為語音識別模塊、ZigBee模塊、繼電器控制模塊三部分。圖2 為總體硬件結構圖。
圖2 系統總體硬件結構
2.1 語音識別模塊
語音識別模塊由凌陽SPCE061A 語音處理芯片以及語音輸入電路、語音輸出電路、電源電路等模塊組成。語音識別模塊實現對語音命令的識別,并將識別結果發送至ZigBee數傳模塊。語音輸入與輸出電路如圖3、圖4 所示。
圖3 語音輸入模塊電路
圖4 語音輸出模塊電路
語音識別電路輸出的語音資源需要事先在PC 機上錄制成WAV 文件格式或者由TTS 軟件生成,該WAV格式的文件必須在單通道、8 KB/s、16 位的條件下錄制,然后把生成的WAV 文件經過壓縮編碼后添加到程序中,并隨程序一起下載到SPCE061A 單片機內存中。根據語音識別過程的需要,有選擇性地輸出不同的語音。需要輸出的語音資源經D/A 轉換后,由SPY0030(語音集成放大器)放大信號,最后通過喇叭輸出(J3 處外接喇叭)。通過調節電位器R1 的大小可以控制輸出語音的音量。
2.2 ZigBee模塊
ZigBee無線模塊由CC2430 芯片、供電電路、天線、數據下載口組成,具體電路如圖5 所示。
圖5 ZigBee 通信模塊電路
CC2430 芯片具有完整的壓控振蕩器,并把許多電路功能都直接集中到了芯片中,所以整個ZigBee模塊電路非常簡單,只需晶振、天線及少量的外圍電路就可以使ZigBee無線模塊正常工作,減少外圍電路可以使無線系統工作的更加穩定。
3 系統軟件
設計采用模塊化設計思想在μnSP IDE 和IAR 編譯器環境下,完成語音芯片SPCE061A 和射頻芯片CC2430 的軟件編譯和調試,進而實現語音識別功能以及無線通信功能,并使SPCE061A 和射頻芯片CC2430 可以協同工作。語音識別就是要對發音者發出的語音與語音模板中的模板進行匹配,確定發音者發出的語音指令,并根據所識別的命令作出相應的命令。對于本系統而言,需要識別的是特定人的語音識別,所以本系統沒有把語音模板寫入程序中,需要發音者自行對語音模塊進行語音訓練。語音識別的C 語言實現代碼部分如下:
Loop:
BSR_InitRecognizer(BSR_MIC); //初始化識別器
while(1){*
(unsigned int *)0x7012 = 1; //喂狗
uiRes = BSR_GetResult(); //取得識別結果
if(uiRes > 0){
if(uiActivated){
uiTimerCount = 0;
switch(uiRes){
case NAME_ID:
switch(uiBS_Team){
case 0: //第一組的第一個命令
PlaySnd(WELCOME);
//播放“歡迎進入系統"
break;
case 1:
//第二組的第一個命令
break;
case 2: //第三組的第一個命令
break;
}b
reak;
case Command_One_ID:
switch(uiBS_Team){
case 0: //第一組的第二個命令
*P_IOB_Data = *P_IOB_Data |
0x0002 ; //控制燈亮
PlaySnd(D25);
//播放語音燈已打開
*P_UART_Data ='1;
//通過串口將識別結果發送至FFD
break;
case 1: //第二組的第二個命令
break;
case 2: //第三組的第二個命令
break;
}
*(unsigned int *)0x7012 = 1;
uiActivated = 0; break;
case Command_Two_ID:
switch(uiBS_Team){
case 0://第一組的第三個命令(準備)
*P_IOB_Data = *P_IOB_Data &
0xfffd; //控制燈關閉
PlaySnd(D26);
//播放語音提示“燈已關閉”
*P_UART_Data =′2′;
//通過串口將識別結果發送至FFD
break;
case 1: //第二組的第三個命令
break;
case 2: //第三組的第三個命令
break;
}
*(unsigned int *)0x7012 = 1;
uiActivated = 0;
break;
}
4 結 語
本文提出基于ZigBee 數傳模塊和SPCE061A 單片機語音識別系統的設計方案,采用ZigBee數傳模塊作為通信處理器,并完成了兩大模塊的相關硬件和軟件的設計。經測試,本系統語音識別率達到98%以上,具有較高的應用價值。