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

오디오 파일에서 박자를 자동으로 탐지하는 것은 음악 관련 애플리케이션 또는 음악 분석에 유용한 작업입니다. 파이썬을 사용하여 오디오 파일의 특정 구간의 박자를 탐지하는 방법을 알아보겠습니다.

1. 음악 파일 불러오기

import librosa

# 오디오 파일 불러오기
audio_path = "audio_file.wav"
audio, sr = librosa.load(audio_path)

Librosa 라이브러리를 사용하여 오디오 파일을 불러옵니다. load() 함수를 사용하면 오디오 신호와 샘플링 레이트를 얻을 수 있습니다.

2. 음악 구간 지정하기

특정 구간의 박자를 탐지하기 위해서는 해당 구간을 지정해야 합니다. 예를 들어, 첫 30초의 구간을 탐지하고 싶다면 다음과 같이 할 수 있습니다.

# 탐지할 구간 지정하기
start_time = 0
end_time = 30

start_sample = int(start_time * sr)
end_sample = int(end_time * sr)

audio_segment = audio[start_sample:end_sample]

음악 파일의 샘플링 레이트를 곱하여 시작 샘플과 끝 샘플을 계산한 뒤, 해당 구간을 audio_segment에 저장합니다.

3. 박자 탐지하기

import librosa.beat

# 박자 탐지하기
tempo, beat_frames = librosa.beat.beat_track(audio_segment, sr=sr)

Librosa의 beat_track() 함수를 사용하여 박자를 탐지합니다. 이 함수는 박자의 속도를 나타내는 tempo 값을 반환하고, 각 박자 위치를 나타내는 beat_frames 값을 반환합니다.

4. 결과 확인하기

print("Detected Tempo:", tempo)
print("Detected Beat Frames:", beat_frames)

박자 탐지 결과를 확인하기 위해 tempobeat_frames 값을 출력합니다.

이제 파이썬을 사용하여 오디오 파일의 특정 구간의 박자를 자동으로 탐지할 수 있습니다. 이를 응용하여 다양한 음악 분석 작업에 활용할 수 있습니다.

참고 자료