【摘 要】本文利用了16位SPCE061A凌陽單片機的強大的DSP功能,實現了特定發音人識別功能。介紹了實現語音機器人系統的主要組成部分,以及軟件實現和硬件配置。希望可以通過廣大機器人愛好者的研究,可以是機器人技術廣泛發展。
【關鍵詞】凌陽單片機;語音識別;機器人
0.引言
在當今中國技術快速發展的情況下,機器智能化已經越來越普遍。但是我們可以發現,雖然機器人的數量在急劇增加,可是機器人技術卻發展地愈加平緩。現如今,機器人大部分都是由發令人發出指令,機器人進行執行,執行過程以及結果具體如何發令人并不能得到很好的反饋。由此我們可以知道,人和機器人的通信總是單向的。就以往的機器人來看,人和機器的語音通信有兩種情況:一種是,人進行發令,機器人完成相關指令;另一種是,機器人講話,而人聽話。這就是我們所謂的“人工耳朵”和“人工嘴巴”。而現在,我們就是要利用凌陽單片機強大的語音控制模塊來實現機器人與人類之間的雙向交流,將“人工耳朵”和“人工嘴巴”結合起來,真正地實現機器人的智能化。
對于語音辨識主要有以下兩種:
(1)特定發音人識別SD(Speaker Dependent):是指語音樣板由單個人訓練,也只能識別訓練人的語音命令,而他人的命令識別率較低或幾乎不能識別。
(2)非特定發音人識別SI(Speaker Independent):是指語音樣板由不同年齡,不同性別,不同口音的人進行訓練,可以識別一群人的命令。
我們將標準模式的存儲空間稱為“詞庫”,而把標準模式稱為“詞條”或“樣板”。
而我們所說的建立詞庫,也就是將待識別的命令進行頻譜分析,提取特征參數作為識別的標準模式。
識別過程首先要濾掉輸入噪音并進行預加重處理來提升高頻分量,接著找出語音的特征參數作為未知模式與預先存儲的標準模式進行比較,當輸入的未知模式和標準模式的特征一致時,機器進行識別,并且輸出識別結果。我們的方案采取特定人識別方式,將訓練的標準樣板存于FLASH中,第一次使用時要進行訓練,以后就可以識別此人語音信息。
現如今,很多人都自己制作語音識別模塊和單片機配合來實現各種機器的語音功能,但是我們發現,凌陽單片機本身就具有很強大的語音模塊,直接就可以通過編寫程序實現我們所需要的語音辨識。
1.系統總體方案介紹
一般來說,機器人都是靠自身動力和控制能力來實現各種功能的一種機器,它一般由執行機構、驅動裝置、檢測裝置和控制系統和復雜機械等組成,通過輸入的電信號,轉化為輸出的線、角位移量,通過數值、語言等對機器人進行示教,使機器人根據示教后的信息進行作業,并以此來達到指令發出人所需要的某種目的。
本系統是以凌陽微控制器SPCE061A為核心,我們的設計方案如下:
1.1主控設備
選用SPCE061A單片機作為控制器的處理器,加上外圍電路及模塊,構成最小系統,完成語音辨識的控制功能。
1.2監視設備
選用傳感器,監測周圍環境的障礙物以及溫度等。
1.3電源模塊
選用適當芯片,給外圍電路以及單片機供電。
這樣,本系統基本能實現與人之間的雙向對話,并且可以根據人的指令進行簡單作業,以及能夠躲避周圍環境中的障礙物以及高溫物體等。
2.系統軟件實現
系統軟件的實現是設計本系統的重中之重,凌陽SPCE061A具有DSP功能等優勢,為語音的播放、錄放、合成和辨識提供了強有力的條件。凌陽61板擁有SACM_A2000、SACM_S400、SACM_S240等壓縮算法,我們的程序中采用SACM_S400算法。這種算法存儲容量大,音質介于SACM_A2000與SACM_S240之間,適合于語音播放。
編寫程序如下:
int main()
{
int Result, PlayFlag;
//……………初始化…………………………………
BSR_DeleteSDGroup(0);// 初始化存儲器RAM
//……………調用訓練模塊…………………………
while(TrainWord(NAME_ID,0) != 0) ; //訓練第一條命令
while(TrainWord(COMMAND_ONE_ID,1) != 0) ; //訓練第二條命令
while(TrainWord(COMMAND_TWO_ID,2) != 0) ; //訓練第三條命令
//……………辨識部分………………………………
BSR_InitRecognizer(BSR_MIC);//辨識器初始化
BSR_EnableCPUIndicator();
PlaySnd (S_START);// 播放開始辨識的提示音
while(1)
{
Result = BSR_GetResult();
if(res > 0)//識別出命令
{
if(gActivated)
{
switch(res)
{
case NAME_ID:
PlaySnd (S_ANSWER_ONE);
break;
case COMMAND_ONE_ID:
PlayFlag = 1;
PlaySnd(S_ANSWER_TWO);
PlayFlag = 0;
gActivated = 0;
break;
case COMMAND_TWO_ID:
PlaySnd (S_ANSWER_THREE);
gActivated = 0;
}
}
}
}
3.系統硬件介紹
3.1主控設備
SPCE061A里內嵌16位32K字的閃存FLASH ROM,2K字SRAM,CPU時鐘最高可達49M,帶有8通道10位模—數轉換輸入功能,較高的處理速度使SPCE061A能夠非常容易地,快速地處理復雜的數字信號。同時,休眠狀態下耗電小于2 A,具有低點壓復位/監測功能,因此特別適用于長期不間斷工作的數字語音處理領域。我們所使用的凌陽最小系統板,這樣為我們的硬件設計省去了很大的時間。作為語音機器人,外置揚聲器是不可缺少的部分,它可以很好的進行任務反饋與實現高音報警的作用。
3.2監視設備
監視設備包括紅外微波探測器,溫度傳感器等,通過這些傳感器的監測,單片機的控制,可是實現機器人躲避高溫,障礙物,報警的功能。
3.3電源模塊
電源設計使用給我們大家耳熟能詳的LM2940和LD1117芯片,在此就在給出電路圖。使用LM2940穩壓至5V給凌陽單片機SPCE061A的I/O口以及其他外圍電路供電,5V電源再經LD1117降壓至3V給凌陽單片機供電。
3.4行走設計
本機器人設計模型比較簡單,機器人的行走由兩個舵機進行控制,通過舵機的轉動,來實現一步一步向前走,一個舵機負責“抬腳”,一個舵機負責“邁步”。
4.結束語
本文簡單介紹了基于凌陽16位單片機SPCE061A語音辨識機器人。當今機器人在單片機技術以及控制技術等的基礎上,加入了語音控制模塊,既方便了指令人發出指令,又豐富了機器人的本身功能。我們設計出來的機器人可以實現與人之間的雙向對話,可以根據發令人的指令進行簡單作業,并且能夠躲避周圍環境中的障礙物以及高溫物體等。我相信,隨著科學技術的發展和人們對于機器人技術興趣的增加,機器人技術發展會越來越快,也會在家庭服務,教學等方面嶄露頭角。 [科]
【參考文獻】
[1]羅亞非等.凌陽16位單片機應用基礎.北京航空航天大學出版社.
[2]洪應,宋國富. 凌陽16位單片機使用技術教程.中國鐵道出版社.