<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于LD332O語音識別專用芯片實現的語音控制

          基于LD332O語音識別專用芯片實現的語音控制

          作者: 時間:2012-02-16 來源:網絡 收藏

          b.jpg


          主控MCU與LD3320的連接關系如圖2所示,MCU的P0端口的8根線和LD3320并行方式連接,線也分別連接。此外還連接了復位信號和中斷信號。對LD3320來說,復位信號(RSTB)由MCU發(fā)出,而中斷信號由LD3320發(fā)出,MCU負責接收。
          另外,還有一些輔助電路,比如麥克風的偏置、喇叭音量的,以及電源的去耦等,這里不作詳細介紹。

          3 LD3320的軟件編程
          3.1 編程模式
          主控MCU通過讀/寫LD3320的寄存器完成操作。用戶有兩種編程模式:“中斷模式”和“輪詢模式”。
          所謂中斷模式,就是系統(tǒng)的主控MCU在接收到外界一個觸發(fā)后(比如用戶按動某個按鍵),啟動LD3320的一個定時過程(比如5s),要求用戶在這個定時過程中說出要關鍵詞語。過了這個過程后,需要用戶再次觸發(fā)才能再次啟動一個過程。
          所謂輪詢模式,就是系統(tǒng)的主控MCU反復啟動識別過程。如果沒有人說話沒有識別結果,則每次識別過程的定時到時后再啟動一個識別過程;如果有識別結果,則根據識別作相應處理后(比如播放某個聲音作為回答)再啟動一個識別過程。
          3.2 程序流程
          識別的操作流程是:
          (1)識別用初始化(包括通用初始化)。在此步驟中,對各寄存器進行初始化設置。
          (2)寫入識別列表。LD3320是一個詞庫的語音識別,在此步驟中,應將待識別的短語寫入識別列表。列表的規(guī)則是,每個識別條目對應一個特定的編號(1個字節(jié)),不同的識別條目的編號可以相同,而且不用連續(xù),但是數值要小于256(00H~FFH)。
          (3)開始識別,并準備好中斷響應函數,打開中斷允許位。
          (4)響應中斷。如果麥克風采集到聲音,不管是否以別出正常結果,都會產生一個中斷信號。而中斷程序要根據寄存器的值分析結果。讀取BA寄存器的值,可以知道有幾個候選答案,而C5寄存器里的答案是得分最高、最可能正確的答案。
          如果不用中斷方式,也可以通過查詢方式工作。在“開始識別”后,讀取寄存器B2H的值,如果為21H就表示有識別結果產生。在此之后讀取候選項等操作與中斷方式相同。
          LD3320還具有MP3播放的功能,在這里不再進行介紹。

          4 結論
          LD3320的功能是完成有限詞組的非特定人語音識別,我們將其應用在一個虛擬環(huán)境下戰(zhàn)術訓練課題中。戰(zhàn)術訓練中,常常需要下達一些短口令,而在我們所設計的訓練環(huán)境中,如果口令采用鍵盤或鼠標的方式進行輸入,顯然有違設計的初衷。所以,我們使用LD3320設計VUI電路,用語音識別的方式,將獲得的識別結果再轉換成串口信號,輸入計算機,達到語音控制的目的。
          實踐證明,這種方式可以滿足語音控制的要求,但是語音識別的速度,即實時性還有待改進。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();