ADPCM的matlab仿真精講_第1頁(yè)
ADPCM的matlab仿真精講_第2頁(yè)
ADPCM的matlab仿真精講_第3頁(yè)
ADPCM的matlab仿真精講_第4頁(yè)
ADPCM的matlab仿真精講_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ADPCM編碼與解碼一、 實(shí)驗(yàn)原理與目的 目前,脈沖編碼調(diào)制(PCM)的數(shù)字通信系統(tǒng)已經(jīng)在大容量數(shù)字微波、光纖通信系統(tǒng),以及市話網(wǎng)局間中繼傳輸系統(tǒng)中獲得廣泛的應(yīng)用。但是現(xiàn)有的PCM編碼必須采用64Kbit/s的A律或律對(duì)數(shù)壓擴(kuò)的方法,才能符合長(zhǎng)途電話傳輸語(yǔ)音的質(zhì)量指標(biāo),其占用頻帶要比模擬單邊帶通信系統(tǒng)寬很多倍。這樣,對(duì)于費(fèi)用昂貴的長(zhǎng)途大容量傳輸,尤其是對(duì)于衛(wèi)星通信系統(tǒng),采用PCM數(shù)字通信方式時(shí)的經(jīng)濟(jì)性很難和模擬相比擬。因此,人們一直致力于研究壓縮數(shù)字化語(yǔ)音占用頻帶的工作,也就是努力在相同質(zhì)量指標(biāo)的條件下,降低數(shù)字化語(yǔ)音數(shù)碼率,以提高數(shù)字通信系統(tǒng)的頻帶利用率。 自適應(yīng)差值編碼調(diào)制(ADPCM)是

2、在差值脈沖編碼調(diào)制(DPCM)基礎(chǔ)上逐步發(fā)展起來(lái)的。它在實(shí)現(xiàn)上采用預(yù)測(cè)技術(shù)減少量化編碼器輸入信號(hào)的多余度,將差值信號(hào)編碼以提高效率、降低編碼信號(hào)速率,這廣泛應(yīng)用于語(yǔ)音和圖像信號(hào)數(shù)字化。CCITT近幾年確定了64Kb/s32kb/s的變換體制,將標(biāo)準(zhǔn)的PCM碼變換為32kb/s的ADPCM碼,傳輸后再恢復(fù)為64Kb/s的PCM信號(hào),從而使64Kb/s數(shù)字話音壓縮速率一倍,使傳輸信道的容易擴(kuò)大一倍。 ADPCM中的量化器與預(yù)測(cè)器均采用自適應(yīng)方式,即量化器與預(yù)測(cè)器的參數(shù)能根據(jù)輸入信號(hào)的統(tǒng)計(jì)特性自適應(yīng)于最佳參數(shù)狀態(tài)。通常,人們把低于64Kb/s數(shù)碼率的語(yǔ)音編碼方法稱為語(yǔ)音壓縮編碼技術(shù),語(yǔ)音壓縮編碼方法

3、很多,自適應(yīng)差值脈沖調(diào)制(ADPCM)是語(yǔ)音壓縮編碼中復(fù)雜程度較低的一種方法。它能32kbit/s數(shù)碼率上達(dá)到符合64kbit/s數(shù)碼率的語(yǔ)音質(zhì)量要求,也就是符合長(zhǎng)途電話的質(zhì)量要求。ADPCM是波形編碼中非常有效的一種數(shù)字編碼方式。在ADPCM系統(tǒng)中量化器和預(yù)測(cè)器均采用自適應(yīng)方式,即量化器和預(yù)測(cè)器的參數(shù)能隨輸入信號(hào)的統(tǒng)計(jì)特性自適應(yīng)于或接近于最佳的參數(shù)狀態(tài)。與PCM系統(tǒng)相比,ADPCM的量化器和預(yù)測(cè)器都是根據(jù)前面出現(xiàn)的PCM抽樣值并對(duì)下一個(gè)抽樣值進(jìn)行預(yù)測(cè),將當(dāng)前的抽樣值和預(yù)測(cè)值進(jìn)行求差,然后對(duì)差值進(jìn)行編碼。對(duì)差值編碼需要的位數(shù)要比直接對(duì)原始語(yǔ)音信號(hào)編碼所需的位數(shù)少,從而達(dá)到對(duì)信號(hào)壓縮的目的,在這

