파이썬 오디오 라이브러리를 활용한 실시간 음향 시각화 알고리즘

파이썬은 다양한 라이브러리를 활용하여 음향 데이터를 처리하고 시각화하는 것이 가능합니다. 오디오 데이터의 시간-주파수 영역 분석을 통해 음향을 시각적으로 표현하는 알고리즘을 개발하는 것은 음향 기술의 중요한 부분입니다.

matplotlib를 이용한 실시간 음향 시각화

matplotlib은 파이썬에서 데이터 시각화를 위한 라이브러리로 널리 사용됩니다. 이를 활용하여 오디오 데이터를 실시간으로 시각화하는 알고리즘을 개발할 수 있습니다.

import matplotlib.pyplot as plt
import numpy as np
import sounddevice as sd

# 오디오 데이터 수집
def audio_callback(indata, frames, time, status):
    amplitude = np.abs(indata[:, 0])
    frequencies = np.fft.rfftfreq(frames, 1/sd.default.samplerate)
    spectrum = np.abs(np.fft.rfft(amplitude))
    
    # 시각화
    plt.clf()
    plt.plot(frequencies, 20 * np.log10(spectrum))
    plt.xlabel('Frequency [Hz]')
    plt.ylabel('Amplitude [dB]')
    plt.title('Real-time Audio Spectrum')
    plt.grid(True)
    plt.pause(0.001)

# 오디오 스트림 열기
stream = sd.InputStream(callback=audio_callback)
stream.start()

# 알고리즘 실행
while True:
    pass

stream.stop()
stream.close()

위 코드는 sounddevice 라이브러리를 사용하여 오디오 스트림을 열고, matplotlib를 사용하여 실시간으로 음향 데이터를 주파수 영역으로 변환하여 시각화합니다. 주파수 영역 변환은 FFT(고속 푸리에 변환) 알고리즘을 사용합니다. 시각화된 그래프는 주파수를 x축으로, 음압을 dB 단위로 y축으로 표현하여 오디오 스펙트럼을 실시간으로 보여줍니다.

시각화 결과

Real-time Audio Spectrum

해당 알고리즘을 실행하면, 실시간 오디오 스트림으로부터 받은 음향 데이터의 스펙트럼이 matplotlib 차트로 실시간으로 표현됩니다. 이를 통해 음향 데이터의 주파수 성분 분석 및 시각화가 가능해집니다.

#음향시각화 #파이썬 #오디오 #라이브러리