🎧 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
'공학' 카테고리의 다른 글
전자회로에서 임펄스 함수의 역할과 활용 (0) | 2025.05.27 |
---|---|
전자회로에서의 미분 회로 활용 (1) | 2025.05.26 |
DSP 샘플링 방법 (0) | 2025.05.25 |
RL/RC 회로의 과도해석 (0) | 2025.05.24 |
공학수학 라플라스 변환 완전 정리: 개념부터 실전 활용까지! (0) | 2025.05.23 |