임베디드/[ Embedded ]

[ Embedded ] 03. 오디오코덱의 이해와 역사

kim.svadoz 2020. 8. 12. 14:56
728x90
반응형

AUDIO CODEC의 이해와 역사


  • 오디오 코덱 : 오디오의 디지털 데이터 스트림을 부호화하거나 복호화하는 컴퓨터 프로그램이나 장치.

소프트웨어에서 오디오코덱은 주어진 오디오 파일이나 스트리밍 미디어 오디오 코딩 포맷에 따라 디지털 오디오 데이터를 압축하고 압축 해제를 하는 알고리즘을 구현하는 컴퓨터 프로그램이다. 알고리즘의 목적은 고품질의 오디오 신호를 품질을 유지하면서 최소한의 수의 비트로 표현하는 것이다. 이로써 저장된 오디오 파일의 전송에 요구되는 스토리지 공간과 대역을 효율적으로 줄일 수 있다. 대부분의 코덱들은 하나 이상의 멀티미디어 플레이어라이브러리형태로 구현된다. 하드웨어에서 오디오 코덱은 아날로그 신호를 디지털 신호로 인코딩하고 디지털 신호를 아날로그로 디코딩하는 단일장치를 말한다.

20세기 중반까지 코덱은 아날로그 신호를 PCM(펄스 코드 변조)를 이용해서 디지털 형태로 부호화하는 하드웨어 장치였다. 20세기 후반에는 압축을 포함한 다양한 디지털 신호 포맷 간의 변환을 위한 소프트웨어 종류도 포함한다.

오디오코덱은 아날로그 오디오신호를 전송, 저장을 위한 디지털신호로 변환하고 / 재생을 위해 디지털 신호를 다시 아날로그로 변환한다. 비디오 코덱은 비디오 신호에 같은 작업을 수행한다.

그래서 코덱이 뭐냐? -> 카메라로 촬영한 영상 데이터를 압축을 하고 또 압축을 푸는 과정

image-20200716154423362

MPEG-1

MP3로 대표되는 현세의 오디오 코덱은 1991년경에 MPEG-1이 표준화하면서 그 틀이 잡힌다. Moving Picture Expert Group의 약자.

MPEG-1에서는 CD안에 어떻게 하면 동영상까지를 넣을까, 그러니까 기존의 음악듣던 씨디로 동영상까지 재생되는 V-CD를 만들까 하는 것을 목표로 시작한 표준이다.

MPEG-1의 목표를 달성하기 위해서는 일당 영상이든 오디오든 압축이 필요하겠고, 압축을 한 오디오랑 비디오 이쁘게 잘 감싸주는 시스템이 필요할거다. 그래서 MPEG-1의 Part-1은 시스템, Part-2는 비디오, Part-3는 오디오를 각각 정의하도록 표준화 한다. 그래서 MPEG-1의 오디오 파트에 대한 표준은 ISO/IEC 11172-3이 된다.

MPEG-1 오디오는 당시 layer라는 표현으로 구별된 서로 다른 세 종류의 코덱이 복수로 표준화되었다. 그렇게 Lyaer-I,II,III의 세개 코덱이 MPEG-1의 표준이 되었다. 이들 간에는 서로 호환되는 것은 아니다. 위 그림에 화살표로 표시된 것 처럼 Lyaer-I,II는 MUSICAM이라는 한 뿌리에서 나왔는데 정확히는 MUSICAM=Layer-II로 같은거고 이를 좀 더 simplify한 것이 Layer-I이다.

당시에는 Layer-II도 연산량이 너무 높아서 쉽게 제품을 못만들꺼라 생각했는지 압축은 덜 되더라도 간단한 코덱을 만들어 Layer-I이라는 새끼를 치게된다. 반면 이제 MP3라는 이름(그러니까 MPEG-1 Layer-III를 줄여 MP3가 되었다)으로 웬만한 포터블 기기들은 물론 싸구려 USB memory stick에도 거져 들어가 있는 이 코덱이 당시의 하드웨어 기술로는 힘들어보였을 것임. 그래서 MP3가 압축 성능은 좋기는 하나 상용화는 먼 훗날의 얘기로 생각했을 것이다.

