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

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 語音識別及其定點DSP實現(xiàn)

          語音識別及其定點DSP實現(xiàn)

          作者: 時間:2010-08-30 來源:網絡 收藏

            2.2 系統(tǒng)的硬件結構

            在構成語音識別電路時,我們采用了A2181的主從結構設計方式,通過IDMA口由CPU裝載程序。語音識別系統(tǒng)的硬件結構如圖2所示。

          語音識別系統(tǒng)的硬件結構

            在這種結構中,PC機為主CPU,A2181為從CPU,由PC機通過IDMA口將程序裝載到A2181的內部存儲器中。PC機總線通過CPLD譯碼,形成IRD,IWR,IAL,IS等控制信號,與ADSP2181的IDMA口相連。這樣,在ADSP2181全速運行時,主機可以查詢從機的運行狀態(tài),可以訪問到ADSP2181內部所有的程序存儲器和數(shù)據存儲器。這對程序的編譯和調試,以及語音信號的實時處理帶來了極大的方便。

            3 語音識別的DSP實現(xiàn)技術

            3.1 浮點運算的定點實現(xiàn)

            在語音識別的算法中,有許多的浮點運算。用定點DSP來實現(xiàn)浮點運算是在編寫語音識別程序中需要首先解決的問題。這個問題可以通過數(shù)的定標方法來實現(xiàn)。數(shù)的定標就是決定小數(shù)點在定點數(shù)中的位置。Q表示法是一種常用的定標方法。其表示機制是:

            設定點數(shù)是J,浮點數(shù)是)/,則Q法表示的定點數(shù)與浮點數(shù)的轉換關系為:

            浮點數(shù))/轉換為定點數(shù)x:x= (int)y×2Q;

            定點數(shù)z轉換為浮點數(shù)y:y =(float)x×2-Q。

            3.2 數(shù)據精度的處理

            用16b的定點DSP實現(xiàn)語音識別算法時,雖然程序的運行速度提高了,但是數(shù)據精度比較低。這可能由于中間過程的累計誤差而引起運算結果的不正確。為了提高數(shù)據的運算精度,在程序中采用了以下的處理方法:

            (1)擴展精度

            在精度要求比較高的地方,將計算的中間變量采用32b,甚至48b來表示。這樣,在指令條數(shù)增加不多的情況下卻使運算精度大大提高了。

            (2)采用偽浮點法來表示浮點數(shù)

            偽浮點法即用尾數(shù)+指數(shù)的方法來表示浮點數(shù)。這時,數(shù)據塊的尾數(shù)可以采用Q1.15數(shù)據格式,數(shù)據塊的指數(shù)相同。這種表示數(shù)據的方法有足夠大的數(shù)據范圍,可以完全滿足數(shù)據精度的要求,但是需要自己編寫一套指數(shù)和尾數(shù)運算庫,會額外增加程序的指令數(shù)和運算量,不利于實時實現(xiàn)。


            以上兩種方法,都可以提高運算精度,但在實際操作時,要根據系統(tǒng)的要求和算法的復雜度,來權衡考慮。



          關鍵詞: DSP

          評論


          相關推薦

          技術專區(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); })();