[python] 파이썬을 사용하여 음향 신호의 스펙트로그램 생성

스펙트로그램은 음향 신호의 주파수 성분과 시간 정보를 함께 표현하는 시각화 방법입니다. 파이썬을 사용하여 음향 신호의 스펙트로그램을 생성하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

스펙트로그램 생성을 위해 다음과 같은 파이썬 라이브러리를 설치해야 합니다.

pip install numpy
pip install scipy
pip install matplotlib

스펙트로그램 생성하기

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

def generate_spectrogram(signal, sample_rate):
    frequencies, times, Sxx = signal.spectrogram(signal, sample_rate)
    plt.pcolormesh(times, frequencies, 10 * np.log10(Sxx), shading='auto')
    plt.colorbar(label='Power (dB)')
    plt.ylabel('Frequency (Hz)')
    plt.xlabel('Time (s)')
    plt.show()

# 테스트할 음향 신호 데이터
# 여기에서는 1초 동안의 소리 신호를 생성합니다.
duration = 1.0  # 초 단위
sample_rate = 44100  # 샘플링 주파수
t = np.linspace(0.0, duration, int(sample_rate * duration), endpoint=False)
signal_data = 0.5 * np.sin(2 * np.pi * 440.0 * t)  # 440Hz의 사인파

# 스펙트로그램 생성하기
generate_spectrogram(signal_data, sample_rate)

위의 코드는 numpyscipy 라이브러리를 사용하여 1초 동안의 사인파 음향 신호를 생성하고, 이를 signal.spectrogram 함수를 사용하여 스펙트로그램으로 변환한 후 matplotlib을 사용하여 시각화합니다.

결과 확인하기

위의 코드를 실행하면 스펙트로그램이 표시되는 창이 표시됩니다. 스펙트로그램은 시간에 따른 주파수 성분의 변화를 보여주는 그래프입니다. 세로축은 주파수(Hz), 가로축은 시간(s)을 나타내며, 색상은 해당 주파수 대역의 파워를 나타냅니다.