4、里編碼所包含的信息從原來(lái)的原始語(yǔ)音信號(hào)變?yōu)檎Z(yǔ)音信號(hào)之間的變化。1.1 脈沖編碼調(diào)制PCMPCM編碼是Pulse Code Modulation的縮寫(xiě),又叫脈沖編碼調(diào)制,它是數(shù)字通信的編碼方式之一,其編碼主要過(guò)程是將話音、圖像等模擬信號(hào)每隔一定時(shí)間進(jìn)行取樣,使其離散化,同時(shí)將抽樣值按分層單位四舍五入取整量化,同時(shí)將抽樣值按一組二進(jìn)制碼來(lái)表示抽樣脈沖的幅值。PCM編碼的最大的優(yōu)點(diǎn)就是音質(zhì)好,最大的缺點(diǎn)就是體積大。我們常見(jiàn)的Audio CD就采用了PCM編碼,一張光盤(pán)的容量只能容納72分鐘的音樂(lè)信息。 PCM方式是由取樣,量化和編碼三個(gè)基本環(huán)節(jié)完成的。音頻信號(hào)經(jīng)低通濾波器帶限濾波后,由取樣,量化,編

5、碼三個(gè)環(huán)節(jié)完成PCM調(diào)制,實(shí)現(xiàn)A/D變化,形成的PCM數(shù)字信號(hào)再經(jīng)糾錯(cuò)編碼和調(diào)制后,錄制在記錄媒介上。數(shù)字音響的記錄媒介有激光唱片和盒式磁帶等。放音時(shí),從記錄媒介上取出的數(shù)字信號(hào)經(jīng)解調(diào),糾錯(cuò)等處理后,恢復(fù)為PCM數(shù)字信號(hào),由D/A變換器和低通濾波器還原成模擬音頻信號(hào)。將CDPCM數(shù)字信號(hào)變換還原成模擬信號(hào)的解碼器稱為CD-PCM解碼器。脈沖調(diào)制就是把一個(gè)時(shí)間連續(xù),取值連續(xù)的模擬信號(hào)變換成時(shí)間離散,取值離散的數(shù)字信號(hào)后在信道中傳輸.脈沖編碼調(diào)制就是對(duì)模擬信號(hào)先抽樣,再對(duì)樣值幅度量化,編碼的過(guò)程. 所謂抽樣,就是對(duì)模擬信號(hào)進(jìn)行周期性掃描,把時(shí)間上連續(xù)的信號(hào)變成時(shí)間上離散的信號(hào).該模擬信號(hào)經(jīng)過(guò)抽樣后

6、還應(yīng)當(dāng)包含原信號(hào)中所有信息,也就是說(shuō)能無(wú)失真的恢復(fù)原模擬信號(hào).它的抽樣速率的下限是由抽樣定理確定的.在該實(shí)驗(yàn)中,抽樣速率采用8Kbit/s. 所謂量化,就是把經(jīng)過(guò)抽樣得到的瞬時(shí)值將其幅度離散,即用一組規(guī)定的電平,把瞬時(shí)抽樣值用最接近的電平值來(lái)表示. 一個(gè)模擬信號(hào)經(jīng)過(guò)抽樣量化后,得到已量化的脈沖幅度調(diào)制信號(hào),它僅為有限個(gè)數(shù)值. 所謂編碼,就是用一組二進(jìn)制碼組來(lái)表示每一個(gè)有固定電平的量化值.然而,實(shí)際上量化是在編碼過(guò)程中同時(shí)完成的,故編碼過(guò)程也稱為模/數(shù)變換,可記作A/D.1.2 差分脈沖編碼調(diào)制DPCM差分PCM(Differential PCM)記錄的不是信號(hào)的絕對(duì)大小而是相對(duì)大小。因?yàn)樾盘?hào)的

