무손실 압축 코덱 비교

2009. 5. 16. 15:44IT/Computer Tips

CD/DVD에 기록되거나 파일로 저장한 소리는 모두 디지털 방식이다. 디지털 방식은 0과 1의 조합으로 음성 신호를 저장한다. 그러나 우리가 듣는 소리는 아날로그 방식이다. CD 플레이어나 PC 등을 통해서 음악을 듣는 것은 디지털로 저장된 소리를 DAC라는 장치를 통해서 아날로그로 바꾸고, 그렇게 바뀐 아날로그 소리의 진동을 귀가 감지해서 자극을 받아들이는 과정이다. 어쨌든 이런 CD/DVD에 기록된 데이터를 음악 파일로 변환해서 저장할 때 데이터의 크기를 줄이기 위해서 압축한다. 이 글은 다양한 음성 데이터 압축 형식에 관한 짧은 생각이다.

1. 손실 압축 형식

음악 파일 하면 가장 먼저 떠오르는 것이 MP3라는 확장자이다. 이제는 고유명사가 된 MP3의 원래 명칭은 MPEG-1 Audio Layer-3이다. 동영상 및 음성 데이터의 크기가 점점 커지면서 크기를 줄이기 위해 압축 기술이 필요했고, 이런 압축 기술의 연구를 뒷받침하기 위해 세계적 표준으로 마련된 것이 MPEG(Moving Pictures Experts Group)이다. MP3는 MPEG-1에 포함된 표준 음성 압축이다.

MP3 형식은 '인지 압축 방식(Perceptual Coding)'이라고 부르는 손실 압축 방식을 사용한다. 인지 압축 방식이란 데이터 압축 과정에서 인간이 인지할 수 없는 영역의 소리를 삭제해서 파일의 크기를 줄이는 방식이다. 실제로 원음과의 큰 차이를 느끼는 것은 힘들지만, 삭제된 영역이 있기 때문에 원래의 소리로 복원할 수는 없다.

이런 MP3 형식은 가장 널리 사용되고 있지만 사실 MP3는 무료로 이용할 수 있는 기술이 아니다. 톰슨 멀티미디어와 브라운 호퍼 연구소가 특허권을 갖고 있기 때문에 기술을 사용하기 위해서 비용을 지불해야 한다. 모든 MP3 플레이어에 이 로열티가 포함되어 있다고 생각하면 된다.

유료인 MP3를 대신해서 나온 것이 Ogg Vorbis이다. Ogg는 비용을 지불해야 하는 MP3를 대신하기 위해 MIT의 학생이었던 크리스토퍼 몽고메리를 비롯한 여러 개발자들에 의해 만들어진 형식으로, Ogg라는 확장자를 가지며 MP3와 같은 손실 압축 방식을 사용하지만 같은 크기일 때 MP3보다 음질이 좋다. 또 소스 코드까지 공개된 완전한 무료 형식으로 요즘 출시되는 대부분의 MP3 플레이어가 Ogg 형식을 지원한다.

그 외에 Microsoft사에서 만든 WMA(Windows Media Audio)도 많이 사용되는 손실 압축 형식이다. WMA는 스트리밍 서비스를 제공하기 위해 처음 만들어진 형식이기 때문에 파일 용량을 줄이는데 적합하다. WMA는 MP3보다 훨씬 작은 크기로도 같은 품질의 파일을 만들 수 있으며, WMA9 코덱은 무손실 압축도 지원한다.

2. 무손실(비손실) 압축 형식

손실 압축 방식의 가장 큰 단점인 '손실'을 없애기 위해 만들어진 것이 무손실 압축 방식이다. CD/DVD의 음악을 압축하지 않고 원본과 최대한 유사하게 저장하는 방식이 Wave이다. 그러나 Wave 형식은 압축되지 않은 데이터기 때문에 파일의 크기가 너무 크다. 이럴 때 원본 음원의 손실이 없이 파일의 크기만 줄이는 방식이 무손실 압축이다. 쉽게 이야기하면 ZIP, RAR, 7z와 같은 파일 압축과 비슷한 방식이다. 무손실 방식 역시 다양한 종류가 있는데 그 종류에 따라서 압축율과 압축 시간, 기타 지원하는 기능에 차이가 있다. 그러나 그 본질은 손실 없이 음성 정보를 압축하는 것으로, ZIP, RAR, 7z 등이 각각 다른 알고리즘을 사용하고 다른 압축율, 다른 압축 시간, 다른 기능을 제공하지만 압축을 풀었을 때 그 결과물이 똑같은 것과 비슷하다. 아래의 표에서 다양한 무손실 압축 형식의 기능 및 특성을 비교할 수 있다.