Layer-I과II의 뿌리가 된 MUSICAM은 유럽의 IRT와 Phillips에서 공동제안한 Subband Polypahse Filterbank계열의 코덱. 같은 시기에 EUREKA-147이라는 유럽권의 프로젝트로 디지털 라디오 방송을 만들고 있었는데 여기에 채택된 것이 MUSICAM. 현재 우리나라에서 즐기고 있는 DMB에서 라디오 방송일 때 사용되는 코덱이 바로 MUSICAM 혹은 MP2인것이다.

MP3

MP3는 ASPEC이라는 코덱에 뿌리를 두고 만들었다. APSEC은 Adaptive Spectral Entropy Coding의 약자. 앞서 언급한 것 처럼 MDCT Transform 계열의 코덱인데, 당대 열강의 업체들에서 각자 만들어서 각자이름을 붙이고 있었던 Transform코더의 조상들 MSC, OCF, PXFM, AT&*T hybird, CNET 등등이 하나로 뭉쳐서 단일 코덱으로 만든게 ASPEC 그리고 이게 MPEG-1 Layer-III로 들어가서 MP3가 된 것이다.

Dolby AC-3

MPEG-1이 만들어지던 같은 시기에 샌프란시스코의 돌비사는 AC-3이라는 기념비적 코덱을 만들었다. 디지털시대의 돌비기술을 준비하며 AC-1, AC-2 업그레이드 하다가 AC-3라는 쿨한 코덱을 독자로 개발.

AC-3는 MDCT계열의 코덱이면서 MUSICAM과 엇비슷한 연산량을 가지면서, 심지어 5.1채널까지 압축이 가능한 코덱. 1991년에 MPEG에선 스테레오 코덱을 만들었는데, Dolby에선 5.1을 그것도 fully MDCT로 만들었으니 상당히 앞서간것.

게다가 자신들의 텃밭인 헐리우드의 컨텐츠 제작사들과 북미의 Digital TV 전송 규격인 ATSC에 기본 코덱으로 채택시킴

apt-X & DTS

비슷한 시기 유럽 변방 북아일랜드 apt라는 회사에서 apt-X100이라는 서브밴드 계열 코덱으로 시작.

후에 DTS에 라이센싱 되어 현재 DVD타이틀에 AC-3와 함께 쌍벽을 이루는 코덱으로 자리잡은 그 DTS. DTS는 처음부터 AC-3보다 고음질이다! 라고 하는 것에 중점을 하였다. 이를 위해서 비트를 좀 더 쓰더라도(압축을 좀 덜하더라도) 절대 음질에선 비교우위에 있을 수 있는 서브밴드 필터뱅크 계열의 코덱을 채용한다.

즉 MUSICAM과 유사한 방법인데, 그 뿌리가 apt-X였다.

코덱의 성능이 기술적으로 우위에 있다기 보다는 마케팅과 로비의 힘(?)

최근 와서 무서운 속도로 다시 시장속으로 오고있음. 앞서 어디선가 다룬바대로 BlueTooth용 Hi-Fi 코덱 솔루션을 가지고.

PAC, ATRAC

MP3의 전신인 ASPEC에는 J.Johnston(JJ)을 대표선수로 하는 AT&T의 기술들이 상당부분 반영되어 있음. 하지만 거기에 안주하지 않고 AT&T 독자의 코덱을 계속 개발해옴. 그렇게 만든 것이 PAC(Perceptual Audio Coder)

PAC 역시 정통 MDCT 계열의 코덱이고 훗날 만들어 지는 AAC와 상당히 유사하다. 그림에 나오는 MPAC는 PAC을 멀티채널로 확장한 것이다.

그리고 또 하나의 사제 코덱 ATRAC는 소니(Sony)것이다. 아직도 꾸준히 살아서 소니가 만드는 mp3 player(워크맨)들이나 Sony-Ericsson의 워크맨폰에서는 지원을 하는데 처음 만들때는 AC-3, DTS처럼 극장용 사운드 트랙의 경쟁기술로써 그리고 당시에 있었던 모바일 기기중 하나인 MD의 압축 포맷으로 사용할 목적이었음.

