기록

[GPT가 알려주는] pcm 이란? 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] pcm 이란?

heylo 2025. 9. 17. 13:17

짧고 정확하게!

PCM 파일이란?

  • PCM(Pulse Code Modulation) = 압축하지 않은 원시(raw) 오디오 샘플들의 나열이에요.
  • 보통 헤더가 없음(= 메타데이터가 없어 “샘플레이트, 비트깊이, 채널수”를 프로그램에 직접 알려줘야 재생/변환 가능).
  • 반대로 WAV는 “PCM 데이터를 헤더(RIFF) 로 감싼 포맷”이라, 플레이어가 스스로 설정을 알아요.

꼭 알아야 할 5가지 속성

PCM을 다룰 땐 아래 정보를 알아야 합니다:

  1. 샘플레이트: 예) 16000 Hz(16 kHz), 48000 Hz 등
  2. 비트 깊이/형식: 예) s16le(signed 16-bit little-endian), f32le(float 32-bit)
  3. 채널 수: 1=모노, 2=스테레오(보통 L/R 인터리브)
  4. 엔디언: 보통 LE(little-endian)
  5. 부호: signed vs unsigned (대부분 signed)

예: “16kHz, 모노, 16-bit, little-endian, signed” = **s16le @ 16kHz mono**가 가장 흔해요(웹RTC/ASR에서도 표준급).

빠른 재생/변환 예시

(파일이 s16le/16kHz/모노라고 가정)

재생:

ffplay -f s16le -ar 16000 -ac 1 input.pcm

WAV로 변환:

ffmpeg -f s16le -ar 16000 -ac 1 -i input.pcm output.wav

WAV → PCM 추출:

ffmpeg -i input.wav -f s16le -ar 16000 -ac 1 output.pcm

흔한 함정

  • 샘플레이트를 틀리게 지정하면 소리가 빠르거나 느리게 들려요.
  • 비트깊이/엔디언이 맞지 않으면 지직거림/노이즈 발생.
  • 헤더가 있는 WAV를 PCM처럼 읽으면 소음만 납니다(반대도 마찬가지).

감 잡기(대략 용량)

  • 16kHz · s16le · 모노 → 1초 ≈ 32KB (16000샘플 × 2바이트).
  • 스테레오면 ×2.

필요하면, 네가 가진 pcm의 “정확한 형식”을 알려주면 맞는 ffmpeg 명령을 딱 맞춰서 적어줄게!