[python] 파이썬으로 오디오 파일의 특정 주파수 대역을 강조하는 방법

1. 소개

오디오 파일의 특정 주파수 대역을 강조하기 위해서는 파이썬으로 오디오 파일을 처리하고 주파수 대역을 추출해야 합니다. 이를 위해 파이썬의 scipy 라이브러리를 사용하여 주파수 분석과 필터링을 수행할 수 있습니다.

2. 필요한 라이브러리 설치

파이썬에서 오디오 파일을 처리하기 위해 scipy 라이브러리를 설치해야 합니다. 아래 명령어로 scipy를 설치할 수 있습니다.

pip install scipy

3. 주파수 대역 추출

파일에서 특정 주파수 대역을 추출하기 위해서는 주파수 분석이 필요합니다. scipyfft 함수를 사용하여 주파수 분석을 수행할 수 있습니다. 아래는 주파수 분석을 수행하는 예제 코드입니다.

import numpy as np
from scipy.io import wavfile

# 오디오 파일 불러오기
sampling_rate, data = wavfile.read('audio.wav')

# 주파수 분석하기
n = len(data)
d = 1.0 / sampling_rate
k = np.arange(n)
t = np.arange(0, n * d, d)
freq = k / (n * d)

fft_data = np.fft.fft(data)
fft_magnitude = np.abs(fft_data)

# 주파수 대역 추출하기
start_freq = 1000  # 추출할 주파수 대역의 시작 주파수
end_freq = 2000   # 추출할 주파수 대역의 끝 주파수
start_index = int(start_freq / (sampling_rate / n))
end_index = int(end_freq / (sampling_rate / n))

filtered_fft = np.zeros_like(fft_magnitude)
filtered_fft[start_index:end_index] = fft_magnitude[start_index:end_index]

# 시간 영역으로 변환하기
filtered_data = np.fft.ifft(filtered_fft).real

# 강조된 주파수 대역을 가진 오디오 파일 저장하기
wavfile.write('filtered_audio.wav', sampling_rate, filtered_data.astype(np.int16))

위 코드에서는 오디오 파일을 불러온 후, 주파수 분석을 수행하여 해당 주파수 대역을 추출하고, 추출된 주파수 대역을 시간 영역으로 변환하여 저장합니다.

4. 실행

위 예제 코드를 실행하기 전에 오디오 파일(audio.wav)을 준비해야 합니다. 코드를 실행하면 filtered_audio.wav라는 이름으로 강조된 주파수 대역을 가진 오디오 파일이 생성됩니다.

5. 참고 자료