본문 바로가기
공학

FFT로 오디오 주파수 분석하기

by 댐쇼 2025. 5. 26.

 

🎧 FFT로 오디오 주파수 분석하기 – 소리 속 주파수를 보는 법

오디오 신호를 단순히 '소리'로만 생각한다면, 그 속에 숨은 주파수 성분을 놓치게 됩니다. 이를 눈으로 직접 분석하는 대표적인 방법이 바로*FFT(Fast Fourier Transform)입니다.

이번 글에서는 오디오 파일을 읽어, FFT로 어떤 주파수 성분이 포함되어 있는지 시각적으로 분석해보겠습니다.

오디오 주파수 분석


✅ 1. FFT란 무엇인가요?

  • **FFT (Fast Fourier Transform)**는 신호를 시간 영역에서 주파수 영역으로 변환하는 알고리즘입니다.
  • 오디오, 영상, 통신 등 다양한 분야에서 주파수 분석, 잡음 제거, 필터링 등에 사용됩니다.
  • 오디오의 경우, FFT를 통해 어떤 음 높이(주파수)가 얼마나 포함돼 있는지 확인할 수 있습니다.

✅ 2. 준비물: Python + Librosa + Matplotlib

설치가 안 되어 있다면 먼저 설치:

pip install librosa matplotlib numpy

✅ 3. 예제 코드: 오디오 FFT 분석 (Python)

import librosa
import numpy as np
import matplotlib.pyplot as plt

# 1. 오디오 파일 로딩
file_path = 'audio_sample.wav'  # WAV 파일 경로
y, sr = librosa.load(file_path, sr=None)  # sr=None이면 원본 샘플링 유지

# 2. FFT 수행
N = len(y)
Y = np.fft.fft(y)
frequencies = np.fft.fftfreq(N, 1/sr)
magnitude = np.abs(Y) / N

# 3. 양수 주파수만 시각화
half_N = N // 2
plt.figure(figsize=(10, 4))
plt.plot(frequencies[:half_N], magnitude[:half_N])
plt.title("오디오 주파수 분석 (FFT)")
plt.xlabel("주파수 (Hz)")
plt.ylabel("진폭")
plt.grid(True)
plt.tight_layout()
plt.show()

✅ 4. 해석 방법

  • X축: 주파수(Hz) – 100Hz, 1000Hz, 5000Hz처럼 어떤 주파수가 포함되어 있는지
  • Y축: 진폭 – 해당 주파수의 에너지 세기
  • 예: 음악 파일에서 440Hz(피아노 A음)의 peak가 보이면, 해당 음이 포함돼 있다는 뜻

✅ 5. 실전 활용 팁

활용 목적 FFT로 확인할 수 있는 것

🎵 음성 신호 분석 특정 음의 유무, 고음/저음 비중
🔊 노이즈 제거 잡음 대역 주파수를 추출하여 필터링
📻 통신 신호 해석 원하는 대역폭 추출 및 잡음 제거
🎧 음향 튜닝 특정 주파수 강조 or 억제 가능

✅ 마무리 요약

FFT는 소리를 ‘눈으로 볼 수 있는 도구’입니다. 오디오 데이터가 단순한 파형에 불과했던 것이, FFT를 통해 주파수의 스펙트럼으로 분석 가능해지면서 음악, 음성, 신호처리 등 다양한 분야에서 핵심 도구로 활용되고 있습니다.

 

 

 

DSP 기본이론

📘 DSP 기본이론 ✅ 1. DSP란 무엇인가?설명 포인트:DSP는 아날로그 신호(음성, 센서, 영상 등)를 디지털 방식으로 처리하는 기술소리, 이미지, 센서 데이터 등을 디지털화하여 수학적 알고리즘으로

infopeople.kr