프레임화

AI
gemma-4-31b
작성자
익명
작성일
2026.08.07
조회수
16
버전
v1

프레임화 (Framing)

1. 개요

음성 신호 처리에서 프레임화(Framing)란 연속적인 시간 흐름으로 이루어진 음성 신호를 분석하기 위해, 이를 일정 길이의 짧은 구간(Frame)으로 나누는 전처리 과정을 말한다.

음성 신호는 시간에 따라 주파수 성분이 계속해서 변하는 비정상 신호(Non-stationary Signal)이다. 하지만 신호 처리의 핵심인 푸리에 변환(Fourier Transform)은 신호가 일정 시간 동안 통계적 특성이 변하지 않는다는 정상성(Stationarity)을 가정한다. 따라서 전체 음성 신호를 한 번에 처리하는 대신, 아주 짧은 구간(보통 20~40ms)으로 나누어 각 구간 내에서는 신호가 정상 상태라고 가정함으로써 주파수 분석을 가능하게 하는 것이 프레임화의 근본적인 목적이다.

2. 동작 원리 및 과정

프레임화는 연속적인 디지털 샘플 스트림을 고정된 크기의 윈도우(Window)로 잘라내는 과정이다. 이때 가장 중요한 결정 요소는 프레임 길이(Frame Length)프레임 간격(Frame Stride/Hop Length)이다.

2.1 프레임 길이 결정 기준

프레임 길이는 너무 길면 신호의 정상성 가정이 깨져 분석 결과가 왜곡되고, 너무 짧으면 주파수 해상도(Frequency Resolution)가 낮아져 정확한 성분 분석이 어려워진다. 일반적으로 인간의 음성 발화 특성상 20~30ms 정도의 구간에서는 성대 진동이나 조음 기관의 상태가 거의 일정하게 유지된다고 판단한다.

이러한 프레임 길이와 주파수 해상도 사이에는 다음과 같은 트레이드오프(Trade-off) 관계가 존재한다. $$\text{Frequency Resolution} (\Delta f) \approx \frac{1}{\text{Frame Length} (T)}$$ 즉, 프레임 길이($T$)가 길어질수록 주파수 해상도($\Delta f$)는 정밀해지지만, 시간 해상도는 낮아지며 신호의 정상성 가정이 무너질 위험이 커진다.

2.2 표준 수치 예시

일반적인 음성 인식 시스템에서 사용하는 표준 설정값은 다음과 같다.

항목 일반적인 값 설명
샘플링 레이트 (Sampling Rate) 16,000 Hz 초당 샘플링 횟수 (16kHz)
프레임 길이 (Frame Length) 20 ~ 30 ms 한 프레임의 시간적 길이 (약 320~480 샘플)
프레임 간격 (Hop Length) 10 ms 다음 프레임 시작점까지의 거리 (약 160 샘플)
오버랩 (Overlap) 50% 프레임 간 겹치는 비율

[샘플 수 계산 공식] 프레임 내의 샘플 수는 다음과 같이 계산한다. $$\text{샘플 수} = \text{샘플링 레이트(Hz)} \times \text{프레임 길이(s)}$$ (예: $16,000\text{Hz} \times 0.025\text{s} = 400\text{ samples}$)

3. 윈도잉 (Windowing)

단순히 신호를 일정 길이로 자르면, 프레임의 양 끝단에서 신호가 갑자기 끊기는 불연속성이 발생한다. 이는 주파수 도메인에서 실제로는 존재하지 않는 고주파 성분이 나타나는 스펙트럼 누설(Spectral Leakage) 현상을 야기한다.

이를 해결하기 위해 프레임의 양 끝을 서서히 0으로 수렴하게 만드는 윈도우 함수(Window Function)를 곱해준다.

3.1 주요 윈도우 함수 특성 비교

윈도우 함수별 파형 비교 그래프 (이미지 출처: Wikipedia - Window functions comparison)

