張海龍
(中國傳媒大學 信息工程學院,北京 100024)
?
基于語音識別技術的語音控制智能手系統※
張海龍
(中國傳媒大學 信息工程學院,北京 100024)
本文以凌陽SPCE061A單片機作為核心控制器,設計了一種基于語音識別技術的語音控制智能手系統。系統由微控制器、語音模塊、電機模塊、光電尋跡模塊、無線控制模塊等部分組成。控制器利用語音模塊識別出操作人員的語音命令后,通過電機模塊與光電尋跡模塊的協同工作來完成預設的多個復雜動作。本設計還加入了無線控制功能,可以在特殊情況下替代部分語音指令來操控智能手。
SPCE061A;智能手;語音識別;語音控制
本系統以SPCE061A單片機為控制核心,通過采集操作員的聲音信號,配合無線控制模塊、光電尋跡模塊,設計了一個能夠完成多種復雜動作的語音控制智能手系統。它可以替代人工完成多種任務,應用前景廣闊。
本設計由微控制器SPCE061A、電源模塊、電機模塊、語音模塊、無線控制模塊、光電尋跡模塊等部分組成。系統結構框圖如圖1所示。

圖1 系統結構框圖
系統以SPCE061A單片機為控制核心。SPCE061A通過小型麥克風采集聲音信號,并將聲音信號與事先訓練好的存儲于Flash中的語音庫進行特征對比,從而實現語音命令的識別。根據識別出的命令,SPCE061A控制智能手作出相應的動作。
智能手執行的動作由4個直流減速電機來控制。電機驅動芯片采用L298N,兩塊L298N控制4個電機的轉向。電機1通過SPCE061A的IOB0、IOB1引腳控制智能手向上和向下;電機2通過IOB2、IOB3控制智能手向左和向右;電機3通過IOB4、IOB5控制智能手升高和降低;電機4通過IOB6、IOB7控制智能手轉向A區或者B區。智能手通過光電尋跡模塊判斷A區和B區的位置。設計中還加入了無線控制功能,用來代替部分語音命令。當按下發射端的K1鍵時,智能手轉向A區;按下K2鍵時,智能手轉向B區。
2.1 微控制器模塊
SPCE061A主要包括輸入/輸出端口、定時器/計數器、數/模轉換、模/數轉換、串行設備輸入/輸出、通用異步串行接口、低電壓監測和復位等部分,并且內置在線仿真電路ICE接口。其CPU最高時鐘可以達到49 MHz,在處理復雜的數字信號方面可以與專用DSP芯片相媲美,但價格卻非常低廉。SPCE061A支持10個中斷向量及十多個中斷源,適合應用于對中斷處理能力要求較高的實時語音信號處理場景中。其還具備8通道10位ADC輸入功能,內置的具有自動增益控制的麥克風輸入功能,雙通道10位DAC音頻輸出功能及A、B兩個I/O口輸入/輸出功能,為語音處理帶來了極大便利。圖2為SPCE061A內部結構圖。

圖2 SPCE061A內部結構圖
2.2 語音模塊
凌陽的 SPCE061A是 16位單片機,最高時鐘頻率可達49 MHz,具有很強的實時信息處理能力,這些無疑為語音的采集、辨識、合成及播放提供了條件。SPCE061A內部含有語音識別相關的函數,通過在程序中調用相關API函數,即可完成語音采集、語音播放及語音識別等任務。
2.2.1 語音播放
與SPCE061A高度集成的61板上有兩對語音輸出接口:一個是耳機插孔,連接耳機;另一個是外接喇叭的兩針插針。語音信號由DAC 輸出引腳21 或22 輸出后經語音集成放大器SPY0030 放大,然后輸出。SPY0030 是凌陽自產芯片, 功能類似于LM386, 但是比LM386音質好。它可以工作在2.4~6.0 V范圍內, 最大輸出功率可達700 mW。
凌陽壓縮算法中,SACM_A2000、SACM_S480、SACM_S240主要用來放音,可用于語音提示,而 DVR則用來錄放音。本設計采用S480算法,該壓縮算法壓縮比為80:3,存儲容量大,音質介于 A2000和 S240之間,適用于語音播放。圖3為S480算法播放語音流程圖。