ATRAC은 subband-MDCT를 둘 다 쓰는 hybrid 필터뱅크 코덱의 전형이다. 서브밴드 필터뱅크는 QMF를 이용하여 먼저 3~4개 밴드 신호를 만들어내고, 각 밴드 신호를 MDCT로 변환해서 추가적인 주파수 해상도를 얻어낸다.

이 때 전송 레이트를 바꾸고 싶으면 높은 밴드 하나를 통째로 날려도 나머지 밴드만으로 소리가 만들어지는 것이 가능한데, 이런 scalability를 제공하는 것이 ATRAC의 장점.

현재는 ATRAC 3라는 포맷으로 진화를 하였고, ATRAC Lossless라는 별도 포맷도 만들어짐.

ATRAC의 Hybrid필터뱅크 구조는 나중에 MPEG-2 AAC 표준화 할 때, gain control(혹은 pre-processor)라는 tool로써 표준에 채택이 되었는데, 이 기술은 SSR(Scalable Sample Rate) 프로파일에서만 사용이 가능하고 현재 SSR 프로파일 AAC는 아무도 사용하지 않기 때문에 죽은 기술이 되어버림. 그런 이유로 그림에서는 ATRAC로부터 AAC로 화살표가 이어짐

다시 MPEG, MPEG-2

MPEG-01을 완성해놓고 보니, 당시 시대의 요구사항은 HDTV와 DVD였다. CD에다 동영상을 넣어서 V-CD를 만들자는 생각은 이미 old fashion이 되어버린 것. 그래서 MPEG-2를 기획하게 된다. MPEG-2의 제목은 "Information technology -- Generic coding of moving pictures and associated audio information"이다. 앞서 MPEG-1에서의 1.5mbps어쩌구를 빼고 좀 더 generic하게 간것.

Video는 HD급 영상을 어떻게 압축하냐가 관건이고 , 오디오는 이제 5.1채널을 다뤄야한다는 것. 문제는 이미 1991년에 5.1채널 지원의 Dolby AC-3가 만들어져 있떤 시점. MPEG에서는 부랴부랴, 그리고 직전에 만든 MPEG-1을 카니발라이즈 하지 않는 표준을 원했고, 그래서 오디오는 MPEG-1에서 만든 3개 layer의 코덱을 그대로 들어다가 MPEG-2 도장을 찍어준다.

대신 스테레오만 지원하던 것을 5.1까지 지원해주고 확장된 표본화 주파수를 지원해주고 하는 것이 달라진 점 !

또한 MPEG-2는 하향 호환성(Backward Compatibility)을 보장하기 위해 5.1채널로 부호화된 비트열이더라도 그 안에 MPEG-1에 호환되는 스테레오 파트를 먼저 집어넣고, 나머지 3.1에 해당하는 부분을 MPEG-1로 보면 extension에 해당하는 신택스 공간에 밀어 넣는 방법을 사용한다. 물론 16, 22.05, 24kHz처럼 지원할 수 없는 것들은 포기.

그 밖에도 사실 몇 개의 다채널에서 압축을 잘할 수 있는 툴들을 포함시키긴 했는데, 다 사용되진 않음. 왜냐하면 MPEG-2가 비록 5.1을 지원하는 표준이긴 하지만 아무도 MPEG-2를 멀티채널로 서비스하지 않았기 때문.

MPEG-2가 유럽방식의 DTV표준인 DVB-T에 채택되어 사용되고 있는데 유럽에서는 방송으로 5.1을 안날렸음. 불행히도

여튼 그래서 MPEG-2라고는 하나 오디오는 사실상 MPEG-1과 달라진 것이 없다. MPEG-1 Layer-III나 MPEG-2 Layer-III나 MPEG-2.5 Layer-III나 다 같은 MP3인것이다. 이렇게 MPEG-2는 1994년에 완성이 된다.

집대성, MPEG-2 AAC

