基于嵌入式Linux的語(yǔ)音識別系統硬軟件設計
別功能程序設計
本文引用地址:http://dyxdggzs.com/article/278135.htm語(yǔ)音識別芯片LD3320的特色是兼有語(yǔ)音識別和MP3播放的兩項功能,在功能切換的時(shí)候,必須進(jìn)行通用初始化,對芯片進(jìn)行一系列的設置。
語(yǔ)音識別功能的驅動(dòng)程序工作流程為通用初始化à語(yǔ)音識別用初始化→寫(xiě)入識別列表→開(kāi)始識別→響應識別中斷。為了提高識別成功率,在識別列表中增加了“垃圾關(guān)鍵詞”以吸收錯誤的識別。上層應用程序為語(yǔ)音識別功能分配了單獨的進(jìn)程,通過(guò)ioctl()函數控制LD3320的工作狀態(tài),read()函數可以讀取識別結果。程序中使用select機制實(shí)現read()函數的非阻塞訪(fǎng)問(wèn)。同時(shí),設定select監控超時(shí)時(shí)間,在超時(shí)后,重新初始化語(yǔ)音識別芯片LD3320,為下一次語(yǔ)音識別做準備,如圖6所示。
4.2語(yǔ)音播放功能程序設計
LD3320支持MP3數據播放,程序中操作順序為:通用初始化à播放模式初始化à音量調節à開(kāi)始播放,并準備好中斷響應函數,打開(kāi)中斷允許位。在程序中,首先將數字0~9、“十”、“百”、“點(diǎn)”的語(yǔ)音MP3數據分別轉換為標準C語(yǔ)言數組格式文件,將該文件添加到工程中進(jìn)行統一編譯。然后把需要播放的距離數據進(jìn)行拆分,并對每一位進(jìn)行查表操作,得到相應的語(yǔ)音數據。例如,將距離數據12.5拆分為:“1”、“十”、“2”、“點(diǎn)”、“5”。最后將查表得到的語(yǔ)音數據按從左到右的順序組合,并存儲到LD3320的播放數據存儲器,在即將播放完畢時(shí),芯片會(huì )發(fā)出中斷請求,在中斷響應函數中連續寫(xiě)入播放數據,直到聲音數據播放完畢。
4.3超聲波測距和云臺控制程序設計
超聲波測距功能的驅動(dòng)程序屬于Linux字符型驅動(dòng),利用ioctl()函數對相應GPIO進(jìn)行時(shí)序控制,完成超聲波的發(fā)射和接收。在接收端口輸出高電平脈沖信號時(shí),觸發(fā)系統中斷并使用定時(shí)器計算得到高電平持續時(shí)間△T,根據公式(1)完成距離S的測量。式中V為超聲波的傳播速度,常溫下超聲波在空氣中的傳播速度是340米/秒。在應用程序中,可以通過(guò)read()函數讀取到所測量的距離值。
S =V XΔT/ 2(1)
兩自由度云臺由兩個(gè)舵機組成,分別控制云臺水平和垂直方向的旋轉角度。在驅動(dòng)程序中,首先打開(kāi)定時(shí)器PWM功能并設置定時(shí)周期,然后映射定時(shí)器中斷函數,最后使能定時(shí)器,使定時(shí)器開(kāi)始運行。程序中根據實(shí)驗者發(fā)出的語(yǔ)音指令,利用ioctl()函數控制定時(shí)器輸出兩路PWM信號,分別控制兩個(gè)舵機的旋轉角度,最后將運動(dòng)合成為云臺的位姿。
5.結語(yǔ)
本文介紹了嵌入式語(yǔ)音識別技術(shù)在超聲波測距系統中的一種應用以及實(shí)現方式,實(shí)驗人員可以通過(guò)預先定義好的語(yǔ)音指令(例如:“開(kāi)始測量”、“左上方”、“前方”)實(shí)現對系統的控制,并利用超聲波進(jìn)行距離測量。測量完成后,系統通過(guò)語(yǔ)音播放的方式將測量結果反饋給實(shí)驗人員,完成人機交互,提高了用戶(hù)體驗度。本系統具有易擴展的優(yōu)點(diǎn),可以將其應用到其它嵌入式控制系統中。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論