引言
隨著計算機技術、模式識別和信號處理技術及聲學技術等的發(fā)展,使得能滿足各種需要的語音識別系統(tǒng)的實現(xiàn)成為可能[1]。近二三十年來,語音識別在計算機、信息處理、通信與電子系統(tǒng)、自動控制等領域中有著越來越廣泛的應用[2]。
語音命令控制可廣泛用于家電語音遙控、玩具、智能儀器及移動電話等便攜設備中[3]。使用語音作為人機交互的途徑對于使用者來說是最自然的一種方式,同時設備的小型化也要求省略鍵盤以節(jié)省體積。
當今,語音識別產(chǎn)品在人機交互應用中已經(jīng)占到越來越大的比例。語音識別按說話人的講話方式可分為孤立詞識別、連接詞識別和連續(xù)語音識別。孤立詞識別是指說話人每次只說一個詞或短語,每個詞或短語在詞匯表中都算作一個詞條,一般用在語音電話撥號系統(tǒng)中。
連接詞語音識別支持一個小的語法網(wǎng)絡,其內(nèi)部形成一個狀態(tài)機,可以實現(xiàn)電話語音查詢、航空定票等系統(tǒng)。連續(xù)語音識別是指對說話人以日常自然的方式發(fā)音,通常特指用于語音錄入的聽寫機。從識別對象的類型來看,語音識別可以分為特定人語音識別和非特定人語音識別。特定人是指只針對一個用戶的語音識別,非特定人則可用于不同的用戶。
實際上,非特定人語音識別的初始識別率往往都比較低,一般都要求用戶花一定的時間對系統(tǒng)進行訓練,將系統(tǒng)的參數(shù)進行一定的自適應調(diào)整,才能使識別率達到滿意的程度。
本設計采用的識別類型是特定人孤立詞語音識別。本設計是語音識別在控制領域的一個很好實現(xiàn),它將原本需要手工操作的工作用語音來方便地完成。
本系統(tǒng)分主機和從機兩個方面,主機和從機都是采用單片機為主控核心,通過藍牙模塊來進行數(shù)據(jù)互傳,從機采用的是電機驅(qū)動芯片來控制小車,進行點擊的正反轉(zhuǎn)調(diào)速等控制。以此來達到了預期目標,實現(xiàn)了所期望的功能效果[4]。
- ? 系統(tǒng)概述
- 聲控產(chǎn)品前景和發(fā)展趨勢
隨著科技技術的發(fā)展,電子產(chǎn)品日新月異的發(fā)展,聲控產(chǎn)品使用率的提高,為人類的生活帶來了巨大的變化,隨著近幾年來信號處理技術的不斷發(fā)展與提升,語音辨識的應用已真正走入人們的日常生活,聲控系統(tǒng)的應用也不再遙不可及,家用電器的操作,不再需以遙控器的繁多按鍵為控制接口,取而代之是我們用平常說話的模式來驅(qū)使家電動作,諸如多種智能電器,人們在也不必為種類繁多操作復雜的遙控器而煩惱,人們可以很清松的操作各種各樣的電器產(chǎn)品,達到更符合人性化的操作接口設計。隨著語音技術的不斷發(fā)展進,人們不光可以用語音來控制家電,聲控產(chǎn)品也越來越受人們的歡迎,成為了21世紀發(fā)展的一大前景。
-
- 研究目的和意義
近幾年,人民生活水平穩(wěn)步提高,嵌入式電子產(chǎn)品的消費者已經(jīng)不再滿足“能用夠使”的消費目的,他們需要電子產(chǎn)品具有更多人性化和個性化的功能,技術上的特點客觀上給嵌入式語音識別應用帶來了更大的市場需求[5]。本設計主要應用語音識別技術,來完成語音控制小車的目的,將語音識別技術應用在實際設計當中,為以后進一步學習應用語音技術打下基礎,也可以為他人設計語音產(chǎn)品提供參考[6]。
-
- 本次設計內(nèi)容
如今隨著智能化的發(fā)展,智能化的控制技術變得尤為重要,本次設計是以單片機為核心設計一款語音控制的智能小車,研究內(nèi)容主要包含以下幾個方面:
- 語音識別技術,下可以通過語音控制小車的左轉(zhuǎn)、右轉(zhuǎn)、前進、后退、停止;
- 語音輸入終點信息,小車可以尋跡到達指定的地點;
- 通過RC522射頻識別技術使小車定位地點更為精確;
- 藍牙通訊;
- 實現(xiàn)自動避障,遇到障礙物停止。
- ? 系統(tǒng)設計的整體方案
聲控小車的設計分為二部分,一部分是硬件設計,另一部分是軟件設計,在這里我們只闡述軟件的部分。首先要對設計的題目進行分析,熟知其要求才能更加深刻的理解[7]。其次進行思路的整理規(guī)劃好流程。從而梳理設計的方案。首先是硬件方面,本次設計包含有自動避障功能、藍牙通訊、循跡、語音識別以及定位的功能。軟件在硬件的基礎上進行功能邏輯上的編譯。
-
- 主控芯片的方案論證
本次設計的語音小車采用是由單片機作為主控核心,按照本次設計的要求,從以下三個方案中選擇一款。
- EPSON系列單片機:
EPSON系列的單片機是由精工愛普生(SEIKO EPSON)自主開發(fā)的CMOS32位RISCCPU為核心,加上不同的外圍電路制成多種型號的MCU,這些產(chǎn)品可以應用于不同的領域:掌上電腦(PDA),移動信息終端,網(wǎng)絡設備,辦公室OA設備,PC接口設備,智能玩具,GPS應用等,其中它的主要特點有強大的CPU內(nèi)核,采用RISC結(jié)構(gòu),三級流水線,105條16位長指令,其大多數(shù)指令在一個時鐘周期內(nèi)執(zhí)行,大大提高了指令的執(zhí)行效率。地址總線28條,線性尋址256MB,編程方便。當S1C33工作在60MHz時,其性能可到60MIPS。在CPU架構(gòu)中,也采用了多種設計以提高CPU的性能;哈佛架構(gòu),內(nèi)部RAM為獨立總線,在操作內(nèi)部RAM時可起到高速緩存的作用,而且可實現(xiàn)同時存取內(nèi)外部存儲器,提高系統(tǒng)效率。有效的利用內(nèi)部RAM和Harvard結(jié)構(gòu)可大大提高指令執(zhí)行效率,使其可進行復雜運算。擁有豐富的周邊電路,較為良好的性價比和功能消耗較低的優(yōu)點[8]。
- AT89C51RC單片機:
AT89C51RC單片機是Atmel公司生產(chǎn)的低功耗高性能CMOS 8位單片機,其中它具有32k Bytes Flash只讀程序存儲器(ROM),512 Bytes內(nèi)部數(shù)據(jù)存儲器(RAM),該微處理器采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),引腳兼容80C51和80C52芯片,單片機內(nèi)的Flash存儲器可以象常規(guī)程序存儲器樣進行燒寫,AT89C51RC片內(nèi)總共有512字節(jié)的用戶數(shù)據(jù)區(qū),而256字節(jié)的內(nèi)部擴展數(shù)據(jù)區(qū)需通過清SFR(8EH)的位1并用MOVX指令訪問,片內(nèi)置通用8位中央處理器和Flash存儲單元,另一個256BytesRAM區(qū)與ATMEL之AT89系列8052兼容的單片機是一致的,AT89C51RC 結(jié)合通用的8位微處理器和Flash存儲技術構(gòu)成功能強大單片微處理器,可提供許多高性能低價位的系統(tǒng)控制應用場合[9]。
AT89C51RC具有如下主要特點:40個引腳,32kBytes的程序存儲器,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,內(nèi)置時鐘振蕩器,其Flash存儲器,可反復擦寫1000 次的Flash存儲器可有效地降低開發(fā)成本。軟件設置電源省電模式,睡眠其間,定時/計數(shù)器,串行口和中斷口均停止工作,RAM中的數(shù)據(jù)被“凍結(jié)”,直到下次被中斷激活或硬件復位方可恢復工作。
STC89C52是宏晶公司的增強型MCS-51單片機,具有以下標準功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KBEEPROM,MAX810復位電路,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。其中的優(yōu)點有,支持STC的2線制下載方式,下載程序更方便。支持6T模式(在6T模式下,6個時鐘周期就是一個機器周期),片內(nèi)集成了4kB容量的EPROM;帶有P4口,具有更多的I/O。最主要的是其價格便宜,符合學生的預算[10]。
本次選擇STC89C52單片機,因為該單片機能夠完成本次設計的全部功效之外,價格對比于其他兩個方案更為便宜,所以選擇該單片機作為本次設計的核心。
-
- 語音識別模塊的方案論證
在本次設計的語音小車中,語音識別是非常重要的一項,用戶需要通過主機來對從機下達指令,是通過語音來進行的,所以選擇一款合適的語音識別模塊是非常重要的。
- ASR M08
ASR自動語音識別技術是一種將人的語音轉(zhuǎn)換為文本的技術。ASRM08-A語音識別模塊堅持著這樣一個原則,首先對接收到的語音信號進行一系列的運算處理,然后和關鍵詞列表中所有的關鍵詞進行對比,對每一個關鍵詞的相似度打分,得分最高的那個關鍵詞就認為是正確的,最后輸出。這樣,當接收到相似度比較高的語音時我們可以通過設置“無用關鍵詞”把他過濾掉,這是一個非常有效的手段,設置“無用關鍵詞”越多,誤識別率越低,但是不可避免的要犧牲關鍵詞列表地址[11]。
- LD3320
LD3320提供的語音識別技術,是基于關鍵詞語列表的識別技術:ASR技術。語音識別芯片的工作流程是:對經(jīng)過MIC輸入的聲音實施頻譜分析一語音特征的提取一匹配關鍵詞語列表中的關鍵詞語一從此關鍵字列表中得分最高的關鍵詞語作為最終語音識別的結(jié)果輸出[12]。
LD3320模塊可以使用3.3v進行供電。模塊與單片機系統(tǒng)可以使用并口通訊方式也可以使用SPI通訊方式,這大大真強了模塊的兼容性,通過其語音采集系統(tǒng)經(jīng)過放大處理后再進行ad數(shù)據(jù)轉(zhuǎn)換給LD3320進行識別,LD3320根據(jù)之前錄制的音頻內(nèi)容進行對比判斷語音是否匹配,如果匹配會給串口發(fā)送設定好的數(shù)據(jù)??傮w識別較為準確費用適中,因此本設計采用LD3320語音識別模塊進行語音識別[13]。
-
- 電機驅(qū)動方案選擇
- L298N
L298N 是一種雙H橋電機驅(qū)動芯片,其中每個H橋可以提供2A的電流,功率部分的供電電壓范圍是2.5-48v,邏輯部分5v供電,接受5vTTL電平。一般情況下,功率部分的電壓應大于6V否則芯片可能不能正常工作[14]。
- ULN2003
ULN2003是大電流驅(qū)動陣列,多用于單片機、智能儀表、PLC、數(shù)字量輸出等控制電路中。可直接驅(qū)動繼電器等負載。輸入5VTTL電平,輸出可達500mA/50V。
ULN2003是高耐壓、大電流達林頓系列,由七個硅NPN管組成。
該電路的特點如下:ULN2003的每一對都串聯(lián)一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數(shù)據(jù)。
ULN2003 是高壓大電流達林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應于各類要求高速大功率驅(qū)動的系統(tǒng)[15]。
根據(jù)對以上兩種方案的分析,最終選擇L298N模塊作為本系統(tǒng)的電機驅(qū)動方案,可以有效的簡化系統(tǒng)的硬件結(jié)構(gòu),而且其模塊化的設計可以很好的鞏固系統(tǒng)的穩(wěn)定性。
-
- 本章小節(jié)
將本次設計的語音小車的關鍵硬件進行了選擇方案的論證,通過選取不同的單片機來判斷此次適合的主控核心。在語音識別和電機驅(qū)動方面也通過方案選擇,選擇適合本次設計的語音識別模塊和電機驅(qū)動模塊。
- ? 系統(tǒng)硬件電路設計
本次設計的語音小車由語音識別模塊、藍牙模塊、光電模塊、RC522射頻識別模塊電機驅(qū)動模塊組合而成,主控核心是單片機。單片機接收到語音識別信號之后,發(fā)送指令控制電機驅(qū)動以此來控制小車行動。其中系統(tǒng)框圖如圖3-1所示。
圖3-1 系統(tǒng)框圖
-
- 單片機最小系統(tǒng)的電路設計
- STC89C52芯片模塊電路設計
- 單片機最小系統(tǒng)的電路設計
本次設計的語音小車的主控核心包含時鐘電路和復位電路,其中STC89C52單片機主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源GND(Pin20):接地線;外接晶振引腳(2根);XTAL1(Pin18):片內(nèi)振蕩電路的輸入端;XTAL2(Pin19):片內(nèi)振蕩電路的輸出端;控制引腳(4根);RST/VPP(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位。ALE/PROG(Pin30):地址鎖存允許信號;PSEN(Pin29):外部存儲器讀選通信號;EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令??删幊梯斎?輸出引腳(32根);STC89C52單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。;PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7 P1口(Pin1~Pin8):8位準雙向I/O口線,名稱為P1.0~P1.7 P2口(Pin21~Pin28):8位準雙向I/O口線,名稱為P2.0~P2.7 P3口(Pin10~Pin17):8位準雙向I/O口線,名稱為P3.0~P3.7[15]。其中STC89C52單片機如圖3-2所示。
圖3-2 STC89C52單片機
-
-
- 系統(tǒng)時鐘電路設計
-
時鐘電路就是產(chǎn)生像時鐘一樣準確運動的振蕩電路。任何工作都按時間順序。用于產(chǎn)生這個時間的電路就是時鐘電路。時鐘電路一般由晶體振蕩器、晶振控制芯片和電容組成。以下為時鐘電路如圖3-3所示。
圖3-3 時鐘電路設計圖
-
-
- 復位電路設計
-
復位電路是一種用來使電路恢復到起始狀態(tài)的電路設備,它的操作原理與計算器有著異曲同工之妙,只是啟動原理和手段有所不同。復位電路,就是利用它把電路恢復到起始狀態(tài)。就像計算器的清零按鈕的作用一樣,以便回到原始狀態(tài),重新進行計算。本次設計的復位電路是比較簡單的,是只有電阻和電容,三極管等組合就可以辦到了。其中復位電路設計如圖3-4所示。
圖3-4 復位電路設計
-
- 從機語音模塊電路設計
語音處理技術是一門新興的技術,它不僅包括語音的錄制和播放,還涉及語音的壓縮編碼和解碼,語音的識別等各種處理技術。以往做這方面的設計,一般有兩個途徑:一種方案是單片機擴展設計,另一種就是借助于專門的語音處理芯片。普通的單片機往往不能實現(xiàn)這么復雜的過程和算法,即使勉強實現(xiàn)也要加很多的外圍器件。專門的語音處理芯片也比較多,如ISD系列、PM50系列等,但是專門的語音處理芯片功能比較單想在語音之外的其他方面應用基本是不可能的。所以本次選擇使用了LD3320模塊,該模塊采用了ASR技術。通過對經(jīng)過輸入的聲音實施頻譜分析,采取關鍵詞語作為最終
語音識別的結(jié)果輸出。語音識別模塊設計如圖3-5所示。
圖3-5語音識別模塊設計
資料包括:
部分程序:
#include <reg52.h>
#include "mfrc522.h"
#include "main.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <INTRINS.H>
//三個指示燈
sbit led = P0^1;
sbit led2 = P0^4;
sbit led3 = P0^7;
//電機驅(qū)動
sbit???? eleA?? =? P3 ^ 4;
sbit???? eleB?? =? P3 ^ 5;
sbit???? eleC?? =? P3 ^ 6;
sbit???? eleD?? =? P3 ^ 7;
sbit???? hwql?? =? P2 ^ 6;//紅外前左
sbit???? hwqr?? =? P2 ^ 2;//紅外前右
sbit???? hwhl?? =? P1 ^ 2;//紅外后左
sbit???? hwhr?? =? P1 ^ 3;//紅外后右
sbit???? bz?? =? P2 ^ 5;//避障
unsigned char R_flag=0;
unsigned char reg[35] = 0;
unsigned char number = 0;
unsigned char recSign = 0;//接收數(shù)據(jù)標志
unsigned char recTemp = 0;//接收數(shù)據(jù)
bit rec_flag = 0; //接收參數(shù)
int i=0; //用于for循環(huán)
bit start = 0; //開始暫停
int count =0;
unsigned char state=0;// 0-空閑 1-忙
unsigned char mode=0;// 0-停止? 1-前? 2-后
unsigned char dire=0;// 0-停止? 1-前? 2-后? 3-前左 4-前右 5-后左? 6-后右
unsigned char cardId=0;
unsigned char curId=0;//當前卡號
unsigned char targId=0;//目標卡號
unsigned char curPoint=0;//當前位置
unsigned char trace=0;//0-遙控模式??? 1-循跡模式
unsigned? int? timer=0;
unsigned? int? timeCount=0;
unsigned char data1[8] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
unsigned char g_ucTempbuf[20];
unsigned char status;
void Delay10ms(unsigned int c)?? //誤差 0us
{
unsigned char a, b;
//--c已經(jīng)在傳遞過來的時候已經(jīng)賦值了,所以在for語句第一句就不用賦值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。
紛傳點擊用微信打開即可,過程有點繁瑣請見諒。