파이썬 오디오 라이브러리를 활용한 실시간 음악 분석 및 시각화

오디오 데이터를 분석하고 시각화하는 것은 음악 분석, 음성 인식 분야에서 중요한 작업입니다. 파이썬은 다양한 오디오 관련 라이브러리를 제공하여 이러한 작업을 수행할 수 있도록 도와줍니다. 이번 포스트에서는 파이썬을 사용하여 실시간 음악 분석 및 시각화를 하는 방법을 살펴보겠습니다.

오디오 데이터 가져오기

먼저, 음악 데이터를 가져와야 합니다. 파이썬에서는 soundfile 라이브러리를 사용하여 오디오 파일을 열고, sounddevice 라이브러리를 사용하여 실시간으로 오디오를 스트리밍할 수 있습니다. 다음은 파일에서 오디오 데이터를 가져오는 예제 코드입니다.

import soundfile as sf

# 음악 파일 열기
audio_file = 'music.wav'
data, sample_rate = sf.read(audio_file)

# 데이터 정보 출력
print('Sample Rate:', sample_rate)
print('Data Shape:', data.shape)

실시간 오디오 스트리밍

실시간으로 오디오를 스트리밍하려면 sounddevice 라이브러리를 사용해야 합니다. 다음은 실시간으로 오디오 데이터를 스트리밍하고 출력하는 예제 코드입니다.

import sounddevice as sd

# 스트리밍 콜백 함수
def audio_callback(indata, frames, time, status):
    print(indata)  # 오디오 데이터 출력

# 오디오 스트리밍 시작
stream = sd.InputStream(callback=audio_callback)
stream.start()

음악 분석 및 시각화

오디오 데이터를 가져온 후에는 분석하고 시각화할 수 있습니다. 파이썬에서는 librosa 라이브러리를 사용하여 오디오 데이터를 분석하는 기능을 제공합니다. 다음은 음악의 스펙트로그램을 시각화하는 예제 코드입니다.

import numpy as np
import librosa
import matplotlib.pyplot as plt

# 스펙트로그램 계산
spectrogram = np.abs(librosa.stft(data))

# 스펙트로그램 시각화
plt.figure(figsize=(10, 4))
librosa.display.specshow(librosa.amplitude_to_db(spectrogram, ref=np.max),
                         y_axis='linear', x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrogram')
plt.show()

마무리

파이썬을 사용하여 실시간 음악 분석 및 시각화를 수행하는 방법을 알아보았습니다. soundfile을 통해 오디오 데이터를 가져오고, sounddevice를 사용하여 실시간 오디오 스트리밍을 처리할 수 있습니다. 그리고 librosa를 사용하여 분석된 음악 데이터를 시각화할 수 있습니다. 이러한 기능을 결합하여 음악 관련 애플리케이션을 개발할 수 있습니다.

#MusicAnalysis #RealtimeAudioVisualization