[轉錄]
一、話說從頭
ADPCM是Adaptive Differential Pulse Code Modulation的簡寫
一般我們在聽的CD,以及常見的wav檔,都是用PCM的方式來把聲音數位化
那麼,PCM跟ADPCM有什麼差別呢?
其實說穿了也沒什麼,都是當初的先烈(!)前輩們所想出來,減少資料大小的辦法
二、何謂DPCM
要講ADPCM之前,我們先來看看DPCM是什麼
D=Differential,Differential這個字在這邊是"差",相差多少的意思
因此,顧名思義…
假設某段聲音的PCM編碼是 250,268,269,241,這樣子會花掉12個數字的儲存空間
那麼這段聲音改用DPCM會是250,+18,+19,-9,這樣子就只花8個數字的儲存空間
所以,DPCM是PCM的紀錄方式的改良,用較少的bit數記錄一樣的東西
而250,+18,+19,-10經由反推可以得到和PCM一樣的數字,所以DPCM是無失真的壓縮
三、從DPCM看ADPCM
但是這樣子能壓縮掉的東西很有限,所以我們需要ADPCM
A=Adaptive,Adaptive這個字是適應性的意思(英文教學時間@_@)
承接上面的例子,當PCM是250,268,269,241、DPCM是250,+18,+19,-9時
250,+18,+19,-10可以進一步簡化成250,(+9,+9,-5)*2←這個就是ADPCM的編碼
那麼可以發現,250,(+9,+9,-4)*2只要花6個數字的儲存空間,比DPCM更少
而250,(+9,+9,-4)*2反推回去後,得到250,+18,+18,-8,跟原來的不一樣了
所以ADPCM是失真性的壓縮
實際上,編碼器執行壓縮的工作時,會考慮前後波形的變化,選擇簡化所使用的數字,
比如上面的那個*2可能改為*5,這就是"Adaptive 適應性"的意義所在
再看看上面的例子,250,268,269,241->250,(+9,+9,-4)*2
想像一個有所變化的聲波,我們只記錄某個時間點,之後的波與那個時間點的差值
假如差值大過我們能省略的,那麼就再重新設立一個開始點
如此一來,我們就不需要用很多很長的數字來描述一段聲音的波形
因此,音樂CD需要用16個bits(-32768~+32767的數字範圍),才能記錄的聲音波形變化
經過ADPCM的簡化,就只需要4個bits(-8~+7的數字範圍)就可以記錄(*)
所以,ADPCM的壓縮比一般當作1:4,比MP3常用的1:10~1:12壓縮比要高一些
- Mar 18 Fri 2005 21:48
-
[轉錄]ADPCM
請先 登入 以發表留言。