MPEG-2 표준이 완성된 이후, 체급이 같던 MPEG Layer-II와 AC-3의 시장 쟁탈전에서 슬슬 AC-3로 기우는 분위기가 연출

음질적으로 비교우위라는 입소문과 5.1채널 지원, 헐리우드와의 커넥션까지 Dolby가 가진 비교우위가 막강했던 것. DVD나 ATSC의 예처럼 비디오는 MPEG-2를 수용하면서도 오디오는 사제코덱이랄 수 있는 AC-3를 채택해버리는것이죠.

DVD가 AC-를 사용한다는 것은 시장에 돌아다니는 컨텐츠가 모두 AC-3라는 얘기가 되어버려 사실상 경쟁이 어려워지는 것. Ray Dolby(돌비 창업자)는 공돌이로도 비즈맨으로도 참 영리한 사람이었던 것 같음. 여튼 그런상황에서 MPEG 오디오쟁이들은 다시 고민을 한다.

지난 MPEG-2가 급하게, 그것도 MPEG-1과의 호환성을 고려하여 만들다보니, 더 좋은 기술들이 있음에도 불구하고 채택이 되지 못했다. 그러니 새로이 하향 호환성을 포기하더라도 더 좋은 압축성능을 낼 수 있는 새로운 코덱을 표준화 해보자. 그래서 MPEG-2 NBC라는 프로젝트에 착수하게 된다.

이제 호환성을 포기했으니 세상에 좋다는 기술은 다 가져다 붙일수 있게 된다. 그림의 화살표에 나온것 처럼 기존 코덱들의 장점은 일단 다 끌어온다. 기본적으로 연산량 고려안한 기술 집약적 코덱이었던 MP3는 NBC에서도 기본뿌리 역할을 한다. 심리 음향 모델에 근거한 스케일팩터를 사용하여 비트를 할당하는 Analysis by Synthesis 구조에다가 3/4승의 비선형 양자화며, 세련되기 face lift했지만 여전히 뼈대는 그대로인 구조임. 대신 subband후 MDCT하는 비효율적 hybird구조를 빼버리고 2048point까지 MDCT의 블럭 사이즈를 확장하고 양자화된 MDCT 계수를 추가로 압축하는 Huffman coding에도 세련미를 가미.

하지만, 무엇보다 TNS(Ternporal Noise Shaping)라는 새로운 툴을 도입한 것이 NBC에서의 큰 변화로 보여짐.(TNS가 얼마 만큼 음질 향상 효과가 있을까를 떠나서, 기존 코덱이 가지고 있던 문제를 명확히 정의하고, 문제를 풀기위해 머리를 굴리고, 그러다가 남들이 생각하지 못했던 새로운 방법을 찾아내고, 이를 끝내 구현해내고... 우리 엔지니어들이 답습해야할 BEST PRACTICE)

TNS역시 MP3 개국 공신들이었던 JJ(AT&T)와 J.Herre(FhG)의 작품인데, 처음에 이 기술을 논문을 접하고 매우 놀람.

ATRAC에서 언급했던 4 band 서브밴드 필터뱅크 후 MDCT 계수로부터 예측하고 그 찌꺼기(residual) 신호만 코딩을 하겠다는 생각만 해도 엄청난 연산량의 코딩 툴도 이때 도입이 됨

그렇게 완성된 표준은 NBC(Non-Backward Compatible)라는 표준화 단계에서의 어색한 이름을 버리고 MPEG-2 AAC(Advanced Audio Coding)이라는 깔끔한 이름을 부여받는다. 표준번호로는 1381807(MPEG-2의 part7라는 뜻). 완성시점은 1997년.

AAC는 최대 48채널까지도 부호화가 가능하고, 표본화 주파수도 최대 192kHz까지 아무 샘플링이나 가능하고, 등등 기존에 MPEG-2 BC가 가지고 있던 신택스의 경직성도 최대한 풀어두었다.

이렇게 틀을 완성한 AAC가 현재(2010년)까지도 업계 전반에서 주력으로 사용하는 오디오 코덱의 마지막이다. 현재 표준화가 진행중인 USAC 이 그 바통을 이어받을지 모르지만, USAC안에도 AAC가 다 딸려들어가기 때문에 기술도 유행도 끝나지 않을 불멸의 코덱이 되는 셈.

