오디오/오디오 주제

아나로그, 샘플링, 디지털, ADC

이현봉 2010. 3. 14. 23:51
자연계의 모든 신호는 아나로그랍니다.  아나로그란 신호가 찰나의 순간에 급격히 변하는 그런 것이 아닌 것입니다. 변하더라도 부드럽게, 부드럽게 연속적인 그런 신호가 아나로그입니다.  아나로그 시계의 분침, 시침이 부드럽게 움직이는 것 같이요. 디지털은 아나로그와 반대이죠.  순간에 신호값이 0에서 1로, 1에서 0으로 바뀌는 그런 것이 디지털 신호랍니다.

그런데요.  전 우주 어디에서건 - 그러니까 문명이 만들어 낸 모든 디지털 기기들을 포함해서요 - 순간에 0에서 1로 바뀌는 그런 신호는 없답니다.  즉, 앞서 "지터" 글의 펄스 트레인과 같은 그런 완벽한 사각형 신호 만들 수 없습니다.  수천억을 들여도 불가능, no way, keiner Weise, невозможна, aucun moyen, hakuna njia, 안됩니다. 그 이유는 무한대의 에너지가 필요하기 때문이죠.  그런데, 무한대는 없잖아요.   

순수한 디지털 신호가 없으면 그러면 pc, 휴대폰, mp3 이런 모든 디지털 기기들은 어떻게 작동하죠?  완벽한 사각형은 아니지만 사각형 비슷한 모양을 갖는 펄스 신호를 사용합니다. 디지털 기기들이 높은 속도를 요구할 수록 펄스 모양도 사각형에 더 가까와져야 한답니다.    

아나로그 신호를 디지털화 하는 과정을 Analog to Digital Conversion, 짧게 ADC라고 하고 이 작업을 수행하는 장비를 Analog to Digital Converter - 이것도 ADC입니다 - 라고 합니다.  ADC과정의 핵심은 sampling 입니다. 

sampling/샘플링 개념은 무척 단순합니다.  아나로그신호를 일정한 간격으로 표본을 뜨는 것입니다.  표본검사라는 것이 있죠?  모든 것을 다 검사할 수 없으면, 표본을 취해 검사하는 것.  ADC에서 샘플링은 그렇다고 신호를 검사하려는 것은 아니고, 아나로그신호의 특성을 디지털 신호로 바꾸는 작업입니다.  이런 거죠.  샘플링주파수, 그러니까 아나로그신호의 샘플을 얼마나 자주 취하나 하는 것이 10Hz 라면 1초에 10번 표본을 취하죠.  즉, 0.1초 간격마다 표본을 뜨죠.  그러면 0초에 아나로그 신호값을 보아 그 샘플값을 숫자로 뜨고(보통 이진수), 0.1초 시에 아나로그 샘플을 뜨고, 0.2초 시에 뜨고, 0.3초에 뜨고, 이런 식입니다. 


위의 그림에서 어떤 아나로그 소리 신호가 -1 에서 1 사이의 값을 갖고 변하고 있습니다.  이 소리를 샘플링주파수(샘플링 rate) 10Hz로 샘플링하니 0초, 0.1초, 0.2초... 0.9초 때의 값이 [ 0, 0.76, 1, 0.67, 0.17, -0.05, 0.13, 0.23, 0, -0.53 ] 처럼 10개의 샘풀링 값이 나왔습니다.  이 샘플링값을 저장하면 ADC를 수행한 것입니다. 

ADC의 핵심은 아나로그신호를 어떻게 하면 온전히 디지털 신호로 바꿀 수 있는가에 있죠.  이 참에 이제는 디지털 신호라는 말 대신에 디지털 정보라고 합시다.  이 세상에 무수히 다양한 아나로그신호가 있을 텐데 그 때 그 때 어떻게 ADC하죠?  정답은, 할 수 있으면 가능한 높은 샘플링 rate로, 그리고 샘플링값을 나타낼 때 가능하면 많은 bit를 써서 하면 나쁠 것은 없습니다.

