943. 펄스부호변조 (PCM) - 아날로그 음성 디지털 변환 표본화 양자화 부호화 과정 양자화 잡음 극복 통신망 코덱 기본 뼈대

핵심 인사이트: 1930년대, 전화선을 타고 사람 목소리(아날로그)가 넘어가면 10km마다 잡음(치직치직)이 섞여 100km쯤 가면 외계인 소리가 됐다. 알렉 リーブ스는 빡쳤다. "야! 목소리를 그대로 전기 파동으로 쏘니까 중간에 찌그러지잖아! 목소리를 현미경으로 쪼개서, 파도의 높이를 잰 다음 '0100110'이라는 컴퓨터 숫자(디지털)로 아예 싹 바꿔서 쏴버려! 숫자는 100km를 가도 절대 찌그러지지 않는다!" 아날로그의 영혼을 0과 1의 불멸의 디지털로 가둬버린 인류 통신 역사의 마스터키, PCM(펄스부호변조)이다.

Ⅰ. PCM (Pulse Code Modulation)의 개념

  • 개념: 마이크로 들어온 연속적인 아날로그 신호(음성, 음악)를 '표본화 ➜ 양자화 ➜ 부호화'라는 3단계 컨베이어 벨트를 거쳐 0과 1의 불연속적인 디지털 비트 스트림(Bit Stream)으로 변환하는 통신/압축 방식의 글로벌 표준 규격입니다.
  • 우리가 컴퓨터로 듣는 MP3 파일, 전화 통화 소리(G.711 코덱), WAV 파일의 근본 뼈대가 바로 이 PCM 덩어리입니다.

Ⅱ. PCM의 위대한 3단계 도축 과정 (변환 과정) 🌟

아날로그 파동을 컴퓨터 파일로 만드는 공장 라인입니다.

1단계: 표본화 (Sampling) - "칼질하기" 🌟

  • 연속된 소리의 물결 곡선(파동) 위에 1초마다 몇 개의 '점(표본)'을 찍어서 값을 추출할지 결정합니다.
  • 942번 문서에서 배운 나이퀴스트 정리에 따라, 인간의 일반적인 전화 통화 최고 음역대인 **4,000Hz (4kHz)**를 살려내기 위해 1초에 최소 2배인 **8,000번 (8kHz)**의 칼질을 해서 점을 톡톡 찍어냅니다.

2단계: 양자화 (Quantization) - "반올림하여 줄 세우기" 🌟

  • 표본화로 찍은 점의 높이가 '3.141592V'처럼 무한 소수라면 컴퓨터에 저장할 수 없습니다.
  • 이 점의 높이를 가장 가까운 정수 칸막이(예: 3V 또는 4V)로 강제로 끌어당겨 '반올림' 해버립니다.
  • 양자화 잡음 (Quantization Noise) 🌟: 3.14V를 3V로 깎아버렸으니, 원본 목소리에서 0.14V만큼의 데이터가 파괴되어 날아갔습니다. 이 강제 반올림 때문에 스피커에서 들리는 미세한 쇳소리(잡음)를 양자화 잡음이라고 하며, PCM의 숙명적인 맹점입니다. 이 잡음을 줄이려면 반올림 칸막이(비트 수)를 8비트에서 16비트로 엄청나게 촘촘하게 썰어야 합니다.

3단계: 부호화 (Encoding) - "0과 1로 번역하기"

  • 양자화로 반올림된 정수값 '3'을 컴퓨터가 읽을 수 있는 8비트 이진수(예: 00000011)로 변환합니다.
  • 결과적으로 1초에 8,000번 점을 찍고, 1개 점당 8비트의 숫자를 부여했으니, 1초의 전화 통화 데이터는 **$8,000 \times 8 = 64,000 bps (64Kbps)$**의 인터넷 트래픽을 잡아먹게 됩니다. (전 세계 전화기 ISDN의 절대 표준 속도)

Ⅲ. 양자화 잡음을 줄이는 꼼수 (비선형 양자화, 압신)

반올림 오차(잡음)를 줄이려고 무작정 16비트, 24비트로 용량을 늘리면 데이터가 터집니다.

  • 컴팬딩 (Companding / 압신): 사람의 귀는 '큰 소리의 오차'는 둔감하고, '작은 속삭임의 오차'에는 엄청 예민합니다.
  • 그래서 양자화 칸막이를 자를 때 일정한 간격(선형)으로 자르지 않고, 작은 소리 구간은 칸막이를 엄청 촘촘하게(세밀하게 반올림) 자르고, 큰 폭발음 소리 구간은 칸막이를 듬성듬성(대충 반올림) 잘라서(비선형 양자화) 데이터 용량은 아끼면서 귀에 들리는 잡음은 기가 막히게 날려버리는 마법을 씁니다. ($\mu$-law, A-law 등)

📢 섹션 요약 비유: PCM(펄스부호변조)은 구불구불 이어져 있는 '아날로그 롤러코스터 레일'을 엑셀(디지털 숫자)로 그려내는 도축 작업입니다. 첫째, **표본화(Sampling)**는 롤러코스터 레일 위에 1미터 간격으로 페인트 점을 8,000개 찍는 칼질입니다. 둘째, **양자화(Quantization)**는 각 페인트 점의 지상 높이가 10.3미터일 때, 자재를 아끼기 위해 반올림하여 강제로 10미터짜리 철골 기둥에 맞춰버리는 억지 작업입니다. 이때 0.3미터의 오차가 생겨 레일이 약간 덜컹거리는데 이것이 **'양자화 잡음'**입니다. 셋째, **부호화(Encoding)**는 이 반올림한 높이 '10'을 이메일로 보내기 위해 '01010'이라는 텍스트 숫자로 바꿔 타자 치는 것입니다. 목적지(수신자 컴퓨터)는 이 텍스트 숫자를 보고 기둥을 세운 뒤 그 위로 레일(파동)을 부드럽게 덮어 씌우면, 아무리 먼 거리를 전송했더라도 원본 롤러코스터와 거의 똑같은 복제품이 100% 디지털로 뚝딱 부활하는 마법의 아키텍처입니다.