[python] 파이썬으로 오디오 파일의 음정 변화를 자동으로 추출하는 방법

오디오 파일의 음정 변화를 파이썬을 사용하여 자동으로 추출하는 방법을 알아보겠습니다. 이를 위해서는 파이썬에서 오디오 처리와 음악 이론에 대한 이해가 필요합니다.

1. 라이브러리 설치

음악 분석을 위해 다음의 파이썬 라이브러리를 설치해야 합니다.

pip install pydub
pip install essentia
pip install numpy
pip install matplotlib

2. 오디오 파일 읽기

pydub 라이브러리를 사용하여 오디오 파일을 읽어옵니다.

from pydub import AudioSegment

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

3. 음정 변화 추출

essentia 라이브러리를 사용하여 오디오의 음정 변화를 추출합니다. 음정 변화는 일련의 음의 주파수 변화로 나타납니다.

import numpy as np
import essentia.standard as es

def extract_pitch(audio):
    audio_array = np.array(audio.get_array_of_samples())
    sample_rate = audio.frame_rate

    pitch_extractor = es.PredominantPitchMelodia(frameSize=2048, hopSize=128)
    pitch, _ = pitch_extractor(audio_array.astype(np.float32), sample_rate)
    
    return pitch

pitch = extract_pitch(audio)

4. 결과 시각화

matplotlib 라이브러리를 사용하여 추출한 음정 변화를 시각화합니다.

import matplotlib.pyplot as plt

time = np.arange(len(pitch)) * hop_size / sample_rate

plt.plot(time, pitch)
plt.xlabel("Time (s)")
plt.ylabel("Pitch")
plt.title("Pitch Contour")
plt.show()

결론

위의 방법을 통해 파이썬을 사용하여 오디오 파일의 음정 변화를 자동으로 추출할 수 있습니다. 이를 통해 오디오 데이터에서 음악적 특성을 분석하거나 음악 이론에 대한 연구를 수행할 수 있습니다.


참고 자료: