新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于DSP的聲控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

基于DSP的聲控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2014-12-07 來(lái)源:網(wǎng)絡(luò) 收藏

  系統(tǒng)軟件設(shè)計(jì)

本文引用地址:http://2s4d.com/article/266441.htm

  軟件設(shè)計(jì)中最重要的部分就是編寫(xiě)語(yǔ)音識(shí)別程序。語(yǔ)音識(shí)別過(guò)程本質(zhì)上是一種多維模式識(shí)別過(guò)程。針對(duì)凌陽(yáng)單片機(jī)編寫(xiě)語(yǔ)音識(shí)別程序,主要可以分為:訓(xùn)練、辨識(shí)、辨識(shí)結(jié)果輸出三部分。

  1 訓(xùn)練程序

  當(dāng)程序第一次運(yùn)行時(shí),需要進(jìn)行語(yǔ)音識(shí)別訓(xùn)練。完成識(shí)別訓(xùn)練后,會(huì)在FLASH 存儲(chǔ)器中設(shè)定標(biāo)志位,下次重新啟動(dòng)時(shí),可以跳過(guò)語(yǔ)音訓(xùn)練過(guò)程,直接進(jìn)行語(yǔ)音識(shí)別程序。如果用戶需要重新訓(xùn)練,也可以通過(guò)按鍵來(lái)擦除標(biāo)志位,該部分程序框圖如下:

  

