[python] 파이썬을 이용한 음악 키 탐지

소개

음악에서 키(Key)란 음악 조성의 중요한 요소로, 음악 조성을 위해 사용되는 음의 집합입니다. 음악에서 키를 구분하는 것은 음악 이론에서 중요한 부분이며, 음악 분석, 작곡, 원하는 음악 조로 변환 등에 활용될 수 있습니다. 이번 포스트에서는 파이썬을 이용하여 음악의 키를 탐지하는 방법에 대해 알아보겠습니다.

음악 파일 불러오기

먼저 파이썬에서 음악 파일을 불러오기 위해서는 librosa라는 라이브러리를 사용할 수 있습니다. 아래의 코드는 librosa를 사용하여 음악 파일을 불러오는 예제입니다.

import librosa

# 음악 파일 경로 지정
audio_file = "path/to/your/audio/file.mp3"

# 음악 파일 로드
audio, sample_rate = librosa.load(audio_file)

음악의 스펙트럼 분석

음악의 키를 탐지하기 위해서는 음악의 스펙트럼을 분석해야 합니다. 스펙트럼은 음악의 주파수 특성을 나타내는 그래프로, 주파수별로 음의 강도를 표시합니다. librosa를 사용하여 음악의 스펙트럼을 분석하는 코드는 다음과 같습니다.

import librosa
import numpy as np

# 스펙트럼 분석
spectrogram = np.abs(librosa.stft(audio))

키 탐지 알고리즘

음악의 스펙트럼을 분석한 후, 키를 탐지하기 위해서는 알고리즘을 사용해야 합니다. 여기서는 librosatonnetz 함수를 사용하여 키 탐지를 수행하는 예제 코드를 제공합니다.

import librosa

# 키 탐지
tonnetz = librosa.feature.tonnetz(y=audio, sr=sample_rate)

# 키 인덱스
key_index = np.argmax(tonnetz)

# 키 이름
keys = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
key_name = keys[key_index % 12]

print("음악의 키:", key_name)

결론

이번 포스트에서는 파이썬을 이용하여 음악의 키를 탐지하는 방법을 알아보았습니다. librosa를 사용하면 간편하게 음악 파일을 불러오고, 스펙트럼을 분석하여 키를 탐지할 수 있습니다. 음악 이론에 관심이 있는 분들이나 음악 분석을 위해 파이썬을 활용하고자 하는 분들에게 유용한 정보가 될 것입니다.