샘플링값을 많은 bit로 써서 표현하면 뭐가 좋죠?  위의 아나로그 신호가 -1에서 1사이의 값을 갖으니 그 간격이 2 이네요.  앞에서 0.1초 때의 샘플링값이 0.76이라 했는데 실제로는 0.7598987675 이었는지도 모릅니다.  그런데 그냥 적당히 0.76으로 얼버무린 거죠.  왜죠?   0.7598987675 나타내려면 숫자가 많이 필요하고 이말은 이 숫자를 표현하기 위해서 bit 들이 많이 필요하다는 말이죠.  bit를 많이 쓰면 정밀하게 값을 나타낼 수 있지만 비용이 많이 들죠.  그래서 적절한 타협을 합니다.  예를 들어 위의 -1에서 1사이의 샘플링값을 2 비트로 표현해야 한다고 합시다.  2 비트로는 0, 1, 2, 3 이렇게 4개의 값 또는 레벨만을 표현할 수 있죠.  -1에서 1 사이를 4 구간으로 나누면 [-1, -0.5), [-0.5, 0), [0, 0.5), [0.5, 1) 이렇게 네 구간이 될 수 있죠.  구간간의 차이가 0.5이네요. 그러면 [-1, -0.5) 구간에 샘플링값이 위치하면 0으로 표시하고, [-0.5, 0) 구간이면 1로 표시하고, 이런 형식으로 표현할 수 있죠.  2비트를 사용해서 샘플링된 값을 나타내면 -1에서 1 사이의 값을 4가지 값으로 밖에 나타내지 못하니 별로 정밀하지 않습니다.

cd는 샘플링값을 표현하기 위해 16bit를 씁니다.  16bit이니 2의 16승, 그러니까 65536 개의 서로 다른 값/레벨을 나타낼 수 있죠.  0부터 따지면 0, 1, 2, ..   65535 까지네요.  물론 아나로그 신호 값이 0에서 65535 사이에서 변한다면 그대로 쓰면 되지만 앞에서와 같이 -1 에서 1 사이에서 변한다면 어떻게 할까요.  간단합니다.  그 간격을 65536으로 나눕니다.  그러면 16비트 샘플링값의 한 레벨/스텝 차이는, 그러니까 가령 12788와 12789차이는 원래 아나로그값의 0.0000305 차이 만큼이죠.  앞의 2비트 경우의 0.5 보다 훨씬 정밀하게 아나로그 값을 나타낼 수 있죠.  이렇게 ADC한 샘플링값을 얼마나 정밀하게 나타낼까 하는 것이 ADC의 해상도를 결정하는 것이고, 해상도를 높이려면 더 많은 bit수를 사용해야 합니다.  비트는 자원이니 많이 쓰면 비싸게 먹힙니다.

아까 ADC를 할 때 가능하면 높은 샘플링 rate를 써서 나쁠 것이 없다고 했죠.  나쁜 점이 있기는 합니다.  비싸게 먹힙니다. 얼마나 자주 샘플링을 하는가를 나타내는 샘플링 rate (또는 샘플링 주파수, 샘플링 빈도, 샘플링 속도 라고 하기도 하죠) 는 ADC를 할때 얼마나 높은 주파수 특성을 포함하고 있는 아나로그 신호를 제대로 캡쳐할 수 있는가를 결정하는 지표입니다.  신호는 주파수 특성과 신호세기 특성으로 파악되는데, 샘플링 rate는 샘플링할 때 캡쳐할 수 있는 아나로그신호의 주파수 특성이 어디까지 인가를 결정하는 것이고, 앞서의 비트 수(bit length 또는 bit depth라고 합니다) 는 샘플링해서 캡쳐한 아나로그신호 세기를 표현할 때 얼마나 정밀하게 나타낼 수 있을까 하는 해상도에 관계되는 것입니다.  여기서 잠깐 신호의 주파수 특성에 대해서 볼까요.

원래는 위와 같은 아나로그신호를 귀가 나쁜 사람이 들으면 아래의 굵은 선과 같은 것으로 듣게 됩니다.