특징 FLAC(flac) WavPack(wv) TAK(tak) Monkey's(ape) OptimFROG(ofr) ALAC(m4a) WMA(wma)
인코딩 속도 빠른 매우 빠름 매우 빠름 빠름 느림 보통 보통
디코딩 속도 매우 빠름 매우 빠름 매우 빠름 보통 보통 빠름 보통
압축률* 58.70% 58.0% 57.0% 55.50% 54.70% 58.50% 56.30%
유연성** 매우 좋음 매우 좋음 매우 좋음 매우 좋음 매우 좋음 나쁨 나쁨
 
오류 처리 X  
검색
태그 Vorbis tags ID3/APE APEv2 (exp.) ID3/APE ID3/APE Quicktime ASF
하드웨어 지원 매우 좋음 제한적 없음 제한적 없음 좋음 제한적
소프트웨어 지원 매우 좋음 좋음 보통 좋음 보통 나쁨 좋음
Hybrid/손실 X X X X X
리플레이 게인 X sort of X
RIFF 청크     X
스트리밍 X
Pipe support X
오픈 소스 X X ○ (디코딩) X
다중 채널 X X X
고음질***
지원 OS 모두 지원 모두 지원 Win/Linux Wine 모두 지원 Win/Mac/Linux Win/Mac Win/Mac

특징 Shorten(shn) LA(la) TTA(tta) LPAC(lpac) MPEG-4 ALS MPEG-4 SLS Real Lossless(ral)
인코딩 속도 매우 빠름 느림 매우 빠름 보통 보통 느림 느림
디코딩 속도 매우 빠름 느림 빠름 빠름 빠름 느림 빠름
압축률* 63.50% 53.50% 57.10% 57.20% 57.10%  ? 57.0%
유연성** 나쁨 보통 나쁨 나쁨 매우 좋음 나쁨 나쁨
 
오류 처리 X X X  
검색 느림
태그 X ID3v1 ID3 X 자체
하드웨어 지원 제한적 없음 제한적 없음 없음 없음 없음
소프트웨어 지원 아주 좋음 나쁨 보통 보통 나쁨 나쁨 나쁨
Hybrid/손실 X X X X X X
리플레이 게인 X X X X
RIFF 청크 X      
스트리밍 X   X X
Pipe support X       X
오픈 소스 X X X
다중 채널 X X X X
고음질*** X X X
지원 OS 모두 지원 Win/Linux 모두 지원 Win/Linux/Sol 모두 지원 모두 지원 Win/Mac/Linux

표 출처 - http://wiki.hydrogenaudio.org/index.php?title=Lossless_comparison

* 압축률은 (압축된 크기/원래 크기X100)으로 계산하며 수치가 작을수록 좋다. 인코딩 속도, 디코딩 속도, 압축률은 각 인코더의 기본 설정을 사용한 값이다.
** 유연성(Flexibility)은 사용자가 선택할 수 있는 옵션의 다양성을 의미한다. (빠름/낮은 압축률, 느림/높은 압축률, 둘 사이의 기타 옵션들)
*** 고음질은 보통 샘플링 비율 48KHz 이상 16Bit 이상을 의미한다.

위 표에서 알 수 있듯이 각각의 형식에 따라서 상당히 큰 차이가 있다. 사용자에게 적합한 무손실 압축 코덱을 선택하려면 여러 가지 변인을 고려해야 한다. 만약 무조건 크기를 최소로 저장하고 싶다면 LA나 OptimFROG 형식을 사용하는 것이 좋다. 특히 OptimFROG는 압축 시간은 상당히 오래 걸리지만 크기가 작고 지원하는 음악 재생 프로그램이 몇 가지 있다. 그러나 속도가 중요하다면 TTA나 TAK, Shorten, WavPack이 적합하다. 특히 WavPack은 손실 압축 형식처럼 압축하지만 원본 데이터의 정보를 다른 파일에 기록했다가 이후에 다시 원본을 그대로 복원할 수 있는 Hybrid 방식도 지원한다. 또 TTA나 Shorten, WavPack은 대부분의 유명한 음악 재생 프로그램에서 재생할 수 있다.

