음성신호 처리
음성 신호 처리의 주요 과정
음성 신호 처리는 마이크로 입력되어 디지털로 변환된 신호를 처리하는 과정입니다. 주요 과정은 다음과 같습니다.
Pre-processing: 원음 신호에 포함된 잡음이나 불필요한 성분을 제거하여, 분석과 처리가 용이하도록 신호를 정제하는 과정입니다.
Framing & Windowing: 전체 음성 신호를 짧은 시간 단위의 프레임으로 나눈 뒤, 각 프레임에 윈도우 함수를 적용하여 경계에서 발생하는 왜곡을 줄이고 음성의 시간적 특성을 안정적으로 분석하는 과정입니다.
Feature extraction: 프레임 단위로 처리된 신호에서 음성의 핵심적인 정보를 추출하여, 인식이나 분석에 적합한 특징 값으로 변환하는 과정입니다.
Post-processing: 추출된 특징을 보다 안정적으로 활용하기 위해 정규화, 차원 축소, 평균·분산 보정 등의 후처리를 수행하는 과정입니다.
MFCC(Mel-Frequency Cepstral Coefficients) 추출 방법은 다음과 같습니다.

최근에 많이 사용되는 Mel-spectrogram 추출은 위의 그림에서 Mel-scalle filter bank 결과물을 취하는 것입니다.
Pre-processing
Pre-processing은 원음 신호에 포함된 잡음이나 불필요한 성분을 제거하여, 분석과 처리가 용이하도록 신호를 정제하는 과정입니다.
Resampling
입력 오디오의 샘플링레이트를 모델/시스템 기준(예: 16 kHz)으로 통일하는 과정입니다.
샘플링레이트가 다르면 특징 추출 결과가 달라질 수 있으므로, 안정적인 파이프라인을 위해 거의 항상 필요합니다.
DC Offset Removal
신호에 포함된 **직류 성분(평균값)**을 제거하여 파형이 0을 중심으로 오도록 맞추는 과정입니다.
마이크·오디오 회로 영향으로 기준선이 위/아래로 치우칠 수 있는데, 이를 그대로 두면 에너지 계산이나 FFT 결과가 왜곡될 수 있습니다. DC offset을 제거하면 후속 처리의 안정성이 좋아집니다.
Pre-emphasis
신호의 고주파 성분을 상대적으로 강조하는 기법입니다.
음성은 보통 저주파 에너지가 강해 고주파 정보(자음, 발음의 선명함)가 약해질 수 있는데, pre-emphasis는 스펙트럼을 완화(평탄화)하여 MFCC 같은 주파수 기반 특징이 더 잘 추출되도록 돕습니다.
Channel Conversion (Mono / Stereo)
스테레오 입력을 모노로 합치거나, 특정 채널만 선택하는 과정입니다.
ASR은 대개 모노 입력을 가정하는 경우가 많아 채널 처리가 중요합니다.
Band-pass / High-pass Filtering
특정 주파수 대역만 남기거나 제거하는 필터링입니다.
예를 들어 저주파 럼블(진동/바람 소리)을 줄이기 위해 high-pass를 쓰기도 합니다.
환경에 따라 간단한 필터만으로도 성능이 크게 안정될 수 있습니다.
Dereverberation (De-reverb)
실내 반사로 인해 생기는 **잔향(reverberation)**을 줄이는 과정입니다.
잔향이 많으면 음성이 퍼져 들려 특징이 흐려지고, 원거리 ASR에서 성능이 저하될 수 있습니다.
Automatic Gain Control (AGC)
입력 음량이 너무 작거나 너무 큰 경우 자동으로 증폭/감쇠하여 적정 레벨을 유지하는 과정입니다.
특히 on-device 환경에서 화자 거리 변화가 큰 경우 유용합니다. (단, 과한 AGC는 음질 왜곡을 유발할 수 있어 튜닝이 필요합니다.)
Clipping Detection / Handling
신호가 ADC 범위를 넘어서 클리핑이 발생했는지 탐지하고 완화하는 과정입니다.
클리핑은 비선형 왜곡이라 복구가 어렵기 때문에, 탐지 후 해당 구간을 처리 전략(예: 마스킹/재녹음 유도)으로 다루는 것이 도움이 됩니다.
Normalization
신호의 진폭 스케일을 일정 기준으로 맞추는 과정입니다.
화자 거리, 녹음 장비, 발화 습관에 따라 음량이 달라지면 모델이 불필요하게 음량 변화에 민감해질 수 있습니다.
정규화를 통해 입력의 스케일을 통일하면 학습/추론이 안정적이고, 클리핑 위험도 줄일 수 있습니다.
Noise Reduction
배경 소음(팬 소리, 도로 소음, 전기 잡음 등)을 줄여 SNR을 개선하는 과정입니다.
완벽히 제거하는 것이 목적이라기보다, 음성 성분을 최대한 보존하면서 잡음 영향을 낮추는 것이 핵심입니다.
잡음이 줄면 스펙트럼/멜 필터뱅크 특징이 더 명확해져 인식 성능이 좋아집니다.
Echo Cancellation
스피커에서 출력된 소리가 다시 마이크로 들어와 생기는 에코(반향) 성분을 제거하는 과정입니다.
통화나 Voice Agent 환경에서 자주 발생하며, 에코가 남으면 화자 음성이 섞여 인식 오류가 커집니다.
AEC는 스피커 출력 신호를 참고해 반향을 추정·상쇄하여 화자 음성을 더 깨끗하게 만듭니다.
Voice Activity Detection (VAD)
입력 신호에서 음성이 실제로 존재하는 구간만 검출하는 과정입니다.
무음 구간까지 모두 처리하면 계산 비용이 커지고 잡음이 모델 입력에 들어갈 가능성이 높아집니다.
VAD로 발화 구간만 추려내면 처리 효율이 좋아지고 오인식도 줄어듭니다.
Beamforming
여러 개의 마이크(마이크 배열)를 이용해 특정 방향의 소리를 강화하고 다른 방향 소리를 억제하는 기술입니다.
원거리 음성, 회의실, 스마트 스피커 환경에서 효과가 크며, 공간 정보를 이용해 “원하는 화자”를 상대적으로 선명하게 만들어 줍니다.
Voice Separation
음원으로부터 음성만을 분리하는 과정입니다.
노이즈, 배경 소음을 제거하는 방식이 아닌 음성만을 분리하는 방식입니다.
Framing & Windowing
Framing & Windowing은 전체 음성 신호를 짧은 시간 단위의 프레임으로 나눈 뒤, 각 프레임에 윈도우 함수를 적용하여 경계에서 발생하는 왜곡을 줄이고 음성의 시간적 특성을 안정적으로 분석하는 과정입니다. Framing 이후 Windowing을 하기 전에 Pre-processing를 할 수 있습니다.
Framing: 신호를 짧은 시간 단위의 프레임으로 나누는 과정입니다.
Pre-emphasis: 신호의 고주파 성분을 강조하여 인식 성능을 향상시키는 기법으로 프레임마다 적용할 수 있습니다. (Optional)
Sliding Window: 프레임을 이동시키면서 윈도우 함수를 적용하여 경계에서 발생하는 왜곡을 줄이고 음성의 시간적 특성을 안정적으로 분석하는 과정입니다.
Windowing: 각 프레임에 윈도우 함수를 적용하여 경계에서 발생하는 왜곡을 줄이고 음성의 시간적 특성을 안정적으로 분석하는 과정입니다.
Window function
Window function은 윈도우 함수를 적용하여 경계에서 발생하는 왜곡을 줄이고 음성의 시간적 특성을 안정적으로 분석하는 과정입니다.
Hamming window: w(n) = 0.54 - 0.46 * cos(2 * pi * n / N)
Hanning window: w(n) = 0.5 - 0.5 * cos(2 * pi * n / N)
Blackman window: w(n) = 0.42 - 0.5 * cos(2 * pi * n / N) + 0.08 * cos(4 * pi * n / N)
Kaiser window: w(n) = I0(beta * sqrt(1 - (2 * n / N - 1)^2)) / I0(beta)
Rectangular window: w(n) = 1
Bartlett window: w(n) = 1 - 2 * |n / N - 0.5|
Welch window: w(n) = 1 - (2 * n / N - 1)^2
Window size and step size
Window size and step size는 음성신호 처리에 가장 중요한 파라미터입니다. 일반적으로 Window size는 20ms ~ 40ms 사이입니다. 그리고 Step size(Hop size)는 10ms ~ 20ms 사이입니다. 족, Step size는 Window size의 1/2 ~ 1/4 사이입니다.
Feature extraction
Feature extraction은 프레임 단위로 처리된 신호에서 음성의 핵심적인 정보를 추출하여, 인식이나 분석에 적합한 특징 값으로 변환하는 과정입니다.
Feature 종류
Energy
신호의 전체적인 크기(에너지)를 측정
발화/무음 구간 구분에 사용되며, VAD의 핵심 지표
Spectral Features
주파수 영역에서의 에너지 분포 특성
음색(timbre)과 소리의 질감을 설명하며, 화자·감정·환경 분석에 활용
Pitch
신호의 기본 주파수(F0) 측정
음의 높낮이(억양)를 나타내며, 감정·화자 특성 분석에 중요
Loudness
청각 특성을 반영한 음량 측정
단순 에너지보다 사람이 느끼는 “크고 작음”을 더 잘 반영
MFCC
Mel scale + Cepstral 기반의 압축된 주파수 특징
인간 청각 구조를 반영한 대표적 특징으로, ASR의 표준 입력
Mel-spectrogram
Mel scale로 변환된 스펙트로그램
저주파에 민감한 청각 특성을 반영하며, 딥러닝 모델 입력으로 널리 사용
Spectrogram
시간에 따른 주파수 에너지 분포
음성 구조를 시각적으로 표현, 패턴·이벤트 분석에 유용
Spectral Centroid
스펙트럼 에너지의 중심 주파수
소리의 밝음(brightness)을 나타냄
Spectral Bandwidth
스펙트럼 에너지의 퍼짐 정도
소리의 복잡도·거칠기를 설명
Spectral Rolloff
누적 에너지의 일정 비율이 되는 주파수 지점
고주파 성분의 존재 여부와 음색의 날카로움 판단
Spectral Flatness
스펙트럼의 평탄함 정도
잡음성 신호(높음) vs 하모닉 신호(낮음) 구분
Spectral Contrast
대역별 피크와 밸리의 차이
하모닉 구조의 뚜렷함과 음색 대비를 표현
Spectral Spread
Centroid 기준 에너지 분산 정도
주파수 에너지가 얼마나 넓게 퍼져 있는지 설명
Spectral Skewness
스펙트럼 분포의 비대칭성
에너지가 저주파/고주파 중 어디에 치우쳤는지 판단
Spectral Kurtosis
스펙트럼 분포의 뾰족함(첨도)
특정 주파수에 에너지가 집중되어 있는지 여부
Post-processing
Post-processing은 Feature extraction 이후 단계에서 수행되는 처리로, 추출된 특징(feature)을 보다 안정적이고 일관된 형태로 정제하여 모델 학습과 추론 성능을 향상시키는 것을 목표로 합니다. 이 단계에서는 원 신호를 직접 변경하지 않고, 특징의 분포·스케일·시간적 특성을 보정합니다.
Feature Normalization
Feature Normalization은 추출된 특징 값의 범위를 일정하게 맞추는 과정입니다.
프레임, 발화, 화자에 따라 특징 값의 크기가 달라질 경우 모델이 특정 스케일에 과도하게 의존할 수 있으므로, 이를 방지하기 위해 사용됩니다.
정규화를 통해 모델은 입력 값의 상대적인 패턴에 집중할 수 있게 됩니다.
Mean / Variance Normalization (CMVN)
CMVN은 특징의 평균(mean)을 0, 분산(variance)을 1로 맞추는 기법입니다.
채널 특성, 녹음 환경, 화자 차이로 인해 발생하는 분포 편차를 효과적으로 줄여 주며, 음성 인식 시스템에서 가장 널리 사용되는 post-processing 기법 중 하나입니다.
Cepstral Mean Normalization(CMN)과 Cepstral Mean & Variance Normalization(CMVN)이 이에 해당됩니다.
Temporal Smoothing
Temporal Smoothing은 시간 축 방향으로 특징 값을 부드럽게 만드는 처리입니다.
프레임 단위에서 발생하는 급격한 변화나 순간적인 잡음을 완화하여, 보다 안정적인 시간적 패턴을 형성합니다.
이동 평균이나 저역 통과 필터 방식이 일반적으로 사용됩니다.
Delta / Delta-Delta Features
Delta와 Delta-Delta는 정적인 특징에 시간적 변화 정보를 추가하는 기법입니다.
Delta는 특징의 1차 변화량(속도), Delta-Delta는 2차 변화량(가속도)을 나타내며, 음성의 동적 특성을 효과적으로 반영합니다.
이를 통해 발화의 흐름과 억양 변화가 모델 입력에 포함됩니다.
Feature Stacking / Splicing
Feature Stacking 또는 Splicing은 인접한 여러 프레임의 특징을 하나의 벡터로 묶는 방식입니다.
이를 통해 모델이 단일 프레임이 아닌 일정 시간 구간의 문맥 정보를 함께 활용할 수 있습니다.
전통적인 GMM-HMM 및 초기 DNN 기반 ASR 시스템에서 자주 사용되었습니다.
Dimensionality Reduction
Dimensionality Reduction은 특징 차원을 줄여 계산 비용과 모델 복잡도를 낮추는 과정입니다.
중복되거나 중요도가 낮은 정보를 제거하여 과적합을 완화하고, 특히 on-device 환경에서 효율적인 처리를 가능하게 합니다.
PCA, LDA와 같은 기법이 대표적입니다.
Feature Selection
Feature Selection은 모든 특징을 사용하는 대신, 모델 성능에 기여도가 높은 특징만 선택하는 과정입니다.
불필요한 특징을 제거함으로써 모델의 일반화 성능을 향상시키고 학습 안정성을 높일 수 있습니다.
Outlier Handling
Outlier Handling은 비정상적으로 큰 값이나 오류 프레임을 처리하는 단계입니다.
센서 오류, 순간 잡음, 클리핑 등으로 인해 발생한 이상치는 특징 분포를 왜곡할 수 있으므로, 이를 완화하거나 제거하여 모델 입력의 신뢰성을 높입니다.
Padding / Truncation
Padding과 Truncation은 입력 길이를 모델 요구 조건에 맞추기 위한 처리입니다.
짧은 입력은 padding을 통해 길이를 보완하고, 긴 입력은 truncation을 통해 제한합니다.
배치 처리와 실시간 추론 환경에서 필수적인 단계입니다.
Sequence Aggregation
Sequence Aggregation은 프레임 단위 특징을 발화 단위 특징으로 요약하는 과정입니다.
평균, 최대값, 통계량 기반 집계를 통해 하나의 발화를 대표하는 특징을 생성하며, 감정 인식이나 화자 인식에서 자주 활용됩니다.
Last updated