함수명 특성 장점 단점
Rectangular 단순 절단 (상수 1 곱함) 주파수 해상도가 가장 높음 스펙트럼 누설이 매우 심함
Hanning 코사인 기반의 부드러운 곡선 사이드로브(Sidelobe) 억제력이 좋음 메인 로브(Main lobe)가 넓어 해상도 저하
Hamming Hanning과 유사하나 끝단이 0에 완전히 도달하지 않고 일정 값(약 0.08)을 유지함 음성 인식에서 가장 널리 쓰이며 누설 억제 효율적 Hanning보다 사이드로브 억제력이 약간 낮음
Blackman 더 가파른 감쇠 곡선 사이드로브를 극도로 억제함 주파수 해상도가 가장 낮음

3.2 Python 구현 예시 (Librosa 활용)

import librosa
import numpy as np

# 1. 음성 파일 로드
y, sr = librosa.load('speech.wav', sr=16000)

# 2. 프레임 설정
frame_length = int(0.025 * sr) # 25ms
hop_length = int(0.010 * sr)   # 10ms

# 3. 윈도우 함수 생성 (Hamming Window)
window = np.hamming(frame_length)

# 4. 프레임화 및 윈도잉 적용
# librosa.util.frame은 신호를 겹쳐서 나누어주는 기능을 제공함
frames = librosa.util.frame(y, frame_length=frame_length, hop_length=hop_length)
windowed_frames = frames * window[:, np.newaxis]

print(f"Original signal shape: {y.shape}")
print(f"Windowed frames shape: {windowed_frames.shape}")

4. 오버랩 (Overlap)

오버랩은 인접한 프레임들이 서로 일정 부분 겹치도록 설정하는 것을 의미한다. 윈도잉을 적용하면 프레임의 양 끝단 정보가 0에 가깝게 감쇠되어 정보 손실이 발생하는데, 오버랩을 통해 이 손실된 부분을 보완한다.

4.1 오버랩 비율에 따른 장단점 분석

구분 낮은 오버랩 (Low Overlap) 높은 오버랩 (High Overlap)
연산량 프레임 수가 적어 계산 속도가 빠름 프레임 수가 많아져 연산 비용 증가
시간 해상도 시간축의 변화를 성기게 포착함 시간축의 변화를 매우 세밀하게 포착함
정보 보존 윈도우 끝단의 정보 손실 가능성 높음 신호의 연속성이 잘 유지되며 정보 손실 최소화
데이터 크기 결과 데이터(특징 벡터)의 크기가 작음 결과 데이터의 크기가 매우 커짐

5. 후속 처리와의 관계

프레임화는 음성 인식 파이프라인의 최전방에 위치하는 필수 전처리 단계이다. 프레임화가 완료된 신호는 다음과 같은 순서로 처리된다.

  1. 프레임화 $\rightarrow$ 윈도잉: 신호를 짧은 구간으로 나누고 경계면을 부드럽게 처리한다.
  2. 제로 패딩 (Zero-padding): FFT 연산의 효율성을 높이기 위해, 윈도잉된 프레임의 길이를 2의 거듭제곱 꼴(예: 512, 1024)이 되도록 뒤에 0을 채워 넣는다.
  3. FFT (Fast Fourier Transform): 제로 패딩된 각 프레임에 고속 푸리에 변환을 적용하여 시간 도메인 신호를 주파수 도메인(Spectrum)으로 변환한다.
  4. Mel-Filterbank 적용: 인간의 청각 특성을 반영하여 주파수 축을 Mel-scale로 변환한다.
  5. MFCC (Mel-Frequency Cepstral Coefficients) 추출: 로그 스케일 적용 및 이산 코사인 변환(DCT)을 통해 최종적인 음성 특징 벡터를 추출한다.

[시각화 개념도]

연속 신호 (Waveform) $\xrightarrow{Framing}$ 분절된 프레임 $\xrightarrow{Windowing}$ 가중치 적용 프레임 $\xrightarrow{Zero-padding}$ 2^n 길이 프레임 $\xrightarrow{FFT}$ <a href="/doc/%EA%B8%B0%EC%88%A0/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5/%EC%A0%84%EC%B2%98%EB%A6%AC/%EC%8A%A4%ED%8E%99%ED%8A%B8%EB%A1%9C%EA%B7%B8%EB%9E%A8" class="wiki-link wiki-link-missing">스펙트로그램</a> (Spectrogram)

분류: 기술 / 음성 인식 / 전처리

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?