AAC, MP3, OPUS 세 가지로 인코딩할 때 주로 어떤 주파수 대역의 소리들이 원본과 비교해서 줄어드는지 화이트 노이즈와 음악 파일로 널 테스트(null test)를 해 보았다.
참고로 널 테스트는 같은 음원 두 개를 하나는 위상 반전해서 재생할 경우 파형이 동일하면 서로 상쇄되면서 아무런 소리도 나지 않게 되는 원리를 이용한 것이다(액티브 노이즈 캔슬링이 같은 원리).
널 테스트로 두 가지 음원에 차이가 있을 경우에는 상쇄되고 남는 데이터만 확인할 수 있으므로 어떤 소리들이 손실되는지 판단이 가능하다.
테스트 조건
- 원본 : 24bit/48kHz PCM (no dithering)
- AAC(AAC LC) : 애플 CoreAudio AAC 인코더 / QAAC 프런트엔드 사용
- MP3 : LAME v3.99.5 / Mode q=2
- Opus : Hard-CBR, Complexity 10 (Reaper에서 인코딩)
- 세 가지 코덱 모두 CBR(Constant bitrate)로 인코딩
화이트 노이즈 널 테스트 (White noise null test)
320Kbps null test (spectrogram)
- AAC : 전체 주파수 대역이 고르게 손실된다.
- MP3 : 20kHz 이상은 브릭월(brick wall) 필터로 완전히 잘라내며 나머지 주파수 대역에 고르게 손실이 있음 즉, 20kHz 이상을 제외한 나머지 주파수 대역의 손실은 다른 코덱들에 비해 약간 적은 편.
- OPUS : MP3와 마찬가지로 20kHz 이상은 잘리며 손실되는 주파수 대역의 구간이 확실하게 나누어져 있는 것이 특징이다. 특히 12kHz 이상이 다른 대역에 비해 많이 줄어들지만 AAC와 비교하면 12kHz 이하는 상대적으로 손실이 적다고 할 수 있다.
- 참고 사항 : OPUS는 기본적으로 DC 옵셋을 방지하기 위한 DC rejection 필터(3Hz cutoff)가 적용됨.
160Kbps null test (spectrogram)
- 세가지 코덱 모두 320Kbps 일 때와 손실되는 데이터의 양만 다르며 특성은 동일
80Kbps null test (spectrogram)
- AAC : 비트레이트가 80Kbps까지 낮아지면 17kHz 이상은 잘라낸다.
- MP3, Opus : 손실되는 데이터의 양만 다르고 손실 패턴은 동일
320Kbps null test (sound)
160Kbps null test (sound)
80Kbps null test (sound)
음악 파일 널 테스트와 비교
320Kbps
80Kbps
아래는 각 코덱 별 널 테스트 결과를 다시 24bit/48kHz로 저장하였음.
이것으로 어떤 소리들이 손실되는지 소리로 판단할 수 있는데 위에 화이트 노이즈 스펙트로그램으로 볼 수 있는 주파수 대역별 손실 특성이 그대로 소리로도 확인된다.
320Kbps null test
80Kbps null test
참고: 아래 스펙트로그램(spectrogram)은 코덱별 원본 파일로 만든것으로 널 테스트 결과가 아님.
320Kbps (spectrogram)
비트레이트가 320Kbps 정도되면 코덱과는 상관없이 원본과 거의 차이가 없음을 알 수 있다.
160Kbps (spectrogram)
80Kbps (spectrogram)
80Kbps같이 낮은 비트레이트에서는 OPUS가 월등하게 우세하다.
AAC, MP3, OPUS 블라인드 테스트
AAC, MP3, Opus로 변환한 파일을 번갈아가면서 재생하도록 믹싱 한 파일 (코덱 별로 약 6~7초 정도 무작위 재생). PCM 16bit/44.1kHz (dithered).
정리
- AAC, MP3, OPUS 코덱마다 손실되는 주파수 대역에 차이가 있다.
- 인코더에 따라서 적용되는 로우패스 필터 주파수 대역이 달라질 수 있고 변환하려는 파일의 비트레이트 옵션, 원본 파일의 샘플레이트에 따라서도 달라진다(예: Fraunhofer FDK AAC는 기본적으로 14kHz 로우 패스 필터 적용).
- 하지만 이런 차이가 실제로 들리는가는 의문이다(특히 비트레이트가 256Kbps 이상이라면).
- 비트레이트가 160Kbps 이상만 되어도 차이는 거의 느낄 수 없으며 256Kbps 이상이 되면 원본과 구분할 수 없다(위에 160Kbps 믹싱 된 것을 듣고 어디서부터 어디까지가 어떤 코덱인지 구분이 가는가?).
- 20kHz 위쪽의 데이터를 가지고 있는 AAC가 무조건 좋을 것이라는 편견도 있으나 가청 주파수 대역을 벗어난 데이터이고 상호 변조(intermodulation)에 의한 왜곡, DAC에서 적용되는 로우패스필터까지 고려하면 어차피 무의미할 수 있다.
실제로 마스터링 엔지니어들 중에서는 16bit/44.1kHz로 마스터링 할 때 22.05kHz 브릭월 필터를 쓰는 사람들도 많다(그것이 얼마나 효과가 있는가는 항상 논쟁 거리이지만…). - AAC, MP3, OPUS 같은 압축 코덱에는 16bit, 24bit와 같은 비트뎁스(bit depth)라는 것이 없기 때문에 원본의 다이나믹 레인지가 바뀌지는 않는다. 하지만 AAC/OPUS는 디코더/플레이어에 따라 비트뎁스(bit depth)가 16bit로 제한되어 재생될 수도 있으니 확인 요망.
- 비트레이트가 낮아질수록 OPUS > AAC > MP3 차례로 효율이 좋다.
- 동일 코덱으로 여러 번 인코딩한 결과를 가지고 어떤 것이 더 좋은 코덱이라고 판단하는 것은 잘못된 테스트 방법이다. 그래도 궁금하면 이글 참고.
- 손실되는 것이 싫다면 차라리 무손실 FLAC(ALAC)을 써라. 어차피 저장 장치 용량은 커지고 가격은 계속 내려간다.
- 그래도 압축 포맷을 원한다면 세 가지 중 아무것이나 CBR 256~320Kbps 이상 또는 VBR 최고 품질 옵션으로 인코딩하면 음질에 차이는 없다.
View Comments (0)