7、相對(duì)大小的變化通常要比信號(hào)本身要小,編碼是所用的碼位也就少。如果取樣頻率足夠高,大多數(shù)連續(xù)的樣值之間會(huì)有很大的相關(guān)性。差分系統(tǒng)就是利用這種信息的冗余,不記錄信號(hào)的大小,而是記錄相鄰值之間的差值的大小。圖2.1 DPCM編碼器示意圖差分編碼采用預(yù)測(cè)編碼技術(shù),從輸入中減去預(yù)測(cè)值,然后對(duì)預(yù)測(cè)誤差進(jìn)行量化,最終的編碼就是預(yù)測(cè)值與實(shí)際值之間的差值。解碼器用以前的數(shù)據(jù)對(duì)當(dāng)前樣值進(jìn)行預(yù)測(cè),然后用誤差編碼重構(gòu)原始樣值。這種方法使用的比特?cái)?shù)較少,但它的性能決定于預(yù)測(cè)編碼方法以及它對(duì)信號(hào)變化的適應(yīng)能力。1.3 增量調(diào)制DMDPCM 對(duì)輸入信號(hào)與預(yù)測(cè)值之差進(jìn)行編碼。當(dāng)取樣的頻率提高時(shí),樣值之間的變化減小,樣值之間的

8、相對(duì)性變強(qiáng)。增量調(diào)制DM(Delta modulation)是一種特殊簡(jiǎn)化的DPCM,只用了1 bit的量化器,它采用較高的取樣頻率和1比特的編碼。因?yàn)橹荒苡靡粋€(gè)量化級(jí)來(lái)代表樣值的變化,為了跟蹤信號(hào)的變化,必須使用高的取樣頻率,一般要求在 200kHz以上。因此編碼反映的只是差分本身,而不是原始的信號(hào)。而且在DM中,當(dāng)語(yǔ)音波形幅度發(fā)生急劇變化時(shí),譯碼波形不能充分跟蹤這種急劇的變化而必然產(chǎn)生失真,這稱為斜率過(guò)載。而在沒(méi)有語(yǔ)音的無(wú)聲狀態(tài)時(shí),或者信號(hào)幅度為固定值時(shí),量化輸出都將呈現(xiàn)0、1交替的序列。這種噪聲稱為顆粒噪聲。1.4 自適應(yīng)增量調(diào)制ADM一般情況下,人耳對(duì)過(guò)載量化噪聲不是很敏感,而對(duì)顆粒噪

9、聲較為敏感,所以要將的幅值取得足夠小。但是取得小,過(guò)載噪聲就會(huì)增大,因而這時(shí)必須增加采樣頻率,以減少信號(hào)量化過(guò)程中的過(guò)載噪聲,然而如果提高采樣頻率,那么信息壓縮的效果就會(huì)降低。兼顧這兩方面的要求,應(yīng)采用隨輸入波形自適應(yīng)的改變大小的自適應(yīng)編碼方式,使值隨信號(hào)平均斜率而變化:斜率大時(shí),自動(dòng)增大;反之則減小。這就是自適應(yīng)增量調(diào)制ADM(Adaptive DM)。這個(gè)方法的原理是:在語(yǔ)音信號(hào)的幅值變化不太大的區(qū)間內(nèi),取小的值來(lái)抑制顆粒噪音;在幅值變化大的地方,取大的值來(lái)減小過(guò)載噪音。其增量幅度的確定方法為,首先在顆粒噪音不產(chǎn)生大的影響的前提下,確定最小的幅值。在同樣的符號(hào)持續(xù)產(chǎn)生的情況下,將幅值增加到

