목차13개 항목
출처와 참고
고려사이버대학교 「졸업세미나」(2024-2학기) 강의 중 권오상 교수의 「사운드 처리기술」 특강 내용을 바탕으로 정리했다.
소리는 물체의 진동이 공기의 압력을 흔들어 만든 파동이다. 컴퓨터가 소리를 다룬다는 것은 이 연속적인 파형을 숫자로 바꿔 저장하고, 고치고, 다시 파형으로 되돌리는 일이다.
소리의 세 요소
| 요소 | 물리량 | 들리는 것 | 메모 |
|---|---|---|---|
| 주파수 | 1초에 파형이 반복되는 횟수 (Hz) | 높낮이 | 사람이 듣는 범위는 대략 20Hz |
| 진폭 | 기준선에서 파형 꼭대기까지의 크기 | 세기 | 데시벨(dB)로 표현 |
| 파형 | 기본음에 섞인 배음(고조파)의 구성 | 음색 | 같은 높이·세기라도 피아노와 바이올린이 다르게 들리는 이유 |
귀는 소리 크기의 차이보다 비율에 반응한다. 그래서 크기를 로그로 잰다. 음압 레벨은 20 × log10(P / P0) dB이고, P0는 사람이 겨우 들을 수 있는 기준 음압이다. 음압이 10배가 되면 20dB 올라간다.
아날로그를 디지털로: 세 단계
flowchart LR mic["마이크"] --> lpf1["저역 통과 필터"] --> adc["ADC: 표본화 → 양자화 → 부호화"] --> dsp["편집·저장(DSP)"] dsp --> dac["DAC"] --> lpf2["저역 통과 필터"] --> spk["스피커"]
1. 표본화 (Sampling)
일정한 간격으로 파형의 값을 찍는다. 1초에 찍는 횟수가 표본화율(sampling rate, Hz)이다. 높을수록 원음에 가깝지만 데이터가 늘어난다.
나이퀴스트 정리: 원래 신호를 되살리려면 그 신호의 최고 주파수의 2배보다 높게 표본화해야 한다. 그보다 낮으면 높은 주파수가 낮은 주파수로 둔갑하는 에일리어싱이 생긴다. 그래서 ADC 앞에 표본화율의 절반보다 높은 성분을 미리 잘라 내는 저역 통과 필터를 둔다.
| 용도 | 표본화율 | 재현 가능한 최고 주파수 |
|---|---|---|
| 전화 음성 | 8kHz | 4kHz |
| 음악 CD | 44.1kHz | 22.05kHz (가청 한계 20kHz를 넘는다) |
| 영상·방송 | 48kHz | 24kHz |
2. 양자화 (Quantization)
찍은 값을 몇 단계로 나눠 표현할지 정한다. 표본 하나에 쓰는 비트 수가 양자화 비트(bit depth)다. 8비트는 256단계, 16비트는 65,536단계다. 실제 값과 가장 가까운 단계의 차이가 양자화 잡음으로 남고, 비트가 하나 늘 때마다 표현할 수 있는 음량 범위(다이내믹 레인지)가 약 6dB 넓어진다.
3. 부호화 (Encoding)
표본화·양자화한 값을 정해진 형식의 비트열로 기록한다. 그대로 쓰면 크기 때문에 보통 이 단계에서 압축한다.
파일 크기 계산
크기(비트) = 표본화율 × 양자화 비트 × 채널 수 × 시간(초)
| 예 | 계산 | 결과 |
|---|---|---|
| CD 음질 1분 (44.1kHz, 16bit, 스테레오) | 44,100 × 16 × 2 × 60 ÷ 8 | 약 10.6MB |
| 영상용 1분 (48kHz, 24bit, 스테레오) | 48,000 × 24 × 2 × 60 ÷ 8 | 약 17.3MB |
| 전화 음질 1분 (8kHz, 8bit, 모노) | 8,000 × 8 × 1 × 60 ÷ 8 | 약 480KB |
CD 음질의 비트레이트는 44,100 × 16 × 2 = 1,411.2kbps다. 스트리밍 음원이 128320kbps라는 것은 원본을 411분의 1로 줄였다는 뜻이다. 650MB짜리 CD 한 장에 무압축으로 1시간 남짓밖에 못 담는 이유도 여기서 나온다.
부호화 방식
| 방식 | 원리 | 쓰임 |
|---|---|---|
| PCM | 양자화한 값을 그대로 기록한다. 압축 없음 | CD, WAV |
| DPCM | 이웃 표본과의 차이만 기록한다. 소리는 연속적이라 차이가 작다 | |
| ADPCM | 차이가 크면 단계를 크게, 작으면 촘촘하게 조절해 DPCM의 약점을 보완한다. 최대 4:1 정도로 줄인다 | ITU-T G.721(32kbps 음성) |
| μ-law / A-law | 작은 소리에 단계를 더 많이 주는 비균일 양자화. 사람이 작은 소리의 변화에 더 예민한 것을 이용한다 | 전화(G.711). 북미·일본은 μ-law, 유럽 등은 A-law |
| MP3, AAC | 사람이 못 듣는 성분을 버리는 손실 압축. 큰 소리 옆의 작은 소리가 묻히는 마스킹 효과를 이용한다 | MP3는 MPEG-1 오디오 레이어 3, AAC는 그 후속 |
전화망에서 G.711이 쓰이는 방식은 VoIP와 SIP·RTP에, 지각 부호화의 일반 원리는 데이터 압축에 있다.
파일 포맷
| 분류 | 포맷 | 특징 |
|---|---|---|
| 무압축 | WAV, AIFF | PCM 그대로. 편집 원본용 |
| 무손실 압축 | FLAC, ALAC | 원본을 비트 단위로 복원할 수 있다. 보통 절반 정도로 준다 |
| 손실 압축 | MP3, AAC, Opus | 작다. 원본으로 되돌릴 수 없다. Opus는 WebRTC의 필수 코덱이다 |
디지털 오디오와 MIDI
| 구분 | 디지털 오디오 | MIDI |
|---|---|---|
| 담는 것 | 소리의 파형 자체 | 어떤 악기로 어떤 음을 언제, 얼마나 세게 칠지에 대한 연주 정보 |
| 크기 | 크다 | 아주 작다 (3분 곡이 몇 KB) |
| 소리 품질 | 녹음한 그대로 | 재생하는 쪽의 음원(신시사이저, 사운드 폰트)에 달렸다 |
| 사람 목소리 | 담을 수 있다 | 담을 수 없다 |
MIDI는 원래 전자 악기와 컴퓨터가 연주 정보를 주고받는 통신 규약이다. 악보에 가깝다고 보면 된다.
입체 음향
서라운드
모노(1채널)에서 스테레오(2채널)를 거쳐, 청취자를 둘러싼 여러 스피커로 공간감을 내는 서라운드로 발전했다. 5.1채널은 스피커 5개와 저음 전용 서브우퍼 1개(0.1)다. 청취자가 스피커 배치의 중심에 있어야 효과가 제대로 난다.
머리가 방향을 알아내는 단서
| 단서 | 뜻 |
|---|---|
| 양 귀 시간차 (ITD) | 소리가 가까운 쪽 귀에 먼저 닿는다 |
| 양 귀 세기차 (ILD) | 가까운 쪽 귀에서 더 크게 들린다. 머리가 고주파를 가리기 때문이다 |
| 귓바퀴·머리의 반사 | 위아래, 앞뒤 방향을 구분하게 해 준다 |
이 단서를 수학적으로 담은 것이 머리 전달 함수(HRTF) 다. 무반향실에서 양 귀에 마이크를 단 더미 헤드를 두고 여러 각도에서 소리를 틀어 녹음한 뒤, 각도별로 소리가 어떻게 바뀌는지를 함수로 만든다. 평범한 소리에 원하는 방향의 HRTF를 적용하면 헤드폰으로도 그 방향에서 들리는 것처럼 느껴진다. 특정 공간의 울림(직접음, 초기 반사음, 잔향)까지 재현하려면 그 공간에서 측정한 공간 전달 함수를 함께 쓴다.
게임과 VR은 청취자와 음원의 위치가 계속 바뀌므로, 위치를 실시간으로 계산해 HRTF를 바꿔 적용한다. 웹에서도 Web Audio API의 PannerNode에 panningModel = "HRTF"를 지정하면 같은 방식으로 3D 음향을 낼 수 있다.
const ctx = new AudioContext();
const panner = new PannerNode(ctx, { panningModel: "HRTF", positionX: 2, positionZ: -1 });
source.connect(panner).connect(ctx.destination); // 오른쪽 앞에서 들리는 소리정리
- 소리는 주파수(높낮이), 진폭(세기, dB), 파형(음색)으로 나뉜다.
- 디지털화는 표본화(나이퀴스트: 최고 주파수의 2배 초과) → 양자화(비트 수 = 정밀도) → 부호화 순서다.
- 파일 크기는 표본화율 × 비트 × 채널 × 시간이고, CD 음질은 1,411.2kbps다.
- 차이를 기록하는 ADPCM, 작은 소리에 촘촘한 μ-law·A-law, 마스킹을 이용하는 MP3·AAC가 크기를 줄인다.
- 입체 음향은 양 귀의 시간차·세기차를 담은 HRTF로 만든다.
관련 노트: VoIP와 SIP·RTP, 데이터 압축, 그래픽스 렌더링 기초