삐죽 삐죽 급하게 변하는 고주파 신호 성분은 듣지 못하고 큰 윤곽만 듣게 되는 거죠.  그러면, 실제 위 신호에는 굵은 윤곽신호가 정말로 있는 것인가요?  그렇게 생각해도 됩니다.

이 세상의 모든 신호, 얼마나 복잡하고 변태적이던 간에, 는 다양한 크기와 주파수를 갖는 싸인파(수학 정석의 sine 파)들의 합으로 만들 수 있습니다. 이는 또 다른 말로, 모든 신호를 분석하면 다양한 싸인파들로 쪼갤 수 있다는 말이죠.  마치 햇빛을 프리즘으로 투과하면 무지개색으로 나뉘어지듯이 말이죠. 자연계의 신호나 정보는 대부분 이렇습니다.  쪼개어도 원래 정보가 없어지지 않죠.  참고로, 사람을 쪼개면 원래대로 다시 만들기 좀 곤란하죠.  그런데, 스타트렉에서 순간이동기 있지 않습니까?  이 장치의 이론적 배경은 사람을 구성하고 있는 모든 세포, 원자 레벨의 정보를 완전히 복사(샘플)해서, 그 정보를 전송해 다른 곳의 순간이동기에서 재조합하는 것이래요.  그러니 원래 나는 해체되었고, 다른 곳에서 원자레벨의 원재료를 갖고 다시 재조립되는 것이랍니다.  이 것 종교 믿는 사람 보면 안될 것 같지 않습니까?  물질도, 영혼도 다 정보라 하니까요.  Anyway,

보통 일상의 복잡한 음악/소리 신호는 높은 주파수를 갖는 몇 개의 싸인파들로 만들어진 것이 아니라, 낮은 주파수에서 높은 주파수를 갖는 다수의 싸인파들로 만들어진 것이죠.  이런 신호 모양은 보통 멀리서 보거나, 아니면 눈 나쁜 사람이 보면 유유히 움직이는 심플한 파형 같지만, 가까이서 보면 유유함 속에 오밀조밀 파형이 복잡하고, 더 확대해 보면 그 안에 안보이던 세밀 세밀한 파형이 보이는 그런 구조입니다. 

어떤 음악/소리가 { 50, 200, 500, 2400, 5000, 12000Hz }  이렇게 6개의 싸인파들로 구성되었다고 해 보죠.  이 때 50Hz 성분과 12000Hz 성분은 대충 어떤 역할을 할까요.  대충 50Hz를 포함한 낮은 주파수의 싸인파들은 소리의 큰 윤곽을 담당하고, 12000Hz 같은 높은 고주파성분은 소리의 세밀한 특성을 표현한다고 생각하면 됩니다.  마치 조각을 할 때, 낮은 주파수 성분은 대형 전기톱이어서 조각을 크게 다듬을 때 쓰고, 높은 주파수 성분은 치과용 드릴이나 송곳같이 세밀한 도구이어서 모서리나 피부 표면, 머리카락 같은 세밀한 작업에 쓰고요.  그러니까, 샘플링할 때 아나로그 신호의 주파수 성분 중 가장 높은 고주파 성분까지도 다 담을 수 있을 수록 원래 신호의 세밀한 부분까지 캡쳐할 수 있기에 좋은 것입니다.
 

그런데 샘플링속도와 아나로그 신호에서 캡쳐할 수 있는 고주파 성분은 정비례관계 입니다.  샘플링속도가 2배 증가하면, 캡쳐할 수 있는 주파수 성분의 상한도 2배 상승하죠.  상식적으로 그렇지 않습니까?  신호가 빨리 빨리 변하면 샘플링도 빨리 빨리 해야죠.  띄엄 띄엄 샘플링하면 중간에 무엇이 있었는지 놓치지 않겠읍니까?

CD의 샘플링속도(sampling rate)는 44.1KHz입니다.  1초에 44100 번 샘플링하죠.  샘플링한 값은 아까 얘기대로 16비트를 써서 나타내고요.  그러면 시디는 원래 아나로그 신호의 어느 높이의 주파수 성분까지 캡쳐할까요. 

