新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CM70C01的語音壓縮編碼

基于CM70C01的語音壓縮編碼

作者:中科院微電子所 徐曉冬 彭崇梅 李全圣 時間:2004-10-18 來源:電子產(chǎn)品世界 收藏

2004年6月A版

摘  要:是處理多種語音壓縮格式的混合信號處理芯片,由于編碼和解碼部分的標準不統(tǒng)一,使得部分語音壓縮文件與不兼容。本文在深入了解解碼和語音合成的基礎(chǔ)上,就LPC-10提出符合CM70C01的語音壓縮編碼方法。

關(guān)鍵詞:能量;音調(diào);反射系數(shù);語音壓縮

引言

  CM70C01是中科微電子公司生產(chǎn)的混合信號處理芯片,集成8位MCU和語音合成電路,具有編程方便,能處理LPC-10、CELP、PCM、MELP等多種語音壓縮格式的能力和較優(yōu)的性價比,可以應(yīng)用在各種語音處理場合。但由于LPC-10、CELP和MELP等語音格式在編碼和解碼部分有多種不同的標準,而且這些標準之間并不兼容,因此用戶自行編制的語音數(shù)據(jù)并不一定能被CM70C01識別或處理。在熟知語音壓縮基本算法而又缺少語音開發(fā)板和相應(yīng)軟件的情況下,就可以用純軟件的方法來實現(xiàn)基于CM70C01的語音壓縮編碼。本文以LPC-10為例子,說明特征參數(shù)的提取、編碼的幀結(jié)構(gòu)以及CM70C01的解碼和編碼的實現(xiàn)。

特征參數(shù)的提取

  語音具有樣點間的短時相關(guān)性和相鄰基因周期間的長時相關(guān)性,可以用一個全極點模型來描述一小段語音的生成模型。在利用線性預(yù)測方法對語音進行上述兩種相關(guān)性的去相關(guān)處理后,能夠得到預(yù)測的余量信號。根據(jù)余量信號和全極點模型的預(yù)測系數(shù),就可以合成語音。這就是線性預(yù)測編碼。

  線性預(yù)測編碼(LPC-10)是將線性預(yù)測理論運用到語音編碼領(lǐng)域的一個典型例子。在預(yù)測編碼過程中,以幀為單位來分析和提取語音信號的相關(guān)特征參數(shù),這些特征參數(shù)有包括:全極點模型的預(yù)測參數(shù){ai}、能量增益(Energy)、音調(diào)(Pitch)、濁/清音標志(V/UV)。由特征參數(shù)來表述語音信號既可減小存儲空間,又可以低速率來進行傳輸。在接收端,根據(jù)幀的特征參數(shù)決定激勵源、基音塊和幀塊間的插值,最后通過格型濾波器來合成語音。

  由于預(yù)測參數(shù)不適于直接量化,因為它的微小變化會造成極點位置很大的變化,所以一般采用在數(shù)學(xué)上與之完全等價的反射系數(shù)K1~K10代替預(yù)測參數(shù)進行量化編碼。反射系數(shù)的穩(wěn)定條件是|Ki|<1,這在量化時是容易保證的。可以用Choleski UV分解法對LPC正則方程的系數(shù)矩陣求逆,得出反射系數(shù)。這種算法能夠比較準確的計算出共振峰的寬度,但由于篇幅關(guān)系,在這里不詳細敘述。

  能量(語音波形的振幅)一般用如下公式計算:

  式中Si為采樣取得的數(shù)字語音(一般還需經(jīng)過預(yù)加重處理,加強音譜中的高頻共振峰),M為一幀的采樣點數(shù)。

  音調(diào)即基音周期,用平均幅度差函數(shù)AMDF計算。數(shù)字語音經(jīng)過一個四階Butterworth低通濾波器后再經(jīng)過二階逆濾波,然后計算延遲時間為個樣點的AMDF,由AMDF的最小值確定周期。

  t的取值可為20~156。假設(shè)數(shù)字語音的采樣頻率為8KHz,t為60時AMDF最小,則

  濁/清音的標志是根據(jù)AMDF最大值與最小值之比和過零率,用動態(tài)規(guī)劃算法,在三幀范圍內(nèi)進行平滑和錯誤糾正而得出的。該標志有穩(wěn)定的清音、清音向濁音轉(zhuǎn)換、濁音向清音轉(zhuǎn)換和穩(wěn)定的濁音這四種狀態(tài)。

編碼的幀結(jié)構(gòu)

  在LPC-10傳輸數(shù)據(jù)流中,以幀為單位對特征系數(shù)進行編碼。一般LPC-10數(shù)據(jù)按幀類型可劃分為濁音幀和清音幀,其比特分配如表1。

  基因周期和濁/清音標志用7比特表示,能量用5比特表示。濁音幀有10個反射系數(shù),而清音幀只有4個反射系數(shù),但比濁音多用20比特作為誤差糾正。另外,每一幀數(shù)據(jù)當(dāng)中還包含有1比特同步信號。

  而在CM70C01默認的語音編碼格式中,除了濁音幀和清音幀,還細分出重復(fù)幀、靜音幀和停止幀。顧名思義,這三種類型的幀分別表示重復(fù)上一幀的反射系數(shù)、靜音和停止合成語音。它的比特分配表如表2。

  能量用4比特表示:全0時為靜音幀,沒有音調(diào)和反射系數(shù);全1時為停止幀,相當(dāng)于結(jié)束標志,只會出現(xiàn)在語音數(shù)據(jù)末尾。重復(fù)標志(Repeat)為1時,該幀為重復(fù)幀,表示它的反射系數(shù)與上一幀的相同。音調(diào)用7比特表示,全0時表示該幀為清音幀。所有的幀都沒有誤差糾正和同步信號。