基于DSP的聲控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

 

  2 語(yǔ)音識(shí)別程序

  語(yǔ)音識(shí)別程序是整個(gè)程序編寫(xiě)過(guò)程中最重要的部分, 主要可以分為辨識(shí)器初始化、識(shí)別過(guò)程實(shí)時(shí)監(jiān)控、獲取辨識(shí)結(jié)果和終止辨識(shí)四部分。

  2.1 辨識(shí)初始化

  辨識(shí)初始化使用void BSR_InitRecognizer (int AudioSource)函數(shù)來(lái)實(shí)現(xiàn)。當(dāng)參數(shù)AudioSource 取1 時(shí)為L(zhǎng)INE_IN 電壓模擬量輸入;當(dāng)參數(shù)AudioSource 取0 時(shí)為MIC 語(yǔ)音輸入。

  2.2 識(shí)別過(guò)程實(shí)時(shí)監(jiān)控

  該功能調(diào)用void BSR_EnableCOUIndicator()函數(shù)來(lái)實(shí)現(xiàn),主要用來(lái)辨識(shí)是否正常工作。如果辨識(shí)正常,CPU 會(huì)產(chǎn)生一個(gè)占空比為50%的方波。如果CPU 超載,則會(huì)產(chǎn)生不穩(wěn)定的波形,這時(shí)為了避免語(yǔ)音辨識(shí)產(chǎn)生錯(cuò)誤信息,就需要?jiǎng)h除命令或者優(yōu)化程序。

  2.3 獲取辨識(shí)結(jié)果

  該功能調(diào)用int BSR_GetResult()函數(shù)來(lái)實(shí)現(xiàn),當(dāng)無(wú)命令識(shí)別出來(lái)時(shí),返回值為0;當(dāng)識(shí)別器未初始化或識(shí)別未激活返回-1;當(dāng)識(shí)別不合格時(shí)返回-2;當(dāng)識(shí)別出來(lái)時(shí),返回命令的序號(hào)。

  2.4 終止辨識(shí)

  該功能調(diào)用void BSR_StopRecognizer()函數(shù)實(shí)現(xiàn),主要用于停止識(shí)別,并關(guān)閉FIQ_TMA 中斷。

  3 辨識(shí)結(jié)果輸出

  通過(guò)BSR_GetResult()可以得到命令的序列號(hào),將命令的序列號(hào)改寫(xiě)成Voyager II 型機(jī)器人的相關(guān)協(xié)議, 然后通過(guò)RS232口傳輸給機(jī)器人即可達(dá)到語(yǔ)音控制的目的。

  4 串口通信程序

  為了方便用戶對(duì)Voyager II 型機(jī)器人進(jìn)行二次開(kāi)發(fā), 北京博創(chuàng)興盛機(jī)器人技術(shù)有限公司提供了標(biāo)準(zhǔn)串行接口, 并制定了詳細(xì)的通信協(xié)議,供用戶使用。為了提高通信的效率和穩(wěn)定性,在Voyager II 型機(jī)器人內(nèi)部,先將RS-232 標(biāo)準(zhǔn)電平轉(zhuǎn)換為T(mén)TL電平,再將TTL 電平通過(guò)MAX491 轉(zhuǎn)換為RS-485 的標(biāo)準(zhǔn)電平。

  由于協(xié)議中,只支持一個(gè)主機(jī),所以在本聲控系統(tǒng)中,將聲控系統(tǒng)的單片機(jī)作 為整個(gè)硬件系統(tǒng)的主機(jī), 即整個(gè)硬件系統(tǒng)的最高管理者,其地址默認(rèn)為0.其他設(shè)備的地址默認(rèn)為1-255.具體分配如下:系統(tǒng)設(shè)備占用地址0x01-0x0F;電機(jī)設(shè)備地址 0x100-0x1F;系統(tǒng)保留地址為0x20-0x7F;用戶設(shè)備地址:0x80-0xAF;在系統(tǒng)運(yùn)行過(guò)程中,主機(jī)一直占用自己的TXD 線,從機(jī)的RXD 線在不進(jìn)行通信時(shí)為高阻狀態(tài),只有在接收到與自己地址相符的數(shù)據(jù)幀時(shí),才能占用總線,一旦通信結(jié)束,立即釋放總線,回到高阻狀態(tài)。

  主機(jī)和從機(jī)采用標(biāo)準(zhǔn)的“一問(wèn)一答”通信機(jī)制,如果主機(jī)的命令需要有數(shù)據(jù)反饋,則返回需要的數(shù)據(jù);如果不需要數(shù)據(jù)反饋,就返回上位機(jī)發(fā)送的命令。

  下面,以控制機(jī)器人前進(jìn)為例說(shuō)明串口通信的協(xié)議格式:

  (1)發(fā)送固定通信字頭兩字節(jié):0x55 0xAA

  (2)發(fā)送接收設(shè)備地址:0x01

  (3)發(fā)送數(shù)據(jù)長(zhǎng)度:0x04

  (4)發(fā)送命令字:0x26

  (5)發(fā)送左電機(jī)速度兩字節(jié):0x00 0x06

  (6)發(fā)送右電機(jī)速度兩字節(jié):0x00 0x06

  (7)發(fā)送數(shù)據(jù)效驗(yàn)和:0x3A

  在明確了協(xié)議格式和需要發(fā)送的內(nèi)容之后, 就可以編寫(xiě)串口通信程序。首先,根據(jù)SPCE061A 的PLL 頻率和需要設(shè)定的波特率,計(jì)算出P_UART_BaudScalarHigh 和P_UART_BaudScalar-Low 的取值,完成串口參數(shù)的設(shè)定。在完成設(shè)定后,將需要發(fā)送的數(shù)據(jù)存儲(chǔ)到P_UART_Data 中,SPCE061A 就可以將數(shù)據(jù)發(fā)送給Voyager II 型機(jī)器人。由于,SPCE061A 的串口每次只能發(fā)送1個(gè)字節(jié)的數(shù)據(jù),所以需要采用循環(huán)的方式,依次將通信內(nèi)容發(fā)送給Voyager II 型機(jī)器人。Voyager II 型機(jī)器人收到指令后, 就可以按照指令,進(jìn)行相應(yīng)的動(dòng)作。

  總結(jié)

  本系統(tǒng)采用了低成本 的-SPCE061A 作為主控芯片,和傳統(tǒng)的基于PC 機(jī)的相比, 雖然識(shí)別的語(yǔ)音庫(kù)相對(duì)較少,但是其具有低成本、低功耗、體積小和使用靈活方便等特點(diǎn),不僅適合于中、小型機(jī)器人,還適合于教學(xué)科研使用。所以,本聲控系統(tǒng) 具有良好的市場(chǎng)前景和廣闊的使用空間。

存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理


聲控?zé)粝嚓P(guān)文章:聲控?zé)粼?/a>

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