機器人聲控系統的研究一直是機器人研究的主要內容之一。傳統的聲音控制系統一般采用PC 機作為核心平臺對機器人進行控制,雖然其具有處理能力強大、語音庫完備、系統更新能力強等優點,但是PC 機體積大,功耗大,成本高,不適合于中、小型機器人使用。本文以SPCE061A 為核心,設計了一套機器人聲控系統,和傳統的PC 機聲控系統相比較,具有成本低、體積小、耗能低和使用靈活方便等特點。
本系統采用的機器人平臺是北京博創興盛機器人技術有限公司提供的 Voyager II 型地面移動機器人,該機器人采用了模塊化的設計理念,高負載能力的直流伺服控制,可選配聲納、紅外、視覺、羅盤、GPS 等傳感器和機械手等執行器。完全可以滿足聲控系統的設計要求。本文提出了一種以凌陽單片機為核心的Voyager II 型機器人聲控系統的設計方案, 該產品具有低成本、低功耗、體積小和使用靈活方便等特點,不僅適合于中、小型機器人使用,還適合與教學科研使用。
系統的整體設計分為硬件設計和軟件設計兩部分,下面首先介紹一下系統的硬件設計。
?
系統硬件結構
?
根據機器人平臺情況, 聲控系統的硬件結構主要由微處理器單元、供電單元、聲音采集單元和串口輸出單元四部分組成,如圖所示:
DSP的聲控系統設計與實現“ src=”/uploadfile/DSP/uploadfile/201412/20141214052908362.jpg“ width=”359“ height=”231“ /》
1 微處理器單元
本系統采用凌陽公司的16 位單片機SPCE061A 作為核心控制芯片,內置32K 閃存,其較高的處理速度能使芯片非??焖俚奶幚韽碗s的數字信號, 適用于語音識別等應用領域。
SPCF061A 的工作頻率范圍為0.32-49.152MHz.具備8 通道10位ADC 輸入功能, 內置了具有自動增益控制的麥克風輸入功能。雙通道10 位DAC 音頻輸出功能及A、B 兩個I/ 0 口輸入輸出功能。具有集成度高、性能可靠、價格低廉、功耗小等特點。這些特點充分體現了微控制器工業發展的新趨勢。目前,凌陽單片機SPCE061A 的應用越來越廣,深受廣大用戶的歡迎。
2 聲音采集單元
聲音采集單元的換能器采用駐極體話筒, 通過話筒將采集到的聲音信號通過MIC_IN 通道傳送給CPU,MIC_IN 通道專門用于對語音信號進行采樣。語音信號經MIC 轉換成電信號,由電容將其中的直流成分濾除, 然后輸入到集成在SPCE061A 內部的前置放大器中。SPCE061A 的內部增益控制電路AGC 能隨時跟蹤、監視前置放大器輸出的音頻信號的電平,當輸入信號過大時,自動減小放大器增益;當輸入信號減小時,自動增大放大器增益。這樣即可以使A/D 轉換器接收到的信號一直保持在最佳電平,又可以使聲音損失減至最少,從而提高語音識別的精度。
3 外接供電單元
外接 供電單元是聲控系統的選配單元, 由于聲控系統的能耗很低,可以外接3 個1.5V 電池,作為外接供電單元給系統供電。在沒有選配外接供電單元時,也可以直接使用Voyager II 型地面移動機器人的蓄電池為關濟實: 講師工學碩士聲控系統供電,Voyager II 型機器人的蓄電池供電電壓為24V, 將24V 電壓先經過7805 轉換成5V電壓, 然后使用SPY0029 將5V 電壓轉換成3.3V 電壓給SPCE061A 供電。
4 存儲器單元
存儲器單元也是聲控系統的選配單元, 當需要識別的語音資源較少時,則使用單片機中 集成的FLASH 存儲器,就可以滿足要求。當語音資源較豐富時,就需要連接外部存儲器單元,對語音資源進行存儲。為了保證系統的兼容性, 選用凌陽公司的SPR4096 作為外部存儲器, LASHSPR4096 內部有512K×8bits F和4K×8bits SRAM 在進行FLASH 編程或擦除的時候,可以并發執行SRAM 的讀寫,SPR4096 內置了一個總線存儲器接口和一個串行接口,它允許單片機通過8_bit 并行模式或者1_bit 串行模式訪問FLASH SDRAM 的存儲區。在本系統中,將SPR4096的SCK 和SDA 與SPCE061A 的IOB0 和IOB1 連接, 構成串行數據通信。
5 串口輸出單元
由于SPCE061A 單片機的輸入、輸出電平是TTL 電平,而Voyager II 型機器人配置的是RS-232 標準串行接口,二者的電氣規范不一致。因此,要完成SPCE061A 和機器人之間的串行通信,必須對SPCE061A 輸出的TTL 電平進行電平轉換,本系統中使用MAXIM 公司的MAX232 作為電平轉換芯片。MAX232 使用單電源供電, 只需外接5 個0.1uF 的電容, 就可以實現SPCE061A 和Voyager II 型機器人之間的電平轉換。
?
系統軟件設計
?
軟件設計中最重要的部分就是編寫語音識別程序。語音識別過程本質上是一種多維模式識別過程。針對凌陽單片機編寫語音識別程序,主要可以分為:訓練、辨識、辨識結果輸出三部分。
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 線在不進行通信時為高阻狀態,只有在接收到與自己地址相符的數據幀時,才能占用總線,一旦通信結束,立即釋放總線,回到高阻狀態。
主機和從機采用標準的“一問一答”通信機制,如果主機的命令需要有數據反饋,則返回需要的數據;如果不需要數據反饋,就返回上位機發送的命令。
下面,以控制機器人前進為例說明串口通信的協議格式:
?。?)發送固定通信字頭兩字節:0x55 0xAA
?。?)發送接收設備地址:0x01
?。?)發送數據長度:0x04
(4)發送命令字:0x26
(5)發送左電機速度兩字節:0x00 0x06
?。?)發送右電機速度兩字節:0x00 0x06
?。?)發送數據效驗和:0x3A
在明確了協議格式和需要發送的內容之后, 就可以編寫串口通信程序。首先,根據SPCE061A 的PLL 頻率和需要設定的波特率,計算出P_UART_BaudScalarHigh 和P_UART_BaudScalar-Low 的取值,完成串口參數的設定。在完成設定后,將需要發送的數據存儲到P_UART_Data 中,SPCE061A 就可以將數據發送給Voyager II 型機器人。由于,SPCE061A 的串口每次只能發送1個字節的數據,所以需要采用循環的方式,依次將通信內容發送給Voyager II 型機器人。Voyager II 型機器人收到指令后, 就可以按照指令,進行相應的動作。
總結
本系統采用了低成本 的DSP-SPCE061A 作為主控芯片,和傳統的基于PC 機的語音識別系統相比, 雖然識別的語音庫相對較少,但是其具有低成本、低功耗、體積小和使用靈活方便等特點,不僅適合于中、小型機器人,還適合于教學科研使用。所以,本聲控系統 具有良好的市場前景和廣闊的使用空間。
評論
查看更多