[python] 파이썬으로 오디오 파일의 음향 장소와 분리된 음원을 자동으로 추출하는 방법

오디오 파일에서 특정 음향 장소를 분리해내는 작업은 사운드 분석 및 처리에 매우 유용합니다. 파이썬에서는 여러 라이브러리를 활용하여 이러한 작업을 자동화할 수 있습니다. 이 글에서는 파이썬을 이용하여 오디오 파일에서 음향 장소와 분리된 음원을 추출하는 방법에 대해 소개하겠습니다.

라이브러리 설치

본 예시에서는 파이썬의 librosanumpy 라이브러리를 사용합니다. 이를 설치하기 위해 다음 명령을 터미널에서 실행해주세요.

pip install librosa numpy

음향 장소 추출

음향 장소 추출을 위해서는 파이썬의 librosa 라이브러리를 사용할 수 있습니다. 이 라이브러리는 오디오 분석에 많이 사용되고 있으며 다양한 기능을 제공합니다.

import librosa

def extract_soundscapes(audio_file):
    # 음악 파일 로드
    audio, sr = librosa.load(audio_file, sr=None)

    # 음향 장소 추출
    soundscapes = librosa.feature.mfcc(audio, sr)

    return soundscapes

위의 코드는 librosa를 사용하여 음악 파일을 로드하고 mfcc 함수를 통해 음향 장소를 추출하는 간단한 예제입니다. audio_file 매개변수로 오디오 파일을 전달하고, 추출된 음향 장소를 반환합니다.

분리된 음원 추출

음향 장소를 분리한 후에는 분리된 음원을 추출하는 작업을 수행해야 합니다. 이를 위해 librosa 라이브러리의 stft 함수와 istft 함수를 활용할 수 있습니다.

import librosa

def extract_sources(audio_file):
    # 음악 파일 로드
    audio, sr = librosa.load(audio_file, sr=None)

    # 스펙트로그램 변환
    spectrogram = librosa.stft(audio)

    # 음원 분리
    sources = librosa.istft(spectrogram)

    return sources

위의 코드는 librosa를 사용하여 음악 파일을 로드하고, stft 함수를 통해 스펙트로그램으로 변환한 후, istft 함수를 통해 분리된 음원을 추출하는 예제입니다. audio_file 매개변수로 오디오 파일을 전달하고, 추출된 분리된 음원을 반환합니다.

예제 사용법

audio_file = 'audio.wav'

soundscapes = extract_soundscapes(audio_file)
sources = extract_sources(audio_file)

print("음향 장소:")
print(soundscapes)

print("분리된 음원:")
print(sources)

위의 코드는 audio_file 변수에 오디오 파일 경로를 설정한 후, extract_soundscapes 함수를 호출하여 음향 장소를 추출하고, extract_sources 함수를 호출하여 분리된 음원을 추출하는 예제입니다. 이후 추출된 결과를 출력합니다.

본 예제를 바탕으로 오디오 파일의 음향 장소와 분리된 음원을 추출하는 방법을 파이썬으로 자동화할 수 있습니다.

참고 자료