음악감상하는데 mp3구조가 어떻고 flac이 어떻고 몰라도 아무 지장이 없습니다.
다만 축구공이나 자동차는 압축하면 찌그러 지는데 소리는 어떻게 압축하는 걸까?
궁금해 하는 일반인을 위해 이 글을 씁니다.
대학원 수업에서 제일 재미있었던 부분인데 지금은 졸업한지 십년도 넘어
세세한 부분은 오류가 있을 수 도 있습니다.
그러나 대략 큰 흐름은 맞습니다.
************************************************************************
압축은 크게 손실여부에 따라 손실압축과 비손실압축으로 나누어집니다.
손실과 비손실을 둘 다 쓰는 경우도 있는데 일단 손실되었으면 손실압축입니다.
계좌 번호 1234를 압축했다 해제했더니 1222가 되었다... 그럼 큰일이죠.
그리서 일반 데이터는 원본이 훼손되지 않는 비손실압축을 합니다.
사람의 눈과 귀는 멍청해서 소녀시대를 모르는 사람에게
소녀시대를 보여주고 카라와 섞어 놓으면 이 두 그룹조차 구별하지 못 합니다.
그래서 사람의 눈과 귀에 대한 데이터는 손실압축을 사용합니다.
그럼 왜 처음 부터 압축을 하느냐? 압축을 안 하면 안되느냐?
압축을 안 해도 됩니다. 그럼 기계들은 너무 좋아합니다.
압축하고 해제하는데 고생 안 해도 되니까...
딱 한가지 결정적인 단점이 있는데......
그건 파일 사이즈가 너무....크다는 겁니다.
커도 너~~~~~무 큽니다. 수십 배에서 수백배 이상 차이 납니다.
그럼 어떻게 압축하느냐....
먼저 마이크에 소리를 담습니다.
마이크는 성능이 너무 좋아서 개미소리에서 천둥소리까지 다 다음을 수 있습니다.
(설명을 위한 것임, 마이크 특성에 따라 다름)
그런데 사람귀는 개미 발자국 소리를 듣지 못합니다.
또한 천둥소리 보다 큰 소리는 너무 커서 그게 무슨 소리였는지 구별도 안 됩니다.
그래서... 어차피 저장해야 사람이 듣지도 못 할 소리를 대량으로
잘라 냅니다.
여기서 한 번 압축이 이뤄집니다. 1,2,3,4,5,6,7,8,9,10 등이 마이크에
들어 왔으면 이중 사람이 들을 수 있는 4,5,6,7만 남기고 다 버립니다.
너무 많이 버리는 것 아닌가 걱정할 수 있지만 소머즈나 박쥐가 아니고서는
알아들을 수 없는 영역까지는 살아있습니다.
그 다음 저장된 소리를 분석합니다.
자연의 소리는 작아졌다 커지는게 파도처럼 부드러운 파형을 갖고있습니다.
갑자기 소리가 0에서 0.00000001초만에 100이 되었다가 다시 0.0000001초만에
33이 되고 급격 변하지 않습니다. 공기의 파장이 그렇게 급격히 변하면
빛이나 전자파처럼 공기로서 존재하지 않고 사라집니다.
분석하면 10001.123, 10002.333,10004.444, 10005.333, 100003.3333433 이런 식입니다.
컴퓨터는 무한한 자릿수를 저장할 수 없기 때문에 너무 세세한 뒷 자리는 짤라
버립니다.
즉, 10001, 10002,10004, 10005, 100003만 저장됩니다.
이렇게 긴 자릿수를 조각 조각 마치 양자(Quantum)처럼 자른 다고 해서
양자화라고 합니다.
양자화(quantization)를 복잡하고 어렵게 설명하는 경우가 있는데
쉽게 보면 저게 양자화 입니다.
양자화를 시켜 원래 자릿수는 줄었지만 10001.123과 10001은 미세한 숫자만큼
차이가 있습니다. 그래서 이 미세한 차이를 양자화 시키면서 사라졌다고
해서 양자화 오차라고 합니다.
저 긴 숫자를 다 저장하지는 않았지만 양자화시켜서 또 한번 용량을 줄였습니다.
또 분석을 하면 다시 용량을 줄일 여지가 보입니다.
즉, 10001,10002 이런식으로 이를 다 저장할게 아니라
앞은 10000 뒤는 1,2,4,5,3 이런식으로 더하면 앞의 다섯자리 5개 숫자는
다섯자리 하나와 한자리 5개로 저장할 수 있습니다.
또 1,2,4,5,3도 잘 살펴 보면 처음 부터 급격히 커지는 게 아니라
10001에서 0, 그 앞 숫자에 +1,그 앞 숫자에 +2,+1,-2 등으로
앞뒤의 변화만 저장하면 더 적은 량으로 저장할 수 있습니다
위 예에서 1~5까지 저장할려면 이진수 3자리 101(2)->5 세자리가 필요하지만
앞 뒤 변화는 0~2이므로 이진수 10(2)->2 로 두자리로 저장이 가능합니다.
이런 식으로 변화만을 저장해서 또 한번 압축하는데 성공했습니다...
16bit 44.1khz샘플링에도 24bit 192khz에도 쓰일 수 있습니다.
기본 원리는 같기 때문입니다.
**********************************************************************
그런데 왜 CD는 16bit 44.1khz를 쓰느냐....
어차피 압축하는 방법은 차이가 없는데 더 고음질로 압축하지 않은 것이냐?
당시 기술로도 음반은 24bit 96hz로 작업했습니다.
따라서 CD를 24bit 96hz로 저장해도 문제는 없었습니다.
CD는 용량이 정해져있는데 대략 650메가 정도 됩니다.
만약 너무 고음질로 저장하면 Gee를 하나 듣는데 CD열장 정도 필요할 수 도 있습니다.
그럼 음악하나 듣다가 계속 CD를 바꿔야 하는데 그럼 너무 짜증나서
상용가치가 없습니다.
그럼 CD 한장 최소 음악한곡 혹은 소녀시대 1집 앨범 정도는 다 들어가야 하는데
그 기준이 어느 정도냐...
이걸위해 소니가 카랴얀의 자문을 받았는데 교향곡 하나정도는 CD교체 없이
들어야 하지 않냐라고 했습니다. 그 교향곡이 74분 입니다.
그래서 CD용량에 74분을 초당 나눠 보니 1초에 150KB/s정도는 되야 한다는 계산이
나왔습니다. 이것이 CD 1배속 기준입니다.
통상 16bit 44.1khz를 초당계산하면 705kb/s 정도 됩니다. 약88KB면 됩니다.
반면 24bit 96khz를 계산하면 288KB쯤 됩니다. 1초에 150KB보다
작아야 교향곡 하나를 담을 수 있는데 고음질로 하면 CD 두 장을 갈아 껴야
교향곡을 감상할 수 있으니 어쩔 수 없이 16bit 44.1khz가 채택되었습니다.
44.1이랑 96khz를 구별 못 할 수준이라고는 하나 원래 작업이
대부분 스튜디오에서 24bit 96khz를 제작할 수 있었으니 좀 안타까운일이
아닐 수 없습니다.....
우리가 무심코 듣는 음악(CD, mp3, flac등은)은 알게 모르게 위해
설명한 압축 알고리즘이 적용되 있습니다.
실제환경에는 오류검출을 위한 정보등 여러가지가 더 들어가는데
대략 큰 줄거리는 위와 같습니다..
|