[python] 파이썬으로 오디오 파일에서 저음의 주파수를 찾는 방법

오디오 신호 처리는 파이썬을 사용하면 간단하고 효과적으로 할 수 있습니다. 저음의 주파수를 찾는 것은 음악 분석, 음향 처리 등의 다양한 분야에서 유용하게 활용됩니다.

파이썬 라이브러리 설치

먼저 오디오 신호 처리를 위해 파이썬 라이브러리를 설치해야 합니다. 가장 인기 있는 라이브러리 중 하나는 librosa입니다. 다음 명령을 사용하여 librosa를 설치하세요.

pip install librosa

오디오 파일 로드하기

분석할 오디오 파일을 먼저 로드해야 합니다. librosa는 다양한 오디오 파일 형식을 지원합니다. 예를 들어, WAV 파일을 로드하는 방법은 다음과 같습니다.

import librosa

audio_path = "audio.wav"
audio, sr = librosa.load(audio_path)

audio는 로드한 오디오 파일의 신호 데이터를 담고 있으며, sr은 샘플링 레이트(Sample Rate)를 나타냅니다.

주파수 스펙트럼 분석

주파수 스펙트럼은 오디오 신호를 주파수 영역으로 변환한 것입니다. 저음의 주파수를 찾기 위해 스펙트럼 분석을 수행해야 합니다. librosa를 사용하여 스펙트럼 분석을 진행할 수 있습니다.

import numpy as np

# FFT(Fast Fourier Transform) 적용
fft = np.fft.fft(audio)

# 주파수 영역의 크기 계산
magnitude = np.abs(fft)

# 주파수 배열 생성
frequencies = np.linspace(0, sr, len(magnitude))

# 주파수의 절반 이하인 데이터 추출
frequencies = frequencies[:len(frequencies)//2]
magnitude = magnitude[:len(magnitude)//2]

fft는 FFT를 적용한 결과로, 이를 통해 주파수 영역의 변환된 데이터를 얻을 수 있습니다. magnitude는 주파수 영역의 크기를 나타내며, frequencies는 주파수 배열을 나타냅니다. 위 코드를 실행하면 오디오 신호의 주파수 스펙트럼을 얻을 수 있습니다.

저음 주파수 찾기

이제 주파수 스펙트럼을 이용하여 저음의 주파수를 찾을 수 있습니다. 저음은 일반적으로 낮은 주파수 영역에 위치하므로, 스펙트럼에서 낮은 주파수 영역을 탐색하면 됩니다. 아래 코드는 주파수 스펙트럼에서 가장 큰 값(가장 강한 주파수 성분)과 그에 해당하는 주파수를 찾는 방법을 보여줍니다.

# 주파수 스펙트럼에서 가장 큰 값과 해당하는 주파수 찾기
max_magnitude = np.max(magnitude)
max_frequency = frequencies[np.argmax(magnitude)]

print("저음의 주파수: {:.2f} Hz".format(max_frequency))

위 코드를 실행하면 가장 큰 스펙트럼 값과 그에 해당하는 주파수가 출력됩니다. 이를 통해 저음의 주파수를 알 수 있습니다.

결론

파이썬을 사용하여 오디오 파일에서 저음의 주파수를 찾는 방법을 알아보았습니다. librosa 라이브러리를 활용하여 오디오 파일을 로드하고, 주파수 스펙트럼 분석을 통해 저음의 주파수를 추출할 수 있습니다. 이를 통해 음악 분석, 음향 처리, 오디오 인식 등 다양한 응용 프로그램에 활용할 수 있습니다.

참고 자료