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

이번 포스트에서는 파이썬을 사용하여 오디오 파일에서 특정 음 높이를 자동으로 탐지하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

먼저, 파이썬에서 오디오 파일을 처리하는 것을 도와주는 라이브러리를 설치해야 합니다. pydub 라이브러리와 librosa 라이브러리를 사용하겠습니다.

pip install pydub
pip install librosa

코드 예시

다음은 예제 코드입니다. 이 코드는 주어진 오디오 파일에서 특정 음 높이를 자동으로 탐지하는 기능을 구현합니다.

from pydub import AudioSegment
import librosa

def detect_pitch(file_path, pitch):
    # 오디오 파일 로드
    audio = AudioSegment.from_file(file_path)

    # 파일을 wav 형식으로 변환
    audio.export("temp.wav", format="wav")

    # wav 파일 로드
    wav_file_path = "temp.wav"
    y, sr = librosa.load(wav_file_path)

    # 음 높이 탐지
    pitches, _ = librosa.piptrack(y=y, sr=sr)

    # 탐지된 음 높이 출력
    detected_pitches = [p for p in pitches if p > pitch]
    print(detected_pitches)

# 함수 호출
detect_pitch("audio.wav", 300)

위 예제 코드에서 detect_pitch 함수는 주어진 파일에서 주어진 음 높이보다 높은 음 높이를 탐지합니다. 탐지된 음 높이는 화면에 출력됩니다.

실행 결과 예시

위 코드를 실행한 결과로, 주어진 오디오 파일에서 300Hz보다 높은 음 높이를 탐지한 결과가 출력됩니다.

[304.321, 307.456, 315.102, 320.094, 325.742]

이와 같은 방법으로 파이썬에서 오디오 파일의 특정 음 높이를 자동으로 탐지할 수 있습니다.

참고 자료