디지털 정보계에 Harry Nyquist, Claude Shannon 이라는 두 거성(큰별, not 큰 소리) 이 계셨습니다. 이 두분들이 여러 업적을 남기셨는데 그 중 하나가 모든 공대생들이 한 번 즈음은 들었을 Nyquist rate 입니다.  얘기 인즉은, 아나로그 신호를 샘플링할 때 그 신호의 최고로 높은 주파수 성분의 2배 이상으로 샘플링 속도를 가져가면 아나로그 신호를 온전히 캡쳐할 수 있다는 것입니다. 사람의 목소리도 낮은 주파수, 높은 주파수, 여러 주파수의 구성 성분으로 되어 있습니다.  사람이 낼 수 있는 가장 높은 주파수는 어느 정도일 까요?  이 곳을 보니 사람의 목소리는 최고 1000Hz를 잘 넘지 못하네요.  그럼, Nyquist rate에 따르면 샘플링속도를 2000Hz로만 잡으면 어느 누구 사람 목소리도 잡을 수 있다는 거죠.  그렇지만 사람목소리뿐만 아니라 심벌즈, 새소리, 개소리, 천둥소리 와 같은 소리도 담아야 하기에, 그리고 사람은 약 20000Hz 까지 들을 수 있기에 최소한 20000만의 2배, 그러니 최소한 40000Hz의 샘플링 rate가 필요하죠.  그래서 시디는 44100Hz로 샘플링을 합니다.  그러면 최고 22050Hz 성분의 주파수까지 잡을 수 있고, 또 나중에 재생할 수 있죠.

그러면, 아나로그 신호에 22050Hz 이상의 주파수 성분이 있었으면 그 것은 cd에 어떻게 캡쳐 되죠?  온전히 안되면 일부라도 되나요?   그냥 잊는게 낫습니다.  aliasing 문제로 22050Hz 이상의 성분은 신뢰할 수 없기에 디지털 신호를 나중에 아나로그로 재생할 때 22050Hz 이상의 성분은 보통 제거합니다.

이처럼 아나로그 신호를 디지털 정보로 변환하는 Analog to Digital Conversion은 아나로그 신호의 특성을 잘 감안하고, 또 ADC 한 디지털 정보를 어떻게 쓸 것인가, 어느 정보 품질이면 되겠는가, 디지털 정보를 보관하고 전송할 때 비용 등을 감안해서 샘플링할 때 샘플링 rate와 bit depth를 결정합니다.  MP3와 같은 것으로 압축하는 것은 ADC 이후의 별개 과정입니다. 

참고로 CD는 어떻게 ADC 하는 가를 살펴보면;

시디의 샘플링 rate는 44.1KHz 이고 bit depth는 16 이니,
44100 샘플/초 * 16 비트/샘플 = 705600 비트/초  : 한 채널당

그런데 시디는 오른쪽, 왼쪽 두 채널이 있으니 초당
2 * 705600 비트/초 = 1411200 비트/초 (보통 이 값을 bit rate라 합니다.  비트 전송 속도)

그러니까 초당 1411200 비트가 필요합니다.  그러면 시디 1시간 짜리에는 얼마나 비트가 필요할 까요?  1시간은 3600초이니
3600 * 1411200 = 5080320000 비트.  그러니 1시간 짜리 cd 한 장에는 이만큼 비트가 있습니다.  보통 저장매체는 바이트로 나타내니, 앞의 수를 8로 나누면

5080320000/8 = 635040000 바이트 이네요.  보통 1024 바이트를 1 KByte라 하니,
635040000/1024 = 620156.25 KByte이네요.  1024Kbyte가 1 MByte 이니, 앞의 수를 1024로 나누어
605.621...  메가 바이트가 나왔습니다.  즉, 1시간 cd에는 소리를 담은 약 605 메가 바이트의 정보가 담겨 있습니다.  

* 앞에서 1K 를 1024로 했지만, 많은 경우에는 1K 를 그냥 1000으로 잡습니다.  그러면, cd는 초당 1.4112 Mbit 로 아나로그를 디지털 코딩하는 것이죠.  그리고 1시간 시디에는 총 635.04 메가 바이트 크기의 음악 데이터가 있고요.