선형 예측 부호화
오류 제보선형 예측 부호화(linear predictive coding, LPC)는 신호의 현재 샘플을 과거 p 개 샘플의 선형결합으로 예측하고, 그 예측 계수와 예측 오차(잔차) 만으로 신호를 표현하는 기법이다.
1. 개요
| 선형 예측 부호화 Linear Predictive Coding (LPC) | |
|---|---|
| 모형 | 전극(all-pole) 필터 + 여기 신호 |
| 계수 추정 | 자기상관법(레빈슨-더빈) 또는 공분산법(촐레스키) |
| 음성 차수 | 8 kHz 표본화에서 10차가 표준 |
| 전송 표현 | 반사 계수, 선 스펙트럼 쌍(LSF) |
| 대표 응용 | LPC-10, CELP 계열(G.729·AMR), FLAC |
다음 샘플을 맞혀 봐라. 맞힌 부분은 보내지 않아도 된다.
선형 예측 부호화(linear predictive coding, LPC)1는 신호의 현재 샘플을 과거 개 샘플의 선형결합으로 예측하고, 그 예측 계수와 예측 오차(잔차) 만으로 신호를 표현하는 기법이다.
영역으로 옮기면 , 즉 다. 신호 는 잔차 를 전극(all-pole) 필터 에 통과시킨 것이 된다. 통계 쪽에서 보면 이것은 차수 의 자기회귀 모형을 짧은 구간마다 다시 맞추는 일이고, 수치해석 쪽에서 보면 토플리츠 행렬 선형계를 프레임마다 푸는 일이다.
이 기법이 유명해진 건 음성 덕분이다. 사람 목소리는 성대가 만드는 펄스열(또는 마찰 잡음)이 성도라는 관을 지나며 공명하는 것이고, 성도의 공명(포먼트)은 전극 필터로 잘 근사된다. 그래서 음성 20~30 ms 구간을 계수 10개와 “펄스냐 잡음이냐, 음높이, 세기” 몇 비트로 줄일 수 있다. 1970년대 미국 국방 통신의 2.4 kbps 보코더에서 시작해 휴대전화 음성 코덱 전부, 그리고 무손실 오디오 FLAC 까지 이 한 줄의 예측식 위에 서 있다.
점화식 자체와 반사 계수의 의미는 레빈슨-더빈 알고리즘에 있다. 이 문서는 그 알고리즘을 실제 신호에 쓸 때 생기는 결정들 — 어떤 상관을 쓸지, 창과 전처리, 차수, 그리고 계수를 어떻게 전송할지 — 을 다룬다.
2. 계수 구하기 — 자기상관법과 공분산법
예측 오차 제곱합 을 최소화하면 정규방정식이 나온다. 차이는 합을 어디서부터 어디까지 하느냐다.
2.1. 자기상관법
구간 밖을 0으로 보고(창을 씌우고) 무한 구간 합을 한다. 그러면 정규방정식의 행렬이 자기상관 로 된 대칭 양정치 토플리츠가 되어
를 레빈슨-더빈으로 에 푼다. 가장 중요한 성질은 안정성 보장이다. 행렬이 양정치인 한 반사 계수가 모두 이고, 합성 필터 의 극이 전부 단위원 안에 있다. 복호기에서 필터가 발산할 일이 없다는 뜻이고, 실시간 코덱이 이 방법을 쓰는 이유다.
대가는 창이다. 구간 양 끝을 0으로 잘라 내는 효과 때문에 추정에 편향이 생기므로 해밍 창 같은 부드러운 창을 쓰고, 구간을 피치 주기 두세 개 이상(20~30 ms)으로 잡는다.
2.2. 공분산법
창 없이 구간 안의 샘플만으로 합을 한다. 행렬이 토플리츠가 아닌 대칭 양정치 행렬(공분산 행렬)이 되어 촐레스키 분해로 풀고, 짧은 구간에서도 편향이 작아 분석 정확도가 높다. 하지만 안정성이 보장되지 않는다. 실제로 우리가 만든 합성 모음 신호의 10 ms(80샘플) 구간 68개에 10차 공분산법을 걸었을 때는 극의 최대 반지름이 0.985 로 모두 안정했지만, 이건 그 신호가 순한 것이지 보장이 아니다. 그래서 공분산법은 분석·연구용, 자기상관법은 부호화용으로 갈린다. 둘 사이를 잇는 버그 격자법(Burg)은 반사 계수를 단계별로 직접 추정해 안정성과 창 없는 정확도를 동시에 얻는다.
3. 전처리와 차수 — 실측
수치로 확인해 보자. 표본화 8 kHz, 피치 100 Hz 펄스열을 성문 파형 근사(실수 이중극 0.95)로 거른 뒤, 포먼트 4개(700/1220/2600/3400 Hz, 대역폭 80~150 Hz)짜리 전극 필터를 통과시켜 합성 모음을 만들었다. 30 ms 해밍 창, 자기상관법 10차의 결과다.
| 프리엠퍼시스 없음 | 프리엠퍼시스 | |
|---|---|---|
| 예측 이득 | 25.9 dB | 9.4 dB |
| 최대 반사 계수 | 0.990 | 0.783 |
| 추정 포먼트 (Hz) | 701, 1223, 2599, 3415 | 700, 1217, 2595, 3404 |
두 경우 모두 포먼트를 몇 Hz 오차로 찾아낸다. 그런데 프리엠퍼시스 없이는 반사 계수 하나가 0.990 까지 붙는다. 음성 스펙트럼은 성문 파형 때문에 고주파로 갈수록 처지는데, 예측기가 계수 일부를 이 기울기를 맞추는 데 쓰기 때문이다. 가 1에 가까우면 자기상관 행렬의 조건수가 나빠지고 고정소수점 구현에서 계수가 불안정해진다. 1차 고역 강조 필터로 기울기를 미리 펴 주면 반사 계수가 0.78 로 내려오고, 계수 10개를 포먼트에 온전히 쓸 수 있다. 예측 이득 숫자가 줄어든 건 성능 저하가 아니다 — 원래 예측하기 쉬웠던 기울기 성분을 전처리가 먼저 가져갔을 뿐이다.
차수를 바꿔 보면 이득은 에서 포화하고 12·16 으로 올려도 그대로다(합성 모형의 실제 극 수가 포먼트 8 + 성문 2 = 10 이므로). 실제 음성에서 쓰는 경험칙은 “1 kHz 당 극 한 쌍 + 2~4” 이다. 8 kHz 협대역이면 10차, 16 kHz 광대역이면 16차가 표준이 된 이유다. 더 올려도 이득은 거의 늘지 않고 피치 하모닉스까지 맞추기 시작해 스펙트럼 포락선이 울퉁불퉁해진다.
실무 코덱은 여기에 두 가지 안전장치를 더한다.
- 백색잡음 보정. 에 정도를 곱해 행렬 대각을 미세하게 키운다. 40 dB 아래 잡음 바닥을 깐 것과 같아서 극이 단위원에 너무 붙는 것을 막는다(티호노프 정규화와 같은 발상이다).
- 대역폭 확장. 계수에 ()를 곱하면 모든 극이 반지름 배로 안쪽으로 들어온다. 날카로운 공명을 살짝 무디게 해 양자화 오차에 강하게 만든다.
4. 주파수 영역에서 본 LPC
파시발 정리로 예측 오차를 주파수 영역에 쓰면
이다( 는 신호의 파워 스펙트럼). 비 를 적분하므로, 모형이 실제보다 낮은 곳(스펙트럼 봉우리)에서 오차가 크게 벌점을 받고 골짜기에서는 관대하다. 그래서 LPC 포락선은 봉우리를 잘 맞추고 골짜기는 대충 지나간다 — 포먼트가 봉우리인 음성에 딱 맞는 편향이다. 이 비 형태의 왜곡 척도가 이토쿠라-사이토 발산의 출발점이다. 같은 이유로 LPC 는 최대 엔트로피 스펙트럼 추정(버그 1967)과 수학적으로 같은 것이다 — 주어진 개 자기상관과 일치하는 스펙트럼 중 엔트로피가 최대인 것이 바로 전극 모형이다.
5. 계수를 어떻게 보내나
예측 계수 를 그대로 양자화하면 작은 오차로도 극이 단위원 밖으로 나가 필터가 발산할 수 있다. 그래서 전송용으로는 다른 표현을 쓴다.
- 반사 계수 / 로그 면적비. 만 지키면 안정이 보장된다. 1에 가까운 값이 민감하므로 (로그 면적비)로 펴서 양자화한다. LPC-10 의 방식이다.
- 선 스펙트럼 쌍(LSP/LSF). 이타쿠라(1975)가 제안했다. 로부터
를 만들면 두 다항식의 근이 모두 단위원 위에 있고, 그 각도(LSF)가 서로 번갈아 나타나는 것이 의 최소위상(안정)과 동치다. 순서만 유지하면 안정이 보장되고, LSF 하나의 오차는 스펙트럼의 그 주파수 근처만 건드리며, 프레임 간 보간도 매끄럽다. G.729·AMR 을 포함한 현대 음성 코덱 대부분이 LSF 를 벡터 양자화한다. LSF 계산은 단위원 위 근 찾기라 체비쇼프 다항식 전개로 부호 변화를 훑는 방식이 표준이다(일반 젠킨스-트라우브 알고리즘 같은 범용 근 찾기는 과하다).
6. 코덱 계보
| 코덱 | 연도 | 비트율 | 여기 신호 표현 |
|---|---|---|---|
| LPC-10 (FS-1015) | 1984 | 2.4 kbps | 유성: 피치 펄스열 / 무성: 잡음. 22.5 ms 프레임당 54비트 |
| FS-1016 CELP | 1991 | 4.8 kbps | 코드북에서 고른 여기 + 적응 코드북(피치) |
| G.729 (CS-ACELP) | 1996 | 8 kbps | 대수 코드북 |
| AMR-NB | 1999 | 4.75~12.2 kbps | ACELP, 8개 모드 전환 |
| FLAC | 2001 | 무손실 | 잔차를 라이스 부호로 그대로 |
LPC-10 의 “로봇 목소리”2 는 여기 신호를 펄스냐 잡음이냐 둘 중 하나로 단순화한 대가였다. 슈뢰더·아탈(1985)의 CELP 는 그 자리에 코드북 검색을 넣었다. 후보 여기 신호를 하나씩 합성 필터에 통과시켜 원 신호와 비교하고, 청각 가중 필터 로 거른 오차가 가장 작은 것을 고른다(합성에 의한 분석). LPC 포락선이 청각 마스킹 모형 역할까지 겸하는 것이다.3
무손실 쪽 FLAC 은 같은 예측기를 다르게 쓴다. 최대 32차 LPC 계수를 정수로 양자화해(정밀도 최대 15비트) 헤더에 넣고, 복호기와 비트 단위로 똑같은 정수 연산으로 예측해 잔차를 무손실로 복원한다. 잔차는 예측이 잘될수록 0 근처에 몰리는 라플라스 분포에 가까워지므로 엔트로피 부호화의 일종인 라이스 부호가 효율적이다. 0~4차 고정 예측기(차분)도 함께 시도해 더 짧은 쪽을 고른다.
7. 시뮬레이션·신호처리에서 쓰이는 곳
- 포먼트·공명 추정. LPC 다항식의 근 각도가 공명 주파수, 반지름이 대역폭이다. 구조물 진동 신호의 모드 추정에 쓰면 프로니 방법과 같은 계열이 된다.
- 스펙트럼 포락선 추정. 짧은 데이터에서 고속 푸리에 변환 주기도표보다 매끄러운 포락선을 준다. 난류 계측 신호의 스펙트럼 비교에도 쓰인다.
- 선형 예측 외삽. 시계열 끝을 예측식으로 연장해 FFT 의 경계 효과를 줄이거나, 결측 구간을 메운다.
- 백색화. 를 걸면 잔차가 백색에 가까워지므로 적응 필터·검출기의 전처리로 쓴다(적응 필터).
8. 관련 문서
- 레빈슨-더빈 알고리즘 · 토플리츠 행렬 · 촐레스키 분해
- 자기회귀 모형 · 파워 스펙트럼 · 상관함수 · 위너 필터
- 이토쿠라-사이토 발산 · 프로니 방법 · 엔트로피 부호화
- 선 스펙트럼 쌍 · CELP · 최대 엔트로피 스펙트럼 추정
9. Footnotes
이 문서의 주요 출처
- J. Makhoul (1975), Linear prediction: A tutorial review, Proc. IEEE 63(4), 561-580
- B. S. Atal, S. L. Hanauer (1971), Speech analysis and synthesis by linear prediction of the speech wave, J. Acoust. Soc. Am. 50(2B), 637-655
- M. R. Schroeder, B. S. Atal (1985), Code-excited linear prediction (CELP): High-quality speech at very low bit rates, Proc. ICASSP 1985, 937-940
- IETF RFC 9639 (2024), Free Lossless Audio Codec (FLAC)
의견을 반영할게요. 감사합니다.