개인적으로 가장 선호하는 파일 형식은 APE이다. FLAC 만큼은 아니지만 상당히 많은 음악 재생 프로그램과 MP3 플레이어에서 사용할 수 있고, 무손실 압축 형식을 지원하는 대부분의 CD 레코딩 프로그램에서 사용할 수 있기 때문이다. 거기다 FLAC과 비교하면 압축률도 더 높고 압축 속도도 빠르다.

PC가 아닌 MP3 플레이어 등에서 듣기 위해서라면 가장 좋은 것은 FLAC과 ALAC이다. FLAC은 전 세계 가장 많은 MP3 플레이어에서 지원하는 무손실 압축 형식이고 ALAC은 모든 종류의 iPod에서 지원한다. 그 외에 APE나 WavPack, TTA를 지원하는 MP3 플레이어도 있다. 이런 다양한 변인을 고려해서 내가 사용하고자 하는 용도에 맞는 형식을 선택한다.

3. 국내 MP3 기기 및 PC용 음악 재생 프로그램 호환성

아무리 압축률이 좋고 인코딩 속도가 빨라도 내가 사용하는 MP3 기기나 PC의 음악 재생 프로그램에서 재생할 수 없으면 소용이 없다. 앞의 내용이 각 코덱의 단순한 성능 비교라면 이 부분에서 살펴볼 내용은 내가 사용하고 있는 MP3 플레이어나 PC의 음악 재생 프로그램에서 어떤 형식을 지원하는가이다. 각 코덱의 성능 못지 않게 현실적으로 중요한 부분이다.

국내에서 가장 많이 알려진 iAudio(코원), iriver(아이리버), Yepp(삼성) 그리고 iPod의 홈페이지에 제시된 제품 스펙을 통해서 각 모델의 무손실 압축 코덱 지원 현황을 살펴보았다. (아래의 내용은 제품 홈페이지에 있는 모델을 대상으로 홈페이지에 제시된 정보를 정리한 것이다. 출시된지 오랜 시간이 지나서 홈페이지에 정보가 제공되지 않는 제품은 해당하지 않는다.)

무손실 압축 형식 지원은 iAudio가 가장 활발했다. iAudio는 모든 MP3 플레이어가 FLAC 형식을 지원하고 일부 고급 모델에서 APE 형식을 지원한다. 또 A2(FLAC만 지원)를 제외한 PMP가 FLAC, APE형식을 지원하며 일부 기종에 따라서 TTA, WV, WAV 형식도 지원한다. 그러나 iriver는 몇몇 모델에서만 FLAC, APE를 지원하고, Yepp 역시 일부 모델에서 FLAC을 지원, 몇몇 모델에서 WAV를 지원할 뿐이다. iPod은 Apple답게 Shuffle, Nano, Classic, Touch 모든 모델에서 ALAC과 WAV를 지원한다.

코원의 iAudio가 모든 제품에서 FLAC을 지원하고 iPod이 모든 제품에서 ALAC을 지원하기 때문에 상세 스펙을 살펴보지 않고 무손실 압축 형식 재생을 위한 MP3 플레이어를 구매할 땐 iAudio나 iPod 제품이 무난하다. 다른 제품은 구매 전에 자세한 스펙을 살펴보는 것이 좋다.

음악 재생 프로그램은 MP3 플레이어보다 훨씬 유연성이 있다. 상당히 많은 프로그램에서 다양한 무손실 압축 형식을 지원하기 때문이다. 이전에 소개한 AIMP2는 flac, ape, tta, ofr, m4a, wma, wv를 지원하고 foobar2000은 flac, ape, shn, tta, tak, wma, wv를 지원한다. 또 Winamp도 플러그인을 사용해서 ape, flac, tta, wma 등을 재생할 수 있다.

위의 대표적인 세 가지 음악 재생 프로그램 외에도 무손실 압축 형식을 지원하는 프로그램은 꽤 많다. XMPlayer나 Apollo, CocoPlayer 등은 자체 코덱을 사용해서 다양한 무손실 압축 형식을 지원하고, 그 외에도 1by1이나 Evil Player 같은 재생기들은 Winamp 플러그인이나 AIMP2에서 사용하는 Bass 오디오 라이브러리를 사용해서 무손실 형식의 재생을 지원한다.

만약 무손실 압축 파일을 다시 CD에 기록하려면 CD 레코딩 프로그램에서 지원하는 코덱 역시 고려해야 한다. 많은 사람들이 사용하는 Nero Burning Rom은 플러그인을 통해서 ape, flac, ofr, lpac, shn, wv 등의 다양한 형식을 지원하며 이미지 파일 기록에 뛰어난 무료 프로그램 ImgBurn은 ape, flac, wv 형식을 지원한다.