CM70C01的解碼和編碼

  在對比幀結(jié)構(gòu)的不同之后,再進一步了解特征參數(shù)在CM70C01解碼、合成語音過程中的作用。CM70C01取得一幀的數(shù)據(jù)后,按下列步驟進行處理

  各參數(shù)根據(jù)自身的解碼表進行解碼,而根據(jù)解碼表可以近似的推算出編碼表。一般語音信號量化采用的是非均勻量化,采用最佳非均勻量化時,最佳分層電平應(yīng)取兩個相鄰量化電平的中點。

  xk為分層電平,即量化區(qū)間的上限值;yk為量化電平;L為量化電平數(shù)。落在區(qū)間jk={xk<x≤xk+1}的值x量化后用yk表示。量化電平與解碼表是一一對應(yīng)的,如果解碼表碼子對應(yīng)的解碼值就是量化電平,那么在已知量化電平的條件下,就可以推算出各個量化區(qū)間的分層電平,從而得出量化編碼表。

  解碼后的參數(shù)都為十六進制數(shù),并且要與下一幀的參數(shù)進行插補。音調(diào)的插補公式:

  P=(Pcurrent-Pnew)Timer+Pnew

  Pcurrent為上一幀的周期值,Pnew為當(dāng)前幀的周期值,Timer為定時器的值。其他參數(shù)的插補方法同上。特征參數(shù)在插補后,能量和反射系數(shù)直接送到CM70C01選通聲道相應(yīng)的參數(shù)寄存器,而音調(diào)在乘以二后送入音調(diào)寄存器。

  在語音合成中,濁/清音標志決定了采用的激勵信號。如果是清音,則以隨機數(shù)(白噪聲)為激勵源;如果是濁音,則用一周期性沖激信號通過全通濾波器來產(chǎn)生激勵源。能量決定了合成語音的增益,也就是音量大小。反射系數(shù)直接確定了格型濾波器的參數(shù)。決定音調(diào)的除了音調(diào)寄存器(Pitch Register,PR)還有音調(diào)周期計數(shù)器(Pitch Period Counter,PPC)。

  假設(shè)合成器的取樣頻率是8K,在音調(diào)寄存器PR用TASYN指令加載后,每次取樣音調(diào)周期計數(shù)器PPC減20h,當(dāng)PPC小于0時,用音調(diào)寄存器PR中的值重新裝入PPC。當(dāng)PPC中的值減到小于200h或加載值小于200h時,微處理器可以做到,并決定何時執(zhí)行插補。當(dāng)音調(diào)周期計數(shù)器PPC減到140h~000h之間時,激勵函數(shù)加到LPC濾波器的輸入端。如果解碼后音調(diào)的值為7C0h,PR的值則為F80h,實際周期和頻率

  當(dāng)音調(diào)為133.33Hz即t為60(十進制數(shù),十六進制時為3Ch)時,對應(yīng)的解碼值為,對應(yīng)的量化碼子可查詢解碼表得到。

  根據(jù)上述參數(shù)的作用可知,能量和反射系數(shù)在解碼后直接用于語音合成,所以可根據(jù)解碼表直接推算出量化編碼表;而基因周期經(jīng)過一些簡單的計算也能由解碼表算出量化編碼表。經(jīng)過提取特征參數(shù),推算量化編碼表等一系列準備工作后,現(xiàn)在可以按照CM70C01幀的結(jié)構(gòu)對特征參數(shù)進行量化編碼。其步驟如下:

  對于本文的例子LPC-10來說,在編碼后有時還需要用戶根據(jù)經(jīng)驗修改反射系數(shù),那么只需在量化編碼過程中加入一個表格窗口,用于顯示和修改量化編碼數(shù)據(jù),就能完全替代語音開發(fā)板及其軟件獨立進行語音壓縮編碼。對于CELP、MELP這些語音壓縮格式,不需要提供表格窗口來修改編碼數(shù)據(jù)。

結(jié)語

  綜上所述,用純軟件的方法來實現(xiàn)基于CM70C01的LPC-10編碼是可行的。對于那些缺少相應(yīng)語音開發(fā)板和相關(guān)軟件支持而又希望使用CM70C01的用戶來說,本文提供的方法能夠較好的解決語音壓縮編碼的問題。如果要使用CM70C01支持的其他幾種語音壓縮格式,如CELP、MELP等,由于其編碼的原理與LPC-10類似,根據(jù)本文所提供的解決方法,可以實現(xiàn)基于CM70C01的語音壓縮編碼?!?/P>

參考文獻:

1. 楊行峻、遲惠生等,‘語音信號數(shù)字處理’,第二版,電子工業(yè)出版社,1998

2. L.R.拉賓那、R.W.謝弗 ,‘語音數(shù)字信號處理’,科學(xué)出版社,1982

3. 彭崇梅、李全圣,‘對線性預(yù)測語音解壓縮方法的探討’,電子產(chǎn)品世界,2001年4B期



關(guān)鍵詞: CM70C01 嵌入式

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