Jungle

MP3 음성 파일의 압축 방법

손가든 2024. 1. 13. 15:06

MP3 :

MP3는 가장 대표적인 압축 샘플링 사운드 파일이다. MP3는 동영상과 오디오 압축 기술에 대한 표준인 MPEG(Moving Picture Experts Group) 표준의 일부분으로 정확한 명칭은 MPEG Audio Layer 3이다. MPEG Audio Layer 1, Layer2도 있다. Layer 1은 압축률이 1/4정도 되고 Layer2는 1/6 ~ 1/8 정도 된다. MP3 파일은 CD 음질을 유지하면서도 1/10 ~ 1/12의 높은 압축률을 가진다는 것이 가장 큰 특징이다. MP3 파일은 대략 1분당 1메가의 크기를 필요로 하는데 이처럼 높은 압축률 때문에 인터넷을 통해 급속도로 보급될 수 있었다. 파일 크기가 작기 때문에 적용 용량의 메모리에도 다수의 노래를 저장할 수 있게 되어 초소형의 MP3 플레이어가 등장하고 급기야 휴대용 CD 플레이어의 자리까지 넘보게 되었다.

압축의 원리 : 압축 기술은 이제 상당히 보편화된 기술이 되었다. ZIP 파일과 같이 임의의 파일을 압축 보관하기도 하고 GIF나 JPEG 그래픽 파일과 같이 아예 처음부터 압축된 형태로 저장되는 경우도 있다. MP3도 이런 압축된 파일들과 크게 다르지 않은 방법으로 압축을 하고 있다. 하지만 다른 압축 파일에 비해 압축률이 훨씬 높다. 또 다른 무엇인가가 있기 때문에 압축률이 높은 것이다.

MP3에 사용된 압축 알고리즘은 1980년대 말 Fraunhoffer institute에서 개발한 기술이다. 소리라는 것은 음파라 불리는 공기의 진동인데 초당 진동 횟수, 즉 주파수에 따라 소리의 높낮이가 결정된다. 주파수가 낮으면 저음이, 높으면 고음이 들리게 된다. 보통 사람들이 들을 수 있는 음파의 주파수는 대략 20Hz에서 20,000Hz의 범위를 가진다. 이를 가청 주파수라고 하는데 가청 주파수보다 주파수가 낮거나 높은 음파는 들을 수 없다. 그런데 사람의 귀는 가청 주파수 내의 모든 음파를 균일하게 다 잘 들을 수 있는 것이 아니다. 가청 주파수의 끝자락으로 갈수록 잘 들리지 않는다. 사운드 파일을 잘 분석해보면 사람의 귀로는 잘 들리지 않는 영역이 있다. 이런 부분을 과감하게 삭제하여 데이터의 크기를 줄이는 것이다.

여러분들은 여러 개의 사운드가 동시에 재생될 때 큰 소리는 잘 들리지만 작은 소리는 큰 소리에 묻혀 거의 들리지 않는 것을 경험해 봤을 것이다. 이때 작은 소리를 제거해도 사람의 귀로 느끼는 소리는 큰 변화가 없다. 이와 같이 사람의 귀가 가진 가청 특성을 잘 연구해서 사람 귀에 잘 들리지 않는 영역이나 패턴을 찾아내 생략하는 기술을 perceptual noise shaping이라고 한다. JPEG 파일에서 사람 눈에 잘 뜨이지 않게 그래픽 정보를 생략하는 기술과 유사한 기술이다. MP3의 압축 기술은 다른 일반적인 압축 기술과 달리 원래 정보에서 일부분의 정보를 삭제하기 때문에 100% 원래 정보대로 재생을 할 수 없다. 그래서 이 놀라운 압축 기술을 일반적인 데이터 압축에 활용할 수 없고 단지 사운드 파일에만 적용할 수 있는 것이다.

좀 더 구체적으로 원리를 설명해 보겠다. 앞에서 이야기했듯이 음파의 주파수에 따라 사람이 들을 수 있는 소리의 크기가 달라진다. 대체로 2,500Hz에서 5,000Hz 사이의 소리는 그 세기가 매우 작아도 쉽게 들을 수 있다. 이 영역을 경계로 주파수가 작아지거나 커질수록 들을 수 있는 소리의 세기는 커지게 된다. 그래서 주파수에 따른 사람이 들을 수 있는 소리의 세기를 그리면 대략적으로 그림 11과 같이 된다. 가청 한계선보다 더 큰 소리는 잘 들리고 그보다 작은 소리는 잘 들리지 않는다. 실제로는 그림처럼 칼로 무 자르듯이 가청 한계선보다 큰 소리는 들리고 그 보다 작은 소리는 전혀 안 들리는 것은 아니다. 사람은 디지털이 아니다. 가청 경계선을 중심으로 그 보다 큰 소리는 비교적 잘 들리고 그 보다 작은 소리는 상대적으로 잘 안 들린다는 의미이다. 사실 가청 한계선은 사람마다 틀리고 명확하게 그 경계가 정해진 것이 아니다. 다만 그림에서 보듯이 2,000Hz에서 5,000Hz 사이의 소리는 그 세기가 작아도 사람의 귀에는 잘 들리고 20Hz 근처에서는 소리의 세기가 매우 커야 간신히 들린다는 상대적인 의미만 가진다.

사람의 귀(엄밀하게는 소리를 감지하는 감각 기관과 뇌)가 이런 특성을 가지고 있기 때문에 가청 한계선보다 작은 소리는 있으나 없으나 서로 다른 점을 구분할 수 없는 것이다.

 

압축 과정 : MP3의 압축 알고리즘은 대단히 복잡해서 이를 모두 설명하기 어려우며 압축 기술을 전공하는 사람이 아니고서는 이를 자세히 알 필요도 없다. 대략적인 과정만 설명하도록 하겠다.
그림 13은 MP3 압축 과정을 대략적으로 나타낸 것이다. MP3 압축 과정은 JPEG 압축 과정과 유사한 점이 많다.

  1. Filter bank : 먼저 사운드 데이터의 주파수 성분, 즉 스펙트럼(spectrum)을 분석한다. 사운드 데이터의 주파수 성분을 알아내기 위해 JPEG 압축 때 사용했던 DCT와 유사한 방법을 사용한다. 여기에 사람의 가청 특성을 적용해 그림 12에서와 같은 가청 한계선을 계산해 낸다.
  2. Joint stereo coding : 스테레오 채널의 경우 보통의 양쪽 채널의 소리가 유사한 점이 많다. 따라서 쉽게 서로 중복되는 요소를 제거할 수 있다. 이 기능은 사용되지 않을 수도 있다.
  3. Scale factors : filter bank에서 얻어낸 주파수 성분들을 양자화를 통해 불필요한 데이터를 제거하게 된다. 이때 어느 정도 데이터를 제거할지 정하는 것이 scale factor이다.
  4. Quantizer : filter bank를 거친 주파수 성분들 중 일부가 양자화를 거치면서 제거된다. 많은 주파수 성분들이 제거될수록 압축률이 높아지는 대신 음질이 나빠지게 된다. 이와 같이 양자화에 의해 추가된 노이즈 성분을 quantization noise라고 한다. scale factor를 조절해 가청 한계선을 넘기지 않는 범위 내에서 최대한 압축을 한다.
  5. Noiseless coding : 이렇게 해서 얻어진 주파수 성분들은 JPEG에서 썼던 Huffman 코딩 방식으로 압축된다. Huffman 코딩 압축은 데이터의 손실이 전혀 없기 때문에 noiseless coding이라고도 부른다.