【正文】
speech recognition. The design, based on SPCE061A which is made by Sunplus Technology Company, uses SPCE061A’s unique voice recognition capabilities to achieve the control of the car. Such as pretrained voice mand input Forward. The car would move forward. The car turning left when the mand is left. Using voice mands instead of the traditional remote manual control. When received a mand, the car will generate a voice signal. Thus people and the car could achieve simple interaction. To reduce the voice signal attenuation and interference from external sound signal this design uses highfrequency signals sent by the wireless mode to the transmission of voice the system uses two chips of SPCE061A. The first one is dedicated to speech signal acquisition, encoding and sending voice mands. According to the received voice mands, the other one controls the car39。 利用凌陽公司提供的 SPCE061A單片機開發(fā)板和越野型車模,預計可以按時實現(xiàn)語音命令對小車行駛狀態(tài)的控制。 我國語音識別研究工作起步于五十年代,但近年來發(fā)展很快。 系統(tǒng)功能 ( 1)利用系統(tǒng)的語音播放和識別資源來實現(xiàn)語音控制功能; ( 2) 通過 I/O 操作,實現(xiàn)小車的前進、左轉、右轉、后退等功能; ( 3)能在行駛的過程中改變小車的行駛狀態(tài); ( 4) 超出語音控制范圍以后可以自動停車。 AT89C51 是 8 位單片機,應用廣泛,易于編程,且價格便宜。 設計框圖如圖 42所示。所以采用凌陽 SPCE061A單片機來設計語音遙控小車的設計。nSP內核的 16位單片機,具 有一定的數(shù)字信號處理功能,該芯片擁有 8 路 10 位精度的 ADC,其中一路為音頻信號專用轉換通道,并且內置有自動增益電路。兩個二極管,是為了防止誤將電 源接反而設置的。如果系統(tǒng)需要的端口高電平為 ,所以圖中的 J5跳線需要跳到 2和 3上。 無線接收模塊通過天線接收到數(shù)據(jù)碼,通過 D0、 D D D3 輸出。 二極管 D1作用: ( 1)降壓, 4 節(jié)電池提供的電壓 VCC 最大可達到 6V, D1 可有效地降壓。 如果讓 Q Q2 導通 Q Q4 也導通,那么電流將會流經(jīng) Q Q4 組成的回路以及 Q2 和 Q3 組成的回路,如圖 513所示,這時橋臂上會出現(xiàn)很大的短路電流。 圖 515 車體側視圖 后輪 前輪 13 圖 516 小車頂視右轉圖 SPCE061A精簡開發(fā)板 SPCE061A精簡開發(fā)板(簡稱 61板),是以凌陽 16位單片機 SPCE061A為核心的精簡開發(fā)-仿真-實驗板,除具備單片機最小系統(tǒng)電路外,還包括有電源電路、音頻電路(含 MIC輸入電路和 DAC音頻輸出部分)、復位電路。必要時還要有對應的輸入端設置和 PWM 端口設置等。在訓練階段,單片機對采集到的語音樣本進行分析處理,從中提取出語音特征信息,建立一個特征模型;在識別階段,單片機對采集到的語音樣本也進行類似的分析處理,提取出語音的特征信息,然后將這個特征信息模型與已有的特征模型進行對比,如果二者達到了一定的匹配度,則輸入的語音被識別。 //訓練第 1 個動作 while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) 。 //語音提示 *P_IOB_Data=0x0100。 //開 2Hz 中斷 __asm(int fiq,irq)。 //打開 2Hz 中斷 __asm(int fiq,irq)。 //打開 2Hz 中斷 __asm(int fiq,irq)。 具體的步驟為: 第一步:打開集成開發(fā)環(huán)境,打開“ ”文件,編譯鏈接。 完成訓練后,輸入語音命令“前進”,觀察小車是否前行。在本論文的寫作過程中,我的導師 王旭輝 老師傾注了大量的心血,從選題到開題報告,從寫作提綱,到一遍又一遍地指出每稿中的具體問題,嚴格把關,循循善誘。 //運行時間定時,調整該參數(shù)控制運行時間 unsigned int uiTimecont。 //停止識別器 SACM_S480_Initial(1)。 // 實現(xiàn)功能: 訓練一條指令 // 參數(shù): WordID指令編碼 // SndID指令提示音索引號 // 返回值: 無 //============================================================= int TrainWord(unsigned int WordID,unsigned int SndID) { int Result。 case 3: //環(huán)境太吵 PlaySnd(S_NOISY,3)。 } //============================================================= // 語法格式: void TrainSD()。 F_FlashWrite1Word(0xef00,0xaaaa)。 while(g_Ret!=0) //模型導出成功? 28 g_Ret=BSR_ExportSDWord(mandID)。 for(jk=0。 while(g_Ret!=0) //模型裝載成功? g_Ret=BSR_ImportSDWord()。k++) { Ret=*p。 ulAddr+=1。 ulAddr=0xe000。 //訓練第 2 個動作 while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) 。 return 5。 switch(Result) { case 1: //沒有檢測出聲音 PlaySnd(S_NOVOICE,3)。 //解碼并填充隊列 *P_Watchdog_Clear=0x0001。i0xffff。 24 附 錄 第一塊 SPCE061A開發(fā)板程序如下: //====================================================== // The information contained herein is the exclusive property of // Sunnnorth Technology Co. And shall not be distributed, reproduced, // or disclosed in whole in part without prior written permission. // (C) COPYRIGHT 2020 SUNNORTH TECHNOLOGY CO. // ALL RIGHTS RESERVED // The entire notice above must be reproduced on all authorized copies. //======================================================== //======================================================== // 工程名稱: Car_Demo // 功能描述: 實現(xiàn)小車的語音控制 // 涉及的庫: // // // 組成文件: // , , // , // 硬件連接: IOA0KEY1 // IOA1KEY2 // IOA2KEY3 // IOB8前進 // IOB9倒車 // IOB10左拐 // IOB11右拐 // 維護記錄: 20201212 //======================================================== include include define P_IOA_Data (volatile unsigned int *)0x7000 define P_IOA_Dir (volatile unsigned int *)0x7002 define P_IOA_Attrib (volatile unsigned int *)0x7003 define P_IOB_Data (volatile unsigned int *)0x7005 define P_IOB_Dir (volatile unsigned int *)0x7007 define P_IOB_Attrib (volatile unsigned int *)0x7008 define P_TimerA_Data (volatile unsigned int *)0x700A define P_TimerA_Ctrl (volatile unsigned int *)0x700B define P_TimerB_Data (volatile unsigned int *)0x700C define P_TimerB_Ctrl (volatile unsigned int *)0x700D define P_Watchdog_Clear (volatile unsigned int *)0x7012 define P_INT_Mask (volatile unsigned int *)0x702D define P_INT_Clear (volatile unsigned int *)0x7011 25 define NAME_ID 0x100 define COMMAND_GO_ID 0x101 define COMMAND_BACK_ID 0x102 define COMMAND_LEFT_ID 0x103 define COMMAND_RIGHT_ID 0x104 define S_NAME 0 //給我取個名字吧 define S_ACT1 1 //前進 define S_ACT2 2 //倒車,請注意 define S_ACT3 3 //左拐 define S_ACT4 4 //右拐 define S_RDY 5 //Yeah define S_AGAIN 6 //請再說一遍 define S_NOVOICE 7 //沒有聽到任何聲音 define S_CMDDIFF 8 //說什么暗語呀 define S_NOISY 8 //說什么暗語呀 define S_START 9 //準備就緒,開始辨識 define S_GJG 10 //拐就拐 define S_DCZY 11 //倒車,請注意 extern unsigned int BSR_SDModel[100]。實驗