該設(shè)計(jì)運(yùn)用三星公司的S3C2440,結(jié)合ICRoute公司的高性能語(yǔ)音識(shí)別芯片LD3320,進(jìn)行了語(yǔ)音識(shí)別系統(tǒng)的硬件和軟件設(shè)計(jì)。在嵌入式Linux操作系統(tǒng)下,運(yùn)用多進(jìn)程機(jī)制完成了對(duì)語(yǔ)音識(shí)別芯片、超聲波測(cè)距和云臺(tái)的控制,并將語(yǔ)音識(shí)別技術(shù)應(yīng)用于多角度超聲波測(cè)距系統(tǒng)中。通過(guò)測(cè)試,系統(tǒng)可以通過(guò)識(shí)別語(yǔ)音指令控制測(cè)量方向,無(wú)需手動(dòng)干預(yù),最后將測(cè)量結(jié)果通過(guò)語(yǔ)音播放出來(lái)。
1.引言
語(yǔ)言是人類(lèi)傳播信息的重要手段,語(yǔ)音識(shí)別則是實(shí)現(xiàn)語(yǔ)音控制的關(guān)鍵技術(shù)。采用嵌入式語(yǔ)音識(shí)別技術(shù)使得設(shè)備具有功耗低、使用簡(jiǎn)便、靈活等優(yōu)點(diǎn),擺脫了復(fù)雜按鍵和按鈕的困擾,在服務(wù)機(jī)器人、智能家居及消費(fèi)電子等領(lǐng)域發(fā)揮著重要作用。
2.系統(tǒng)構(gòu)成與原理
語(yǔ)音識(shí)別主要包括兩個(gè)階段:訓(xùn)練階段和識(shí)別階段。在訓(xùn)練或識(shí)別過(guò)程中,都必須對(duì)輸入語(yǔ)音進(jìn)行預(yù)處理和特征提取。訓(xùn)練階段通過(guò)用戶輸入的若干次訓(xùn)練語(yǔ)音,經(jīng)過(guò)預(yù)處理和特征提取后得到特征參數(shù),最后通過(guò)特征參數(shù)建模,進(jìn)而建立訓(xùn)練語(yǔ)音的參考模型庫(kù)。而識(shí)別階段是將輸入語(yǔ)音的特征矢量參數(shù)和參考模型庫(kù)中的參考模型進(jìn)行相似性度量,然后把相似度最高的輸入特征矢量作為識(shí)別結(jié)果輸出,從而達(dá)到語(yǔ)音識(shí)別目的,如圖1所示。
語(yǔ)音識(shí)別技術(shù)可分為:特定人識(shí)別和非特定人識(shí)別兩種。特定人識(shí)別是指需要對(duì)待識(shí)別人的語(yǔ)音進(jìn)行采集訓(xùn)練,識(shí)別對(duì)象為專(zhuān)門(mén)的人;非特定人識(shí)別是指識(shí)別對(duì)象為大多數(shù)用戶,一般要采集多個(gè)人的語(yǔ)音進(jìn)行錄音、訓(xùn)練和學(xué)習(xí),從而達(dá)到較高的識(shí)別率。
在實(shí)際應(yīng)用中,現(xiàn)代技術(shù)開(kāi)發(fā)嵌入式語(yǔ)音識(shí)別有兩種實(shí)現(xiàn)方式:調(diào)入嵌入式語(yǔ)音開(kāi)發(fā)包和外擴(kuò)語(yǔ)音識(shí)別芯片。本文的語(yǔ)音識(shí)別系統(tǒng)方案是以嵌入式處理器S3C2440為核心,外擴(kuò)非特定人語(yǔ)音識(shí)別芯片LD3320,并將超聲波測(cè)距模塊和云臺(tái)相結(jié)合作為系統(tǒng)的機(jī)械執(zhí)行機(jī)構(gòu)。系統(tǒng)測(cè)量過(guò)程如下:首先根據(jù)語(yǔ)音指令控制兩自由度云臺(tái)的位姿,使超聲波探測(cè)器指向特定方向,然后開(kāi)啟超聲波探測(cè)器,測(cè)量出前方障礙物距離,最后將測(cè)量結(jié)果轉(zhuǎn)化為可以播放的二進(jìn)制數(shù)據(jù)流,通過(guò)LD3320的播放功能完成數(shù)據(jù)的播放。
3.硬件電路設(shè)計(jì)方案
硬件電路主要包括語(yǔ)音識(shí)別部分、主控部分、超聲波測(cè)距部分和舵機(jī)控制部分,如圖2所示。處理器為三星公司的S3C2440,系統(tǒng)主頻最高可達(dá)533MHz,支持SPI、I2C、UART等接口,能夠滿足控制系統(tǒng)的需求。主控芯片S3C2440通過(guò)SPI總線完成對(duì)語(yǔ)音識(shí)別模塊的讀寫(xiě)操作,超聲波測(cè)距部分和舵機(jī)控制部分由處理器的GPIO進(jìn)行統(tǒng)一控制。
3.1語(yǔ)音識(shí)別電路設(shè)計(jì)
為了使系統(tǒng)能夠識(shí)別操作人員發(fā)出的語(yǔ)音指令,設(shè)計(jì)中采用了由ICRoute公司設(shè)計(jì)生產(chǎn)的非特定人語(yǔ)音識(shí)別芯片LD3320,它集成了語(yǔ)音識(shí)別處理電路和一些外部電路,包括AD、DA轉(zhuǎn)換器、麥克風(fēng)接口、聲音輸出接口等,不需要外接任何的輔助芯片如Flash、RAM。在主控制器的控制下,可以識(shí)別出預(yù)先添加到識(shí)別列表中的內(nèi)容。設(shè)計(jì)中參考了ICRoute發(fā)布的LD3320數(shù)據(jù)手冊(cè),圖中LD3320的P0、P1、P2引腳通過(guò)SPI接口與嵌入式處理器相接,控制信號(hào)WRB、CSB、RSTB以及中斷返回信號(hào)引腳INTB與處理器S3C2440直接相連,如圖3所示。
3.2超聲波測(cè)距和舵機(jī)控制電路設(shè)計(jì)
超聲波測(cè)距原理相對(duì)比較成熟,系統(tǒng)中采用超聲波測(cè)距模塊HC-SR04。該模塊有兩個(gè)TTL電平通信引腳,兼容3.3V電平。其中,控制端口Trig發(fā)一個(gè)10us以上的高電平,接收端口Echo將輸出與距離成正比的高電平信號(hào)。當(dāng)Echo有高電平輸出時(shí)就開(kāi)啟處理器定時(shí)器,當(dāng)端口電平跳變?yōu)榈碗娖綍r(shí)關(guān)閉定時(shí)器,根據(jù)定時(shí)器的值可計(jì)算得到障礙物的距離。其中,控制端口Trig和接收端口Echo分別接至處理器的GPG9、GPG6引腳。
超聲波測(cè)距模塊的感應(yīng)角度小于15°,為了擴(kuò)大測(cè)距的感應(yīng)角度范圍,將超聲波測(cè)距模塊安裝在兩自由度云臺(tái)上,其中,舵機(jī)為SG90(9G),旋轉(zhuǎn)角度為180°。處理器通過(guò)GPB0和GPB1分別控制兩個(gè)舵機(jī)以實(shí)現(xiàn)云臺(tái)的旋轉(zhuǎn),以測(cè)量不同方向的障礙物,如圖4所示。
4.軟件設(shè)計(jì)方案
系統(tǒng)軟件基于嵌入式Linux操作系統(tǒng),實(shí)現(xiàn)了語(yǔ)音識(shí)別、語(yǔ)音播放、超聲波測(cè)距和舵機(jī)控制等任務(wù),使用fock機(jī)制為每項(xiàng)任務(wù)分配獨(dú)立的進(jìn)程,使系統(tǒng)可以進(jìn)行多任務(wù)處理。針對(duì)不同功能模塊編寫(xiě)了相應(yīng)的底層驅(qū)動(dòng)程序,為上層應(yīng)用程序提供了調(diào)用接口。
系統(tǒng)工作流程如下:處理器通過(guò)SPI總線對(duì)語(yǔ)音識(shí)別芯片LD3320進(jìn)行通用初始化,使語(yǔ)音識(shí)別芯片進(jìn)入循環(huán)識(shí)別模式,系統(tǒng)處理器反復(fù)啟動(dòng)語(yǔ)音識(shí)別過(guò)程。如果有識(shí)別結(jié)果,則根據(jù)識(shí)別作相應(yīng)處理后(比如播放某個(gè)聲音作為應(yīng)答)再啟動(dòng)下一個(gè)識(shí)別過(guò)程。處理器通過(guò)SPI總線讀取C5寄存器的識(shí)別結(jié)果并分析,將語(yǔ)音命令轉(zhuǎn)換為超聲波測(cè)距和舵機(jī)的控制信號(hào),完成多方位測(cè)距任務(wù),如圖5所示。
4.1語(yǔ)音識(shí)別功能程序設(shè)計(jì)
語(yǔ)音識(shí)別芯片LD3320的特色是兼有語(yǔ)音識(shí)別和MP3播放的兩項(xiàng)功能,在功能切換的時(shí)候,必須進(jìn)行通用初始化,對(duì)芯片進(jìn)行一系列的設(shè)置。
語(yǔ)音識(shí)別功能的驅(qū)動(dòng)程序工作流程為通用初始化à語(yǔ)音識(shí)別用初始化→寫(xiě)入識(shí)別列表→開(kāi)始識(shí)別→響應(yīng)識(shí)別中斷。為了提高識(shí)別成功率,在識(shí)別列表中增加了“垃圾關(guān)鍵詞”以吸收錯(cuò)誤的識(shí)別。上層應(yīng)用程序?yàn)檎Z(yǔ)音識(shí)別功能分配了單獨(dú)的進(jìn)程,通過(guò)ioctl()函數(shù)控制LD3320的工作狀態(tài),read()函數(shù)可以讀取識(shí)別結(jié)果。程序中使用select機(jī)制實(shí)現(xiàn)read()函數(shù)的非阻塞訪問(wèn)。同時(shí),設(shè)定select監(jiān)控超時(shí)時(shí)間,在超時(shí)后,重新初始化語(yǔ)音識(shí)別芯片LD3320,為下一次語(yǔ)音識(shí)別做準(zhǔn)備,如圖6所示。
4.2語(yǔ)音播放功能程序設(shè)計(jì)
LD3320支持MP3數(shù)據(jù)播放,程序中操作順序?yàn)椋和ㄓ贸跏蓟げシ拍J匠跏蓟ひ袅空{(diào)節(jié)à開(kāi)始播放,并準(zhǔn)備好中斷響應(yīng)函數(shù),打開(kāi)中斷允許位。在程序中,首先將數(shù)字0~9、“十”、“百”、“點(diǎn)”的語(yǔ)音MP3數(shù)據(jù)分別轉(zhuǎn)換為標(biāo)準(zhǔn)C語(yǔ)言數(shù)組格式文件,將該文件添加到工程中進(jìn)行統(tǒng)一編譯。然后把需要播放的距離數(shù)據(jù)進(jìn)行拆分,并對(duì)每一位進(jìn)行查表操作,得到相應(yīng)的語(yǔ)音數(shù)據(jù)。例如,將距離數(shù)據(jù)12.5拆分為:“1”、“十”、“2”、“點(diǎn)”、“5”。最后將查表得到的語(yǔ)音數(shù)據(jù)按從左到右的順序組合,并存儲(chǔ)到LD3320的播放數(shù)據(jù)存儲(chǔ)器,在即將播放完畢時(shí),芯片會(huì)發(fā)出中斷請(qǐng)求,在中斷響應(yīng)函數(shù)中連續(xù)寫(xiě)入播放數(shù)據(jù),直到聲音數(shù)據(jù)播放完畢。
4.3超聲波測(cè)距和云臺(tái)控制程序設(shè)計(jì)
超聲波測(cè)距功能的驅(qū)動(dòng)程序?qū)儆贚inux字符型驅(qū)動(dòng),利用ioctl()函數(shù)對(duì)相應(yīng)GPIO進(jìn)行時(shí)序控制,完成超聲波的發(fā)射和接收。在接收端口輸出高電平脈沖信號(hào)時(shí),觸發(fā)系統(tǒng)中斷并使用定時(shí)器計(jì)算得到高電平持續(xù)時(shí)間△T,根據(jù)公式(1)完成距離S的測(cè)量。式中V為超聲波的傳播速度,常溫下超聲波在空氣中的傳播速度是340米/秒。在應(yīng)用程序中,可以通過(guò)read()函數(shù)讀取到所測(cè)量的距離值。
S=VXΔT/2(1)
兩自由度云臺(tái)由兩個(gè)舵機(jī)組成,分別控制云臺(tái)水平和垂直方向的旋轉(zhuǎn)角度。在驅(qū)動(dòng)程序中,首先打開(kāi)定時(shí)器PWM功能并設(shè)置定時(shí)周期,然后映射定時(shí)器中斷函數(shù),最后使能定時(shí)器,使定時(shí)器開(kāi)始運(yùn)行。程序中根據(jù)實(shí)驗(yàn)者發(fā)出的語(yǔ)音指令,利用ioctl()函數(shù)控制定時(shí)器輸出兩路PWM信號(hào),分別控制兩個(gè)舵機(jī)的旋轉(zhuǎn)角度,最后將運(yùn)動(dòng)合成為云臺(tái)的位姿。
5.結(jié)語(yǔ)
本文介紹了嵌入式語(yǔ)音識(shí)別技術(shù)在超聲波測(cè)距系統(tǒng)中的一種應(yīng)用以及實(shí)現(xiàn)方式,實(shí)驗(yàn)人員可以通過(guò)預(yù)先定義好的語(yǔ)音指令(例如:“開(kāi)始測(cè)量”、“左上方”、“前方”)實(shí)現(xiàn)對(duì)系統(tǒng)的控制,并利用超聲波進(jìn)行距離測(cè)量。測(cè)量完成后,系統(tǒng)通過(guò)語(yǔ)音播放的方式將測(cè)量結(jié)果反饋給實(shí)驗(yàn)人員,完成人機(jī)交互,提高了用戶體驗(yàn)度。本系統(tǒng)具有易擴(kuò)展的優(yōu)點(diǎn),可以將其應(yīng)用到其它嵌入式控制系統(tǒng)中。
評(píng)論
查看更多