파형에서 특징까지 — 인식 모델이 먹는 것
음성 인식 시스템의 성능 절반은 모델이 아니라 입력 표현에서 결정된다. 마이크가 받은 공기 압력의 시계열을 어떻게 신경망이 소화할 수 있는 형태로 바꾸는가 — 이 파이프라인(샘플링 → STFT → 멜 필터뱅크 → 로그 → (DCT))은 40년 넘게 다듬어진 결과물이고, 각 단계에 “왜”가 있다. 이 글은 그 왜들을 순서대로 짚는다.
1. 샘플링 — 연속을 이산으로
아날로그 신호 를 주기 로 찍으면 이산 신호 가 된다. 나이퀴스트-섀넌 표본화 정리가 이 과정의 안전 조건이다: 신호의 최고 주파수가 일 때
이면 원신호를 완전히 복원할 수 있고, 어기면 이상의 성분이 낮은 주파수로 접혀 들어오는 앨리어싱이 생긴다(그래서 샘플링 전에 anti-aliasing 저역 필터를 먼저 건다). 실무 수치의 근거가 여기서 나온다 — 전화 음성 8kHz(~3.4kHz 대역), 음성 인식 표준 16kHz(음소 구분에 필요한 대역 ~8kHz), 음악 44.1kHz(가청 한계 20kHz + 여유). 진폭 축의 이산화가 양자화(16-bit PCM이면 96dB 동적 범위)다.
2. DFT와 FFT — 주파수의 좌표계
길이 의 이산 신호를 주파수 성분으로 분해하는 것이 이산 푸리에 변환이다.
가 크기(스펙트럼), 가 위상이다. 정직하게 계산하면 인데, Cooley-Tukey의 FFT가 분할정복으로 으로 줄였다 — STFT를 실시간으로 돌릴 수 있는 것, 즉 아래의 모든 것이 실용이 되는 이유가 이 알고리즘 하나다. 관례상 을 2의 거듭제곱(512, 1024)으로 잡는 것도 FFT 효율 때문이다.
3. STFT — 비정상 신호를 창으로 썰기
음성은 비정상(non-stationary) 신호다 — 스펙트럼이 시간에 따라 변하는 것이 곧 내용이다. 전체 신호에 FFT를 한 번 걸면 “언제”가 사라진다. STFT는 신호를 짧은 프레임으로 썰고 각 프레임에 FFT를 건다:
는 창 함수, 는 hop(프레임 간격). 를 시간-주파수 평면에 깔면 스펙트로그램이다. 설계 선택들의 이유:
- 왜 25ms 프레임, 10ms hop인가: 음성은 20~30ms 안에서는 대략 정상이라고 볼 수 있고(성도 모양이 그보다 느리게 변한다), 그보다 길면 음소 경계가 뭉개지고 짧으면 주파수 해상도가 부족하다. hop 10ms(프레임 60% 중첩)가 초당 100프레임이라는 ASR의 표준 시간축을 만든다.
- 왜 창 함수인가: 프레임을 그냥 자르면(직사각 창) 경계 불연속이 스펙트럼 누설(leakage)을 만든다. Hamming/Hann 창은 경계를 부드럽게 눌러 누설을 줄인다.
- 시간-주파수 트레이드오프: 창 길이 이 길수록 주파수 해상도()는 좋아지고 시간 해상도는 나빠진다 — 불확정성 원리의 신호처리 버전이며, 어떤 창을 골라도 피할 수 없다. 이 고정 해상도의 한계를 옥타브별로 다르게 가져가는 것이 wavelet/CQT(음악 쪽에서 중요 — MIR 글에서 다시)다.
4. 멜 필터뱅크 — 인간의 귀는 로그로 듣는다
STFT의 주파수 축은 선형이지만 인간의 피치 지각은 대략 로그다 — 100Hz와 200Hz의 차이는 크게 들리지만 7100Hz와 7200Hz는 거의 구분 못 한다. 이 지각 스케일을 근사한 것이 멜 스케일:
멜 축에서 등간격인 삼각 필터 개(보통 40~80개)를 선형 주파수 축에 얹으면 — 저주파는 촘촘, 고주파는 성기게 — 멜 필터뱅크다. 파워 스펙트럼에 이 필터들을 내적하고 로그를 취하면 로그 멜 스펙트로그램이 된다. 로그를 취하는 이유도 지각이다: 소리 크기 감각은 로그(dB)이고, 로그는 곱셈성 채널 왜곡을 덧셈으로 바꿔 정규화(CMN)를 쉽게 만든다.
정리하면 멜 스펙트로그램을 쓰는 이유는 세 겹이다: (1) 지각 정렬 — 인간이 구분하는 만큼만 해상도를 배분해 513차 스펙트럼을 40~80차로 압축, (2) 통계적 안정 — 로그로 동적 범위 압축, (3) 태스크 적합 — 음소·화자 정보는 스펙트럼 포락선(envelope)에 있고 멜 필터뱅크가 그 포락선을 잘 요약한다.
5. MFCC — GMM 시대의 마지막 한 수
멜 로그 에너지 개는 이웃 필터끼리 강하게 상관되어 있다. GMM-HMM 시대에는 공분산을 대각으로 두는 것이 계산상 필수였고, 그래서 DCT(이산 코사인 변환)로 역상관시킨 것이 MFCC다:
보통 하위 12~13개 계수만 남긴다(상위 계수는 포락선의 미세 요동 = 피치 성분이라 음소 인식엔 노이즈). 신호처리 관점으로는 “스펙트럼의 스펙트럼”, 즉 켑스트럼(cepstrum)의 멜 버전이고, 성도 필터(포락선)와 성문 여기(피치)를 분리하는 소스-필터 분해다. 여기에 시간 미분인 Δ, ΔΔ를 붙인 39차 벡터가 20년간 ASR의 표준 입력이었다.
그런데 딥러닝이 판을 바꿨다. DCT는 선형 변환이라 정보를 더하지 않고, 오히려 공간 구조(이웃 필터의 국소 상관)를 흩뜨린다 — CNN이 제일 잘 쓰는 바로 그 구조를. 신경망은 상관된 입력을 얼마든지 다루므로 역상관이 불필요해졌고, 그래서 현대 ASR(Conformer, wav2vec 이전의 지도학습 계열 포함)의 표준 입력은 MFCC가 아니라 80차 로그 멜 필터뱅크다. 요컨대 MFCC의 마지막 단계(DCT)는 모델(GMM)의 제약이 만든 산물이었고, 모델이 바뀌자 떨어져 나갔다.
6. 다음 단계 — 필터뱅크마저 배울 수 있는가
같은 논리를 한 칸 더 밀면: 멜 필터뱅크도 사람이 설계한 고정 변환인데, 이것도 데이터로 배우면 안 되나? 이 질문이 raw waveform 입력 계보다 — 첫 conv층을 학습 가능한 대역통과 필터(sinc 함수의 차)로 매개화한 SincNet, 그 위에서 화자 임베딩까지 end-to-end로 가는 RawNet. 흥미로운 것은 결과다: 배워보면 필터들이 멜과 비슷한 저주파 편중으로 수렴하되, 태스크에 따라 다른 곳(화자 인식이면 피치 대역)에 해상도를 더 배분한다 — 멜 스케일이 좋은 prior였다는 사후 증명과, prior보다 데이터가 낫다는 증명이 동시에 나온 셈이다. 이 긴장은 비전에서 ViT가 CNN의 inductive bias에 던진 질문과 정확히 같은 구조다.