對線性預測語音解壓縮方法的探討
摘要:本文針對常見的語音壓縮方法,具體敘述了線性預測編碼的基本原理及具體格式,并對算法實現的軟件及硬件進行了詳細的分析。
本文引用地址:http://www.j9360.com/article/242240.htm關鍵詞:線性預測編碼 格形濾波器 PWM MATLAB
引言
現實生活中,有大量語音數字存儲和傳輸、語音綜合、說話人確認和辨認、語音識別的應用,這些應用需要處理的數據量很大,這必須采用一定的壓縮方法進行處理。
對頻率范圍為300Hz——3000Hz的語音,諸如電腦語音圖書、真人發聲電子字典、語言學習機等,只需要一般的語音壓縮方法,而對20Hz——20KHz的音樂,則需高級的壓縮方法。當然,在選擇語音表示方法時,數據壓縮率不是唯的考慮,還要考慮價格、表示的靈活性、語音考慮價格、表示的靈活性、語音的質量等諸多因素。在選擇信號表示以及隨后作用的數字信號處理方法時最重要的考慮還是應用的實際需要。
針對我們目前開發的發音電子字典及語音學習機等產生,既需要音質清晰又要價格便宜,我們考慮采用參數表示語音信號的LPC,MELP,CELP壓縮方法。
LPC(Linear Predictive Coding-線性預測編碼),是一種低速率的語音參數表示方法,它根據最小的方誤差的準則,用過去的若干語音數字信號來預測當前的語音信號,將估算出來的語音參數送到語音合成模型后輸出語音。混合激勵線性預測MELP和碼本激勵線性預測CELP也是基于線性預測上的語音壓縮方法,數據壓縮量銷遜于LPC,但因其語音數據的制作不需要專門的硬件與有經驗的調音人員,在語音產品的開發中也得到了廣泛的應用,本文重點描述LPC算法的軟件和硬件實現。
LPC原理簡述
LPC語音編碼的基礎是語音產生模型,它模擬人的發生過程。在這個模型中,語音信號分為清音和濁間,在濁音時聲道中產生對應音調周期的脈沖列,而在清音時,則產生白噪聲序列,語音就是由這些激勵信號激勵一個自適應濾波器(即全極點濾波器)產生的。
LPC濾波器的參數ak是通過線性預測的方法,即用若干過去的樣值預測當前樣值提取的,預測值與真值之間的誤差滿足最小均方誤差準則。參數隨時間逐幀更新,更新速率30~100次/秒,即幀移為10~33ms。在每幀之間對參數進行內插以適應參數隨時間緩慢變化。
因此,LPC模型只需傳輸增益系數,濁音和清音的判決信息、濁音音調和全極點濾波器的參數{ak},k=1,…p,用超低BIT率便可實現語音信號的傳送。這種高壓縮率可以大大降低語音識別中的存儲量。
語音合成模型見圖1。
LPC軟件實現
LPC算法的實現有直接法、協方差法、自相關法、斜格法等諸多分析方法。其中斜格法能解決精度和穩定度的矛盾,它是以格形濾波器為基礎。我們所用的LPC聲碼器就是作斜格法來實現線性預測。
線性預測編碼算法的編碼格式中,有10個線性預測系數K1-K10、增益、音調、重復位總紅共編碼成54bits。
LPC各幀參數編碼格式見表1。
在解碼時,要對接收的數值進行轉換與插值。其算法接收的的數值進行轉換與插值。其算法流程見圖2.
線性預測系數、增益、基音周期等參數值每個基音周期更新一次,清音幀、濁音幀及靜音幀間相互轉換時不進行插值更新。濁音和清音的激勵信號是按基音周期從內部ROM區取出輸入到音調寄存器,與增益相乘后送到LPC濾波器。
LPC硬件實現
在線性預測分析中,語音信號直接決定一組預測系數,但由于語音信號有時變特性,為保證語音信號在短時間內預測參數及頻率固定,實驗以固定頻率聲響最后一響“嘀”為對象,對LPC聲碼器的硬件部分進行測試。首先,借助專用的LPC編碼設備生成PCL十六進制格式數據見表2。
從以上數據可以知道此語音由靜音幀、濁音幀和停止幀組成。第一幀是靜音幀,最后一幀是停止幀,中間40幀是濁音幀,該40個濁音幀具有相同的能量、音調及K參數。經分析得出能量值、音調及其K參數(見表3)。
表3 各參數計算值
名稱 | 位數 | 標號(二進制) | 標號(十六制進) | 查表值 | 實際參數值 |
增益 | 4 | 1001 | 9H | 1AH | 208 |
重復幀 | 1 | 0 | 0 | 0 | 0 |
音調 | 7 | 0000001 | 1H | 100H | 500HZ |
K1 | 6 | 101111 | 2FH | FECH | -0.009765625 |
K2 | 6 | 010111 | 17H | 0 | 0 |
K3 | 5 | 10111 | 17H | 14H | 0.15625 |
K4 | 5 | 01011 | BH | F9H | -0.0546825 |
K5 | 4 | 0101 | 5H | F3H | -0.1015625 |
K6 | 4 | 0100 | 4H | FCH | -0.03125 |
K7 | 4 | 1001 | 9H | 14H | 0.15625 |
K8 | 3 | 111 | 7H | 58H | 0.6875 |
K9 | 3 | 101 | 5H | 10H | 0.125 |
K10 | 3 | 101 | 5H | 11H | 0.1328125 |
K11 | 0 | ||||
K12 | 0 |
我們借助MATLAB工個搭成了12組格形濾波器及二階低通濾波器來模擬LPC模型中的數字濾波器,見圖3。將帶有增益的濁音送入輸入端,線性預測系數送入格形濾波器,濾波器采用10KHz采樣。
填入其余相應的參數后開始仿真,得出的結果見圖4。
從圖中可以看出,不考慮頻率因素,對增益、預測參數固定的這組語音數據而言,實驗結構最后超趨近于1024。
把數據1024輸入PWM寄存器,經過12位的脈寬調制(PWM)進行D/A轉換處理,可得出輸出模擬信號,占空比為:
1024/2048=0.5
同時,我們通過示波器直接測試語音芯片的DAC+端,可以觀察到頻率為500Hz、占空比為0.5的一系列的矩形脈沖見圖5,波形結果與通過MATLAB工具搭成的電路結果一致。
結語
我們對PLC,MELP,CELP不可逆語音壓縮法進行測試,得出了LPC語音合成格式、算法流程以及硬件12級格式、算法流程以及硬件12級形波器、低通濾波器的具體實現形式。從實驗可以證明LPC算法是通過軟件從語音數據包提取數據,經過軟件查表計算后將相應的參數送往硬件各部分處理,最后合成語音。
評論