[디지털오디오] 부호화(Coding) - DPCM 및 ADPCM
Media/Media Science

[디지털오디오] 부호화(Coding) - DPCM 및 ADPCM

728x90
반응형

이전 글에서 오디오 신호의 표본화(Sampling)와 양자화(Quantization에 대해 설명했다.

부호화(Coding)는 표본화 및 양자화된 데이터를 비트 스트림으로 변환하는 작업이다.

 

우리는 이제 표본화율과 양자화 bit를 참고하여 오디오 데이터의 크기를 계산할 수 있다.

A. CD 품질로 디지털화한 4분 길이의 스테레오 음악 한곡의 크기는 얼마인가?

Q. 44100(Hz) * 16(bit) * 2(stereo) * 4(min) * 60(sec) = 338688000bit 40MB

 

음악 한곡에 40MB라니... 너무 크다. 100곡을 저장하려면 약 4GB의 저장공간이 필요하다.

따라서 우리는 부호화를 하는 과정에서 이 데이터를 압축할 필요가 있다.

 

압축의 종류에는 크게 무손실 압축 손실 압축 두가지 종류가 있다.

무손실 압축은 압축된 데이터를 복구할 때 손실 없이 원본 데이터를 얻을 수 있는 것을 뜻하며, 일반적으로 3:1 압축비를 가진다.

손실 압축은 100% 원본 데이터로 복구는 못하지만, 압축률이 매우 높다. (수십, 수백 : 1 압축비)

따라서 오디오나 이미지, 영상 등과 같은 미디어 데이터 압축 시 자주 사용된다.

 

무손실 압축의 경우 이전에 다룬 엔트로피 코딩 방식의 런렝스 부호화, 허프만 부호화 등이 있으며, 손실 압축의 경우 소스 코딩 방식의 DPCM(Differential PCM), DM(Delta Modulation), FFT(Fast Fourier Transformation), DCT(Discrete Cosine Transformation) 등이 있다.

압축 알고리즘 종류는 무수히 많으며, 나중에 기회가 되면 하나씩 다뤄볼 예정이다.

오늘은 오디오 압축 시 일반적으로 사용되는 DPCM과 이를 응용한 ADPCM에 대해 알아보자.

 

DPCM (Differential PCM)

*PCM(Pulse-code modulation) : 아날로그 신호를 표본화 → 양자화 → 부호화 과정을 통해 디지털 신호로 변조하는 방식

 

DPCM(Differential PCM)은 양자화된 표본 값을 그대로 저장하지 않고, 기준 표본값과 예측값의 차이 값을 저장하는 방식의 압축 알고리즘이다.

예를 들면 아래 표와 같다.

Sample 1 2 3 4 5 6 7 8 9
Bit Depth 80 84 81 77 79 83 85 88 86
DPCM 80 4 -3 -4 2 4 2 3 -2

일반적인 오디오 신호는 변화가 심하지 않기 때문에, 연속된 표본 간의 bit depth의 차이가 크지 않다.

따라서 양자화된 bit 값의 차이만 저장한다면, 보다 적은 bit를 할당하여 용량을 압축할 수 있다.

위의 표와 같은 경우 차이 값을 저장하는데 4bit 만 할당하여도 온전히 데이터를 복원할 수 있다.

- 4bit : 16개 (2^4) 차이 값 지정 가능 (-8 ~ 7)

 

하지만 여기에는 문제점이 있다.

4bit로 차이값을 저장하기로 하였는데, 표본 간의 차이 값이 가용 가능한 범위(-8 ~ 7)를 넘으면 어떻게 될까?

Sample 1 2 3 4 5 6 7 8 9
Bit Depth 80 90 85 76 88 93 105 70 86
DPCM 80 7 -5 -8 7 5 7 -8 7

갑자기 차이값이 커지는 경우 값을 제대로 저장할 수 없게 되며 복원 시 원본 데이터와의 차이도 기하급수적으로 커질 수 있다. (Slope Overload)

Decode 80 87 82 74 81 86 93 85 92

 

이를 해결하기 위해 ADPCM(Adaptive PCM) 방식이 고안되었다.

DPCM에서는 표본 간의 차이 값을 상수로 사용했다면, ADPCM에서는 이를 다시 부호화하여 정해진 표본 중 근사치를 예측값으로 사용한다.

즉, ADPCM에서는 차이 값의 크기에 따라 눈금의 간격을 다르게 적용하여 보다 정확한 신호로 복원할 수 있는 것이다.

 

ADPCM Principle

A-Law 또는 μ-Law PCM 입력 신호(32 or 64Kbps 채널)를 Uniform PCM 신호로 바꾼 후, 입력 신호의 기대 값을 뺀 차분 신호(Difference Signal)를 얻고, 이 신호에 15 level Adaptive Quantizer를 이용하여 4bit 값을 할당한다.

G.726 ADPCM Encoder and Decoder (참고 : https://www.ti.com/lit/an/spra118/spra118.pdf)

샘플 당 4bit로 16bit PCM을 파형을 저장할 수 있으므로, 최대 4:1까지 압축이 가능하다.

 

예시로 작성한 아래의 표를 보면 이해가 쉬울 것이다.

DPCM -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
ADPCM -34 -21 -13 -8 -5 -3 -2 -1 0 1 2 3 5 8 13 21

 

 

ADPCM을 사용하는 오디오 압축 표준에는 대표적으로 G.721, G.726가 있으며, G.726 표준의 경우 장거리 국제전화에 가장 보편적으로 사용된다.

- G.721 : 64Kbps PCM을 32Kbps로 압축하는 ADPCM 기법 (양자화 bit : 4bit)

- G.726 : 64Kbps PCM을 40/32/24/16Kbps로 가변 하여 압축하는 ADPCM 기법

 

728x90
반응형