圖3 S480算法播放語音流程圖
2.2.2 語音采集
語音信號經過麥克風轉換成電信號,輸入到SPCE061A內置的自動增益放大器。SPCE061A內部帶有自動增益控制電路AGC,能夠隨時跟蹤、監視前置放大器輸出的音頻信號電平,并對電平信號進行動態調節,以便使進入A/D的信號保持在最佳電平。系統采集到的聲音信號是模擬信號,需要通過模數轉換器轉換成數字信號存儲在SPCE061A的片內Flash中。
2.2.3 語音辨識
語音識別的過程可歸結為模式識別與匹配。通過對語音信號進行預處理和分析可以抽取出語音特征信息,建立一個特征模型;在匹配階段,單片機對采集到的語音樣本提取特征信息并與系統中存放的特征模型進行比較,根據一定的算法和策略,找出最優的與待辨識語音匹配度最高的模塊,并輸出識別結果。圖4表示語音識別系統的基本流程。

圖4 語音識別系統基本流程
2.3 電機模塊
為了能夠方便控制直流減速電機的正反轉,設計采用電機驅動芯片L298N。L298N為15引腳的單塊集成電路,內部包含4通道邏輯驅動電路。L298N無需隔離電路,可以直接分別驅動兩個直流減速電機的正轉與反轉。根據L298N芯片的特點以及SPCE061A的引腳特性,本方案將SPCE061A的IOB0~IOB7作為輸出口,分別與兩塊L298N芯片的IN1~IN4相接。L298N的VS、VSS分別接+12 V、+5 V電源,輸出口OUT1~OUT4接兩個直流減速電機。PWM調制端口接SPCE061A的IOB8腳,通過IOB8引腳輸出的PWM波來調節電機轉速。L298N電機驅動原理圖如圖5所示。

圖5 L298N電機驅動原理圖
2.4 光電尋跡模塊
本設計光電尋跡模塊采用RPR220反射型光電對管。RPR220是一種一體化反射型光電探測器,其發射器是一個砷化鎵紅外發光二極管,而接收器是一個高靈敏度、硅平面光電三極管。通過紅外敏感端對不同顏色的感光能力的不同,RPR220光電對管檢測到黑白顏色時輸出的電壓不同。將光電對管輸出的電壓送入比較器進行處理,從而實現當光電對管遇到黑線時,比較器輸出高電平,而遇到白線時輸出低電平。本方案使用的比較器是LM339N。電路原理圖如圖6所示。

圖6 光電尋跡模塊原理圖
將LM339N的數據輸出端接IOA0引腳,當碰到黑線時,LM339N的輸出跳變為高電平,SPCE061A根據設定的算法作出相應動作。
2.5 無線控制模塊
無線控制模塊由編解碼模塊和無線傳輸模塊組成。無線傳輸模塊的數據傳輸采用FSK-2A型高頻無線數據發射模塊。該模塊工作電壓為9~12 V,采用SAW穩頻,發射功率大,空曠地發射距離可達1 km,性價比高。
編解碼模塊選用PT2262/PT2272編解碼芯片組。本設計中,PT2272解碼芯片的D0和D1兩個引腳與SPCE061A的IOA8和IOA9連接。PT2262編碼芯片發送0x01和0x02兩個編碼信號,PT2272負責解碼這兩個信號。SPCE061A根據收到的信號依照設定的算法控制電機執行動作。
本設計采用C語言和匯編語言混合編程。其中,C語言作為主程序編程,可以充分利用C語言簡單易懂的優點來控制其他模塊。設計實現程序均在凌陽公司提供的u′nSP集成開發環境中開發完成。軟件設計采用模塊化程序結構,主要包括初始化程序、系統主程序、語音識別子程序、智能手動作執行子程序等。系統的軟件設計流程如圖7所示。

圖7 系統軟件設計流程圖
程序的初始化部分完成語音訓練以及辨識器、I/O口的初始化,部分代碼如下:
unsigned int uiFlagFirst; //是否為第一次下載
unsigned int uiRes; //識別結果
unsigned int uiActivated; //是否處于待命狀態
unsigned int uiTimerCount; //時間是否超時
unsigned int uiBS_Team;
//標識現在是第幾組命令在內存當中
unsigned int uiKey;
//存儲鍵盤值,按下將重新訓練
RobotSystemInit();
uiActivated = 0;
uiFlagFirst = IsFirstDownLoad();
//是否為第一次下載程序
if(uiFlagFirst == 1){
FormatFlash(); //格式化需要存儲命令的存儲器
TrainFiveCommand(); //訓練需要的5條命令(一組)
SaveFiveCommand(0xf700); //存儲5條命令
PlaySnd(OK);
//播放“收到”,表示一組命令存儲結束
TrainFiveCommand(); //訓練第二組命令
SaveFiveCommand(0xf900);
PlaySnd(OK);
TrainFiveCommand(); //訓練第三組命令
SaveFiveCommand(0xfb00);
PlaySnd(OK);
uiFlagFirst = 0xaaaa; //標志已訓練過
F_FlashWrite1Word(0xfd00,0xaaaa);
//置標志位寄存器
}
ImportFiveCommand(0xf700);
//將第一組命令存到內存當中
uiBS_Team = 0;
*P_IOA_Dir=0x0;
//設置IOA口為帶下拉電阻的輸入引腳
*P_IOA_Data=0x0;
*P_IOA_Attrib=0x0;
PlaySnd(RSP_STAR); //開始識別命令
*P_Watchdog_Clear=0x0001;
Loop:
BSR_InitRecognizer(BSR_MIC); //辨識器初始化
BSR_EnableCPUIndicator(); //啟動實時監控
while(1){} //進入語音識別的循環中
3.1 語音訓練
在以后的語音識別過程中,如果已經訓練過,會把存儲在 Flash中的語音模型調出來裝載到辨識器中使用。本設計使用的語音命令結構圖如圖8所示。