4. 가짜 무손실 압축 파일

MP3 파일의 음질을 이야기할 때 흔히 이야기하는 128kbps니 320kbps니 하는 값을 비트 전송률 또는 비트레이트라 부른다. 128kbps는 초당 128kilobit의 데이터를 표현한다는 이야기다. 즉, 320kbps가 128kbps보다 음질이 좋다는 것은 초당 처리하는 데이터의 양이 많기 때문이지, 비트 전송률 자체가 음질을 결정하는 단위는 아니다. 그렇기 때문에 다른 압축 방식을 사용하는 서로 다른 형식 사이에 비트 전송률로 음질을 결정지을 수 없다. 직접적으로 음질을 이야기하는 값은 샘플링 비율이다. 보통 CD의 샘플링 비율은 44.1KHz이다. 이는 소리 데이터가 초당 44100번 기록되어 있다는 이야기다. 샘플링 비율은 매체에 따라서 48KHz, 96KHz 등이 있는데, 그 값이 높을 수록 소리 사이의 간격이 짧아지고 자연의 소리인 '선'에 가까워진다.

무손실 파일을 판단할 때 흔히 파일의 확장자와 비트 전송률을 확인한다. 대부분의 무손실 파일이 500 ~ 1000 kbps 정도의 비트 전송률을 갖는다. 예를 들어 Song.flac 이라는 파일이 있고 정보를 확인해보니 878kbps, 44.1KHz라고 되어 있다면 이 파일을 무손실 파일이라고 생각하기 쉽다. 그러나 음악 파일이 무손실 압축 형식의 확장자를 갖고 있고 파일의 크기가 크다고 해서 다 무손실 파일은 아니다. 실제로는 데이터의 손실이 있지만 무손실 압축 형식의 확장자를 갖고 아주 높은 비트 전송률(Bitrate)를 갖는 파일이 있기 때문이다. 바로 손실 압축 형식으로 인코딩한 파일을 다시 무손실 압축 형식으로 인코딩한 파일이다.

사용자 삽입 이미지

위의 그림은 CD를 ExactAudioCopy를 사용해서 직접 FLAC 형식으로 저장한 파일, FLAC을 64kbps의 MP3 형식으로 변환한 파일, MP3를 다시 FLAC 형식으로 변환한 파일의 세부 정보를 MediaInfo로 확인한 결과이다. 세 번째 FLAC 파일은 실제 CD의 내용을 복원할 수 없고 음질이 좋지 않지만, 비트 전송률과 파일 크기 모두 MP3의 약 7배 정도가 된다.

무손실 압축 형식을 사용하는 이유는 여러 가지가 있을 것이다. 개인적으로 무손실 압축 형식을 선호하는 이유는 디지털음이 주는 스트레스에서 다소 피해를 줄일 수 있다는 점이다. LP에 비해서 기록할 수 있는 정보의 양이 극히 제한적인 CD는 사실 원음을 일부밖에 담지 못한다. DVD나 SACD 역시 마찬가지다. LP에서 DVD로, DVD에서 CD로, CD에서 MP3 등의 손실 압축 파일로 갈수록 기록할 수 있는 음성 정보의 양은 크게 줄어들고, 실제 자연의 소리와 비슷한 아날로그 방식의 LP에서 '선'을 이루고 있는 소리가 MP3에서는 짧게 끊어진 계단형을 이루고, 그로 인해 디지털 피로라는 스트레스를 느끼게 된다고 한다. 믿거나 말거나지만, 나는 그 스트레스를 조금이라도 줄이고자 무손실 압축 형식을 사용한다. 뭐 이유야 어떻든 무손실 압축 형식을 사용하면 필연적으로 많은 디스크 용량을 희생해야 한다. 무손실 압축 파일은 MP3보다 많게는 10배 이상의 디스크 용량을 차지하기 때문이다. 때문에 쓸 데 없는 디스크 용량을 낭비하지 않으려면 무손실 압축 형식의 파일이라도 진짜인지 의심해봐야 한다.

5. 참고 사이트

  • http://wiki.hydrogenaudio.org/index.php?title=Lossless_comparison
  • http://www.meshwalk.com/?p=3
  • http://iiasuraii.byus.net/view.php?id=info&no=16
  • 그 외 각 무손실 압축 코덱 공식 홈페이지