소리에 대한 상식 (샘플링)

일반적인 소리의파형
[그림1]
일반적인 소리의 파형
아날로그 형태의 파형을 디지털 형태로 변환
[그림2]
아날로그 형태의 파형을
디지털 형태로 변환
간격을 줄일수록 원래 아날로그 신호와 가깝게 된다
[그림3]
간격을 줄일수록 원래
아날로그 신호와 가깝게 된다
   소리는 공기를 통해 귀에 들려온다. 우리는 귀에는 [그림1]과 같은 파형의 소리가 전달된다. [그림1]에서 보는 바와 같이 각 파형은 진폭과 주파수를 갖는다. 진폭이 클수록 소리의 크기가 크다는 뜻으로 음량이 높다는 것을 나타낸다. 또한 주기가 짧을수록 일정 시간에 울리는 파형수가 많음을, 그리고 이런 소리는 음 높이가 높다는 것을 의미한다. 이 소리의 진동이 우리 귀의 고막을 진동시켜 결국 알아 듣게 되는 것이다.

   한편 소리는 디지털값이 아닌 아날로그값이다. 모든 소리값은 계속적으로 연속되어 변한다.우리 귀는 굉장히 빨리 변하거나 미세한 변화는 거의 느끼지 못하며, 컴퓨터 역시 아날로그 값을 기억할 수 없으므로 디지털 값으로 변환이 필요하다. 따라서 [그림1]의 파형을 [그림2]와 같이 논리적으로 변화시킨다고 가정할 때, 우리의 귀는 거의 느끼지 못해 원래 소리와 같다고 느끼게 된다. 이런점을 이용해 컴퓨터에서는 모든 아날로그 형태의 소리를 [그림2]의 파형과 같이 변화시킨다. 이때 사용하는 기계가 바로 ADC (Analog to Digital Converter)이다. 이 기계는 아주 짧은 일정시간마다 그때의 아날로그값을 측정하여 디지털 값으로 변환시켜 저장하게 된다.

    ADC로 소리는 변화시킬 경우 2가지 미리 생각해 볼 변수가 있다. [그림3]에서 ⓐ와 ⓑ의 간격이 클수록 변화된 소리는 원래 아날로그 신호와 거리가 멀게된다. 따라서 이런 간격을 줄일수록 변화된 신호는 원래의 아날로그 신호와 가깝게 된다. 먼저 ⓐ를 줄이기 위해서는 변화시킬 아날로그값을 보다 세밀하게 디지털값으로 변화시키면 된다. 예를 들어 한 번 측정해 디지털값으로 변환할 때 1byte로 하느냐 2byte로 하느냐, 아니면 더 많은 byte를 사용하느냐에 따라 변환된 값은 보다 높은 해상도를 갖게된다. 2byte를 사용할 경우 1byte를 사용했을때보다 2배의 메모리가 필요하지만 실제 연주되는 소리의 질은 2byte를 사용할 경우가 1byte를 사용했을때보다 약 256배 정도의 높은 해상도를 가지므로 논리적으로 256배 정도 더 좋은 음질의 소리를 낼 수 있다고 할 수 있다.

ⓑ를 줄이기 위해서는 일정 시간에 나타나는 디지털값들이 보다 많도록 하는 것이다.
그러기 위해서는 일정 시간동안 보다 많은 변환을 하면 된다.
이 때 알아야 할 것이 샘플링 주파수이다.

샘플링이란 아날로그 신호를 채취해 내는 것을 말한다. 우리 귀의 가청 주파수는 약 22,050Hz까지 이다. 즉 사람은 초당 22,050번 이상의 주파수를 가지는 소리를 들을 수 없는 것으로 알려져 있다. 따라서 이 이상의 주파수는 기록해서 다시 연주를 해도 우리의 귀가 듣지 못하므로 필요가 없다.

22,050Hz의 주파수를 갖는 소리를 디지털로 변환하기 위해서는 그의 2배인 초당 44,100번의 AD 변환과정이 필요하다. 왜냐하면 주파수란 초당 몇 번의 파형이 나타내는가를 의미하고, 하나의 파형은 상승과정과 하강과정이 있기 때문에 하나의 파형을 나타내기 위해서는 상승했을때와 하강했을때의 2개 값이 필요하다. 이 것이 샘플링 이론(Sampling Theory)이다. 우리가 듣는 CD도 44.1KHz로 샘플되어 저장된다. 그리고 매 변환마다 2byte를 사용한다. 즉 16bit 변환을 사용한다. 이런 과정을 통해 아날로그 신호인 소리가 컴퓨터에 저장되고 , DAC (Digital to Analog Converter) 를 통해 전달되는 것이다.

    이제 다른 것을 생각해보자. 16bit, 44.1KHz로 1초간 채취된 소리를 16bit, 88.2KHz로 0.5초간 연주한다면 어떻게 될까? 이런 경우 모든 소리는 2배 빠른 속도로 연주된다. 각 소리는 2배의 주파수를 가지고 연주될때 사람의 귀에는 음 높이가 한 옥타브 올려져 들리게 된다. 예를 들어 원래 채취한 소리가 C4음이었다면, 귀에 들리는 소리는 C5음이 된다. 다시 말해서 같은 소리의 주파수를 2배로 올릴수록 한 옥타브씩 음 높이가 올라간다. 반대로 16bit 22KHz로 2초간 연주하면 한 옥타브가 내려져 들리게 된다. 이렇게 하나의 소리가 연주 시간에 따라서 음높이는 Log함수를 이루게 된다. 만일 채취한 소리의 음높이를 원하는 양만큼 올리고 내릴때는 연주 속도를 바꿔주면 된다.

    이번엔 모든 채취된 값을 2배 늘려주면 어떻게 될까? 연주되는 소리가 원래의 소리보다 2배 큰 진폭을 갖게 되며, 이 때 사람의 귀에는 2배 더 큰 소리로 들리게 된다. 지금까지 설명한것이 PCM 방식의 음성변환이다. 이외에도 PCM방식을 약간 개조하여 데이터의 양을 줄인 ADPCM방식도 있다.

출처 : 월간 마이크로소프트웨어 1995년 6월호