...

기타 등등

image-20200813153113141
image-20200813153117074

오디오코덱의 역사로 보자면 MPEG-1부터 MP3, PAC, MPEG-2, MPEG-4 AAC등등 꾸준히 발전해오고 있습니다.

사실 인간의 음성생성 모델을 기반으로 하고 있는 음성 부호화 기술과, 인간의 청각 모델을 기반으로 하고 있는 오디오 부호화 기술은 음성 통신과 음악 방송 등 각각 독립적인 서비스 영역에서 독자적으로 기술발전을 이루어왔습니다.

하지만 최근 방송과 통신이 융합되면서 더 이상 음성과 오디오 신호를 별도의 콘텐츠로 분리하는것이 어렵게 되었습니다.

그래서 하나의 부호화기로 음성과 오디오신호를 모두 처리할 수 있는 새로운 부호화 기술이 요구되면서 2012년에 MPEG-D USAC표준을 승인하게 됩니다.

USAC 표준화 이후 UHDTV 환경에서 다수의 스피커를 이용해 공간상의 임의의 위치에 음원을 위치시키기 위해 MPEG-H 3D Audio 표준을 진행하게 됩니다.

새로운 압축모듈을 개발하고 탑재하는 대신 USAC 기술을 활용하되 채널신호 압축효율을 높이기 위해 MPEG Surrond 기술도 접목하게 됩니다.

코덱(codec)이란 무엇일까?


Coder(코더) + decode(디코더)

Coder (부호화기) => 영상신호를 디지털신호로(인코딩)

Decoder(복호화) => 디지털신호를 영상으로(디코딩)

즉, 코덱이란 데이터(정보)를 관리(처리)하기 쉽도록 부호화시켰다가, 다시 데이터를 읽기 위해 복호화 하는 것을 의미한다.

코덱이란 영상장비에서 촬영된 영상을 전송하기에는 파일 사이즈가 너무 커지므로 용량이 큰 파일을 작게 만들어주는 과정이 꼭 필요한데 이것이 바로 인코딩이라고 합니다. 인코딩된 이미지는 그냥 볼 수 없고 본래대로 재생할 수 있게 압축을 푸는 기술인 디코딩을 거쳐야 합니다. 압축을하고 또 압축을 푸는 하나의 프로그램을 코덱(codec)이라고 합니다. (코덱마다 인코딩, 디코딩 알고리즘 자체가 다르다)

압축방식은 크게 2가지로 나눌 수 있다. MJPEG와 H.264방식이다. 2개의 코덱을 선택한 이유는 하나는 이미지 압축 방식(MJPEG)을 따르고 있고 다른 하나는 비디오 압축 방식을 따르고 있기 때문이다.

1. MJPEG

MJPEG는 이미지 압축방식이다.

image-20200717100525005

2. H.264

H.264는 비디오 압축 방식이다.

image-20200717100558667

차이점

MJPEG의 경우 처음부터 끝까지 자동차와 배경을 꾸준히 담아내고 있는 반면, H.264 코덱의 경우 첫 번째만 배경을 담고 나머지는 자동차의 움직임만을 기록하는 방식이다. 그렇다면 어떤 차이점이 있을까?

  • MPEG
    • 압축된 데이터 크기는 다른 코덱에 비해 클 수 밖에 없다.
    • 프레임 손실이 있을 때 영상 손실이 적을 수 있다.
      image-20200717101016515
  • H.264
    • 비디오를 구성하는 프레임간 차이 데이터만 압축하는 방식을 사용하고 있다. 차이만 압축을 하므로 압축되는 데이터 크기가 이미지 압축방식보다 작다. (배경이미지를 저장하지 않아 데이터 감소를 기대할 수 있다.)
      image-20200717100951900
    • 프레임 간 연계성을 가지고 있어 프레임 손실이 있는 경우, 연계가 있는 프레임들은 재생을 할 수 없는 단점이 있다.
      image-20200717101028037
728x90
반응형