[파이썬] pydub 오디오 파일의 주파수 응답 그래프 생성

주파수 응답 그래프는 오디오 파일의 주파수 영역에서 음악의 특성을 시각적으로 보여주는 도구입니다. pydub은 파이썬에서 음악 파일을 다루는 라이브러리로, 주파수 응답 그래프를 생성하는 기능도 제공합니다. 이번 블로그 포스트에서는 pydub을 사용하여 오디오 파일의 주파수 응답 그래프를 생성하는 방법에 대해 알아보겠습니다.

1. pydub 설치

먼저 pydub을 설치해야 합니다. pip를 사용하여 다음 명령어를 실행하세요:

$ pip install pydub

2. 오디오 파일 불러오기

주파수 응답 그래프를 생성하기 위해 먼저 오디오 파일을 불러와야 합니다. 예를 들어, “audio.wav”라는 파일을 사용하겠습니다. 다음 코드를 사용하여 오디오 파일을 불러옵니다:

from pydub import AudioSegment

audio_file = AudioSegment.from_file("audio.wav")

3. 주파수 응답 그래프 생성

이제 audio_file 변수에 저장된 오디오 파일의 주파수 응답 그래프를 생성할 수 있습니다. pydub은 fft() 메서드를 사용하여 FFT(Fast Fourier Transform)를 계산하여 주파수 응답 데이터를 제공합니다. 다음 코드를 사용하여 주파수 응답 그래프를 생성합니다:

import numpy as np
import matplotlib.pyplot as plt

# Fourier Transform을 계산하여 주파수 응답 데이터 얻기
fft_data = audio_file.fft()

# 주파수 스펙트럼 데이터의 크기 계산
magnitude = np.abs(fft_data)
frequency = np.linspace(0, audio_file.frame_rate, len(magnitude))

# 주파수 응답 그래프 그리기
plt.plot(frequency, magnitude)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.title('Frequency Response')
plt.show()

위 코드에서는 fft_data 변수에 주파수 응답 데이터를, magnitude 변수에 주파수 스펙트럼 데이터의 크기를 저장합니다. 그리고 plt.plot() 함수를 사용하여 주파수 응답 그래프를 그립니다. 마지막으로 plt.xlabel(), plt.ylabel()plt.title() 함수를 사용하여 축 레이블과 그래프 제목을 설정하고, plt.show() 함수를 사용하여 그래프를 표시합니다.

4. 전체 코드

다음은 전체 코드 예제입니다:

from pydub import AudioSegment
import numpy as np
import matplotlib.pyplot as plt

def generate_frequency_response_graph(audio_file_path):
    # 오디오 파일 불러오기
    audio_file = AudioSegment.from_file(audio_file_path)

    # Fourier Transform을 계산하여 주파수 응답 데이터 얻기
    fft_data = audio_file.fft()

    # 주파수 스펙트럼 데이터의 크기 계산
    magnitude = np.abs(fft_data)
    frequency = np.linspace(0, audio_file.frame_rate, len(magnitude))

    # 주파수 응답 그래프 그리기
    plt.plot(frequency, magnitude)
    plt.xlabel('Frequency (Hz)')
    plt.ylabel('Magnitude')
    plt.title('Frequency Response')
    plt.show()

# 오디오 파일 경로 설정
audio_file_path = "audio.wav"

# 주파수 응답 그래프 생성하기
generate_frequency_response_graph(audio_file_path)

위 코드에서는 generate_frequency_response_graph() 함수를 정의하여 주파수 응답 그래프를 생성합니다. 함수에 오디오 파일 경로를 전달하여 원하는 오디오 파일의 주파수 응답 그래프를 생성할 수 있습니다.