新聞中心

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

基于CM70C01的語(yǔ)音壓縮編碼

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

2004年6月A版

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

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

引言

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

特征參數(shù)的提取

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

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

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

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

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

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

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

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

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

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

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

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

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

CM70C01的解碼和編碼

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

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

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

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

  P=(Pcurrent-Pnew)Timer+Pnew

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

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

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

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

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

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

結(jié)語(yǔ)

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

參考文獻(xiàn):

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

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

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



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

評(píng)論


相關(guān)推薦

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

關(guān)閉