圖8 語音命令結構圖
3.2 語音識別
辨識器初始化時,先將第一組命令存儲在要被調用的內存當中。在識別環節當中,如果辨識結果是觸發名稱,輔助手將進入待命狀態,并播放聲音告知收到,然后等待識別下一級動作命令。如果辨識出動作指令,輔助手會語音告知并執行相應動作。注意,每次進行每條語音識別,都必須先使用觸發名稱進行狀態激活。語音識別流程圖略——編者注。
3.3 重新訓練
考慮到有重新訓練的需求,設置了重新訓練的按鍵,即61板上的KEY3鍵。SPCE061A控制器一旦檢測到此鍵按下,則將擦除訓練標志位,并等待復位。復位后,程序進入初始化階段,當檢測到訓練標志位為 0xffff時,會要求重新對其進行訓練。
3.4 無線控制模塊
通過兩個按鍵K1、K2,無線控制模塊發射端可以向接收端發送控制信號,SPCE061A根據接收端收到的控制信號執行相應動作。
執行動作略——編者注。
通過多次的修改與調度,智能手能夠很好地滿足預定的設計要求。在最后階段對智能手做了語音識別的準確度測試,結果如表1所列。每次測試前都要進行語音訓練,以提高結果的可信度。

表1 語音識別測試
我們還測試了光電尋跡模塊與無線控制模塊的工作情況,結果略——編者注。
數據表明,智能手可以較準確地識別語音命令,光電尋跡模塊與無線控制模塊工作也較為穩定。
本文基于SPCE061A設計了語音控制的智能手系統,系統測試結果表明,智能手能夠較準確地完成語音命令的識別并執行相應動作,各個模塊工作穩定,達到了設計目的。

[1] 陳言俊. 大學生創新競賽實戰——凌陽16位單片機應用[M]. 北京:北京航空航天大學出版社,2009.
[2] 郭天祥. 新概念51單片機C語言教程[M].北京:電子工業出版社,2009.
[3] 英鋒,馮玉芬.基于SPCE061A的語音識別系統的設計[J].微計算機信息,2008(17):121-122.
[4] 邱國普,楊立,張立.電動小車的電機驅動及控制[J].電子世界,2004(7):41-42.
[5] 羅亞非. 凌陽十六位單片機應用基礎[M].北京:北京航空航天大學出版社,2005.
[6] 余孟嘗. 數字電子技術基礎簡明教程[M].2版. 北京:高等教育出版社,1999.
[7] 譚浩強,張基溫. C語言程序設計教程[M].3版. 北京:高等教育出版社,2006.
[8] 李曉白,秦紅磊.凌陽16位單片機C言語開發[M]. 北京:北京航空航天大學出版社,2006.
[9] 王振,胡清,黃杰. 基于nRF24L01的無線溫度采集系統設計[J]. 電子設計工程,2009(12):24-26.
[10] 孫肖子,張企民. 模擬電子技術基礎[M]. 西安:西安電子科技大學出版社,2001.
張海龍(碩士研究生),研究方向為單片機與嵌入式系統、計算機網絡、軟件定義網絡。

Zhang Hailong
(College of Information Engineering,Communication University of China,Beijing 100024, China)
In this paper, an intelligent hand system of voice control based on speech recognition technology is designed,which uses the SPCE061A as the core controller.This system consists of microcontroller,voice module,motor module,photoelectric tracing module, wireless control module and other components. After the controller using voice module to identify the operator's voice command, it will use the motor module and photoelectric tracing module to complete some complex actions which were set in advance. The design also includes a wireless control function, which can replace part of voice command to control the intelligent hand in special conditions.
SPCE061A; intelligent hand; speech recognition; voice control
TP241
A
迪娜
2014-07-28)