10、原來(lái)的2倍。即當(dāng)+、+這樣持續(xù)增加時(shí),如果下一個(gè)殘差信號(hào)還是相同的符號(hào),那么再將幅值增加一倍,如此下去,并且確定好某一個(gè)最大的幅值上限,只要在這個(gè)最大的幅值以內(nèi)同樣的符號(hào)持續(xù)產(chǎn)生,就將幅值繼續(xù)增加下去。如果相反,殘差信號(hào)值為異號(hào)時(shí),就將前面的幅值設(shè)為原來(lái)的1/2,重新以/2為幅值。也就是說(shuō),如果同樣的符號(hào)持續(xù)產(chǎn)生兩次以上,在第三次時(shí)就將幅值增加一倍,如果產(chǎn)生異號(hào),將幅值減小1/2。而且,當(dāng)異號(hào)持續(xù)產(chǎn)生而減小幅值時(shí),一直減小到以最初確定的最小的幅值為下限為止。這種ADM算法中,它的采樣率至少是16 kHz。二、 仿真思路2.1編碼原理自適應(yīng)差分脈沖編碼調(diào)制ADPCM(Adaptive Diffe

11、rential Pulse Code Modulation)用預(yù)測(cè)編碼來(lái)壓縮數(shù)據(jù)量。它結(jié)合了ADM的差分信號(hào)與PCM的二進(jìn)制碼的方法,是一種性能比較好的波形編碼。它的核心想法是:利用自適應(yīng)的思想改變量化階的大小,即使用小的量化階(step-size)去編碼小的差值,使用大的量化階去編碼大的差值,使用過(guò)去的樣本值估算下一個(gè)輸入樣本的預(yù)測(cè)值,使實(shí)際樣本值和預(yù)測(cè)值之間的差值總是最小。圖2.2 ADPCM原理框圖編碼的核心思想是對(duì)差值進(jìn)行編碼和預(yù)測(cè),采用非均勻量化,并使不同幅值的信號(hào)信噪比接近一致,避免大幅值語(yǔ)音信號(hào)信噪比大而小幅值語(yǔ)音信號(hào)信噪比小。ADPCM編碼過(guò)程如圖2.2所示輸示。輸入是一個(gè)16

12、bit二進(jìn)制補(bǔ)碼語(yǔ)音數(shù)據(jù),其范圍在32767到-32767之間。預(yù)測(cè)采樣值,與線性輸入的差值為d。量化器對(duì)差值進(jìn)行量化產(chǎn)生一個(gè)有符號(hào)的4位編碼數(shù)據(jù)I,這個(gè)數(shù)據(jù)的表示范圍在7到-7之間,最高位為符號(hào)位。編碼時(shí),首先計(jì)算16位的二進(jìn)制補(bǔ)碼的當(dāng)前采樣值和上一預(yù)測(cè)采樣值之間的差值d,這個(gè)差值的量化編碼即輸出4位ADPCM值I。在算法實(shí)現(xiàn)中,定義一個(gè)結(jié)構(gòu)變量存儲(chǔ)預(yù)測(cè)采樣和量化步長(zhǎng)索引,并制定了兩個(gè)表。一個(gè)表為索引調(diào)整表,其輸入為差值量化編碼I,用來(lái)更新步長(zhǎng)索引。另一個(gè)表為步長(zhǎng)調(diào)整表,其輸入為步長(zhǎng)索引,輸出為步長(zhǎng)q。編碼時(shí),首先用上一個(gè)采樣點(diǎn)的步長(zhǎng)索引查步長(zhǎng)調(diào)整表求出步長(zhǎng)q。如果當(dāng)前采樣值和采樣預(yù)測(cè)值之間

13、的差值d為負(fù),則I的D3位置1。如果該差值絕對(duì)值大于步長(zhǎng)q,則I的D2位置1。如果d-q大于q/2,則I的D1位置1,如果d-q-q/2大于q/4,則I的D0位置1。如果以上條件不滿足,則相應(yīng)位置0。這樣就確定了編碼值I。然后編碼值I作為索引調(diào)整表的輸入,查表輸出索引調(diào)整,并和結(jié)構(gòu)變量中原步長(zhǎng)索引相加,產(chǎn)生新的步長(zhǎng)索引,在下一個(gè)采樣值的編碼中使用。編碼輸出I后,編碼還需要重復(fù)進(jìn)行和解碼完全一樣的計(jì)算過(guò)程,求出新的預(yù)測(cè)采樣值。圖2.3 解碼原理框圖2.2解碼原理解碼是編碼的逆過(guò)程,ADPCM的解碼過(guò)程如圖2.3所示。解碼輸入即編碼輸出I,逆量化器將I逆量化成差值。差值與預(yù)測(cè)采樣相加得到解碼輸出。

