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

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 基于DSP的語音實時變速系統(tǒng)設計

          基于DSP的語音實時變速系統(tǒng)設計

          ——
          作者: 時間:2007-12-17 來源: 收藏

            引言

            在外語多媒體教學中,要求對語速進行快慢控制,以適應不同程度學生的需求。然而,傳統(tǒng)的語音變速產品往往在教師改變語速的同時,也改變了原說話者的語調,不能達到教學的真正目的。因此,語音變速系統(tǒng)應當具備調整語速的同時,還需要保證原說話者語調保持不變的特點。本文介紹的就是一種基于的語音實時變速系統(tǒng)。另外,考慮到在實際系統(tǒng)中語音的壓縮存儲和語音變速往往是同時需求的,因此本文提出一種基于LPC低比特率語音編碼算法的語音變速算法,該算法能夠任意調整語音語速。

            

            LPC編碼將語音信號s(n)看作一個時變的聲道系統(tǒng)在聲門的激勵之下的輸出信號。對濁音而言,聲門激勵為一周期脈沖串;而對清音而言,聲門激勵為隨機噪聲序列。語音信號的簡化框圖如圖1所示。

            

          語音信號的簡化框圖

            在LPC編碼中,可以將一幀的語音信號用簡化模型的參數(shù)來表示,如濁音、清音判別,基音周期,增益G以及數(shù)字濾波器系數(shù){a1},這樣就可以獲得3kb/s的編碼。解碼時,由于在LPC編碼中,濁音可以看作是一周期脈沖串的激勵,其中,脈沖周期為基音周期,因此,為了改變語音的速率,我們將語音的幀長變長,在其中再加入若干的脈沖串的激勵即可得到變速的語音信號。

            硬件系統(tǒng)設計

            本系統(tǒng)是一個完善的應用系統(tǒng),主要完成對語音信號的實時LPC編解碼及語音變速,此外,還具有鍵盤控制功能和語音錄放功能。因此,本系統(tǒng)不但需要外部的SRAM存放語音數(shù)據,而且需要與相連接的鍵盤控制設備。本系統(tǒng)主要由、TLC320AD50、SST39VF400A和CY7C133等構成,系統(tǒng)框圖如圖2所示。內部提供的32K字片內RAM用來存放實時運行的程序和數(shù)據,片外SRAM(CY7C133)用于存放編碼后的語音數(shù)據。系統(tǒng)的工作過程如下:系統(tǒng)加電后,通過復位建使TMS320C5409復位。TMS320C5409復位后,由內部固化的自引導程序將Flash(SST39VF400A)上的程序和初始化數(shù)據搬移到片內RAM,然后TMS320C5409根據鍵盤的控制執(zhí)行操作,運行LPC編碼運算(錄音)、LPC解碼和語音變速(放音),調整語音變速速率。

            

          系統(tǒng)框圖

            TMS320C5409用于實現(xiàn)語音的編解碼算法,TLC320AD50用于完成語音信號的數(shù)/模和模/數(shù)轉換功能。TMS320C5409與TLC320AD50之間通過McBSP串口通信。為了減輕CPU的負擔,本系統(tǒng)中設計McBSP通過DMA收到或發(fā)送完一組單元后,再給CPU中斷的方式跟CPU通信。TMS320C5409與TLC320AD50的接口如圖3所示。

            采用DMA的方式,即串口每收到或發(fā)送一組單元,都會自動觸發(fā)DMA將其搬送到一個內部的Buffer中,等Buffer滿了再通過中斷方式告訴CPU處理。這時DMA最好采用ABU(Auto Buffering)模式,可以有效防止Buffer中的數(shù)據在串口速率較高時被新數(shù)據沖掉的問題。在進行語音變速時,只需要將13MA通道的幀長做相應的改變即可。

            SST39VF400A(256K



          評論


          相關推薦

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