新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 基于DSP的聲控系統設計與實現

        基于DSP的聲控系統設計與實現

        作者: 時間:2014-12-07 來源:網絡 收藏

          系統軟件設計

        本文引用地址:http://www.104case.com/article/266441.htm

          軟件設計中最重要的部分就是編寫語音識別程序。語音識別過程本質上是一種多維模式識別過程。針對凌陽單片機編寫語音識別程序,主要可以分為:訓練、辨識、辨識結果輸出三部分。

          1 訓練程序

          當程序第一次運行時,需要進行語音識別訓練。完成識別訓練后,會在FLASH 存儲器中設定標志位,下次重新啟動時,可以跳過語音訓練過程,直接進行語音識別程序。如果用戶需要重新訓練,也可以通過按鍵來擦除標志位,該部分程序框圖如下:

          

        基于DSP的聲控系統設計與實現

         

          2 語音識別程序

          語音識別程序是整個程序編寫過程中最重要的部分, 主要可以分為辨識器初始化、識別過程實時監控、獲取辨識結果和終止辨識四部分。

          2.1 辨識初始化

          辨識初始化使用void BSR_InitRecognizer (int AudioSource)函數來實現。當參數AudioSource 取1 時為LINE_IN 電壓模擬量輸入;當參數AudioSource 取0 時為MIC 語音輸入。

          2.2 識別過程實時監控

          該功能調用void BSR_EnableCOUIndicator()函數來實現,主要用來辨識是否正常工作。如果辨識正常,CPU 會產生一個占空比為50%的方波。如果CPU 超載,則會產生不穩定的波形,這時為了避免語音辨識產生錯誤信息,就需要刪除命令或者優化程序。

          2.3 獲取辨識結果

          該功能調用int BSR_GetResult()函數來實現,當無命令識別出來時,返回值為0;當識別器未初始化或識別未激活返回-1;當識別不合格時返回-2;當識別出來時,返回命令的序號。

          2.4 終止辨識

          該功能調用void BSR_StopRecognizer()函數實現,主要用于停止識別,并關閉FIQ_TMA 中斷。

          3 辨識結果輸出

          通過BSR_GetResult()可以得到命令的序列號,將命令的序列號改寫成Voyager II 型機器人的相關協議, 然后通過RS232口傳輸給機器人即可達到語音控制的目的。

          4 串口通信程序

          為了方便用戶對Voyager II 型機器人進行二次開發, 北京博創興盛機器人技術有限公司提供了標準串行接口, 并制定了詳細的通信協議,供用戶使用。為了提高通信的效率和穩定性,在Voyager II 型機器人內部,先將RS-232 標準電平轉換為TTL電平,再將TTL 電平通過MAX491 轉換為RS-485 的標準電平。

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

          主機和從機采用標準的“一問一答”通信機制,如果主機的命令需要有數據反饋,則返回需要的數據;如果不需要數據反饋,就返回上位機發送的命令。

          下面,以控制機器人前進為例說明串口通信的協議格式:

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

          (2)發送接收設備地址:0x01

          (3)發送數據長度:0x04

          (4)發送命令字:0x26

          (5)發送左電機速度兩字節:0x00 0x06

          (6)發送右電機速度兩字節:0x00 0x06

          (7)發送數據效驗和:0x3A

          在明確了協議格式和需要發送的內容之后, 就可以編寫串口通信程序。首先,根據SPCE061A 的PLL 頻率和需要設定的波特率,計算出P_UART_BaudScalarHigh 和P_UART_BaudScalar-Low 的取值,完成串口參數的設定。在完成設定后,將需要發送的數據存儲到P_UART_Data 中,SPCE061A 就可以將數據發送給Voyager II 型機器人。由于,SPCE061A 的串口每次只能發送1個字節的數據,所以需要采用循環的方式,依次將通信內容發送給Voyager II 型機器人。Voyager II 型機器人收到指令后, 就可以按照指令,進行相應的動作。

          總結

          本系統采用了低成本 的-SPCE061A 作為主控芯片,和傳統的基于PC 機的相比, 雖然識別的語音庫相對較少,但是其具有低成本、低功耗、體積小和使用靈活方便等特點,不僅適合于中、小型機器人,還適合于教學科研使用。所以,本聲控系統 具有良好的市場前景和廣闊的使用空間。

        存儲器相關文章:存儲器原理


        聲控燈相關文章:聲控燈原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 湘乡市| 沁源县| 三台县| 义乌市| 虹口区| 凭祥市| 广丰县| 扶风县| 屏东县| 高淳县| 青冈县| 登封市| 凌云县| 宝丰县| 罗田县| 广昌县| 芜湖市| 任丘市| 廊坊市| 合作市| 攀枝花市| 崇阳县| 寿宁县| 任丘市| 惠来县| 诸暨市| SHOW| 兖州市| 缙云县| 彭水| 樟树市| 裕民县| 兴和县| 邹平县| 石屏县| 镇沅| 古交市| 牡丹江市| 响水县| 云霄县| 淳安县|