14、解碼過(guò)程同編碼過(guò)程中求預(yù)測(cè)采樣的原理是一樣的,當(dāng)編碼端的能很好的跟蹤上時(shí),解碼端的也能同樣再現(xiàn)。這里涉及算法本身的時(shí)延和實(shí)現(xiàn)平臺(tái)、實(shí)現(xiàn)方法的實(shí)時(shí)性等因素。解碼時(shí)首先通過(guò)步長(zhǎng)索引查步長(zhǎng)調(diào)整表得到量化步長(zhǎng),差值量化編碼I經(jīng)逆量化器得到語(yǔ)音差值,這是求I的逆過(guò)程;然后與前次預(yù)測(cè)值一起重建當(dāng)前語(yǔ)音信號(hào),最后用固定預(yù)測(cè),更新預(yù)測(cè)采樣,用I更新量化步長(zhǎng)索引值。三、 程序代碼MATLAB程序如下:ADPCM編碼:function adpcm_y = adpcm_encoder(raw_y)IndexTable = -1, -1, -1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2,

15、4, 6, 8;%索引調(diào)整表StepSizeTable = 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878,

16、 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767;%步長(zhǎng)索引表prevsample = 0;previndex = 1;Ns = length(raw_y);n = 1;raw_y = 32767 * raw_y; % 降輸入信號(hào)變?yōu)?6bitwhile (n &

17、lt;= Ns)predsample = prevsample;%預(yù)測(cè)值傳遞index = previndex;%索引指針step = StepSizeTable(index);diff = raw_y(n) - predsample;%信號(hào)現(xiàn)在值與預(yù)測(cè)值差if (diff >= 0)%如果差值大于0,則負(fù)號(hào)位為0,否則為1code = 0;elsecode = 8;diff = -diff;%取正值endtempstep = step;%步長(zhǎng),量化級(jí)if (diff >= tempstep)code = bitor(code, 4);%按位或運(yùn)算,將第三位編碼為1diff = d

18、iff - tempstep;endtempstep = bitshift(tempstep, -1);%二進(jìn)制移位操作,目的是變成1/2if (diff >= tempstep)code = bitor(code, 2);%按位或運(yùn)算,第二位編碼為1diff = diff - tempstep;endtempstep = bitshift(tempstep, -1);if (diff >= tempstep)code = bitor(code, 1);%第一位編碼為1enddiffq = bitshift(step, -3);if (bitand(code, 4)%按位與運(yùn)算,提

19、取第三位diffq = diffq + step;endif (bitand(code, 2)diffq = diffq + bitshift(step, -1);endif (bitand(code, 1)diffq = diffq + bitshift(step, -2);endif (bitand(code, 8)predsample = predsample - diffq;elsepredsample = predsample + diffq;endif (predsample > 32767)predsample = 32767;elseif (predsample <

20、 -32768)predsample = -32768;endindex = index + IndexTable(code+1);if (index < 1)index = 1;endif (index > 89)index = 89;endprevsample = predsample;previndex = index;adpcm_y(n) = bitand(code, 15);%adpcm_y(n) = code;n = n + 1;endADPCM解碼:function raw_y = adpcm_decoder(adpcm_y)IndexTable = -1, -1,

21、-1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2, 4, 6, 8;StepSizeTable = 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 11

22、66, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767;prevsample = 0;previndex = 1;Ns = length(adpcm_y);n = 1;while (n <= Ns)predsample = prevsample;index = previndex;step = StepSizeTable(index);code = adpcm_y(n);diffq = bitshift(step, -3);if (bitand(code, 4)diffq = diffq + step;endif (bitand(code, 2)diffq = diffq + bitshift(step, -1);endif (bitand(code, 1)diffq = diffq + bitshift(step, -2);endif (bit

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論