[python] 파이썬으로 오디오 파일의 특정 음정을 자동으로 탐지하는 방법

오디오 파일에서 특정 음정을 자동으로 탐지하는 기능은 다양한 응용 분야에서 유용하게 사용될 수 있습니다. 이를 위해 파이썬을 사용하여 오디오 파일에서 특정 음정을 탐지하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

음악 관련 작업을 위해 파이썬에서는 librosa 라이브러리를 사용할 수 있습니다. librosa는 오디오 처리에 특화된 라이브러리로, 오디오 파일을 로드하고, 음향 특징을 추출하며, 음정 탐지와 같은 작업을 수행할 수 있습니다.

다음 명령어를 사용하여 librosa 라이브러리를 설치합니다:

pip install librosa

오디오 파일 불러오기

먼저 librosa를 사용하여 오디오 파일을 로드합니다. 다음 코드는 audio.wav 파일을 로드하는 예제입니다:

import librosa

filename = 'audio.wav'
audio, sr = librosa.load(filename)

librosa.load() 함수는 오디오 파일을 로드하고, 로드된 오디오 데이터와 샘플링 주파수를 반환합니다.

음향 특징 추출

음정을 탐지하기 위해 음향 특징을 추출해야 합니다. 가장 일반적인 음향 특징은 주파수강도입니다.

주파수는 음의 높이를 나타내는데 사용되며, 강도는 소리의 세기를 나타냅니다.

다음 코드는 librosa를 사용하여 주파수와 강도를 추출하는 예제입니다:

import librosa

filename = 'audio.wav'
audio, sr = librosa.load(filename)

# 주파수 추출
pitch, mag = librosa.piptrack(audio, sr)

# 강도 추출
rms = librosa.feature.rms(y=audio)

음정 탐지

이제 추출한 주파수와 강도를 사용하여 음정을 탐지할 수 있습니다. 음정은 주파수의 평균으로 나타낼 수 있습니다.

다음 코드는 추출한 주파수에서 평균 주파수를 계산하여 음정을 탐지하는 예제입니다:

import librosa

filename = 'audio.wav'
audio, sr = librosa.load(filename)

# 주파수 추출
pitch, mag = librosa.piptrack(audio, sr)

# 평균 주파수 계산
avg_pitch = librosa.mean_pitch(pitch)

# 탐지된 음정 출력
print("Detected pitch:", avg_pitch)

결론

파이썬과 librosa 라이브러리를 사용하여 오디오 파일에서 특정 음정을 자동으로 탐지하는 방법에 대해 알아보았습니다. 이를 통해 음악 분석, 음악 장르 분류 등 다양한 응용 분야에서 활용할 수 있습니다.