[python] 파이썬으로 오디오 파일의 특정 구간의 마무리 음이 팽창되는 부분을 자동으로 추출하는 방법

오디오 파일에서 특정 구간의 마무리 음을 추출하는 방법은 다양한 신호 처리 기술을 활용하여 구현할 수 있습니다. 이 포스트에서는 파이썬의 scipy와 librosa 라이브러리를 사용하여 오디오 파일에서 마무리 음을 추출하는 방법을 알아보겠습니다.

필요한 패키지 설치

먼저 해당 기능을 구현하기 위해 scipy와 librosa 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.

pip install scipy librosa

코드 예시

다음은 오디오 파일에서 특정 구간의 마무리 음을 추출하는 파이썬 코드의 예시입니다.

import scipy.io.wavfile as wav
import numpy as np
import librosa

def extract_fadeout(audio_file, start_time, end_time, fadeout_duration):
    # 오디오 파일 로드
    sample_rate, audio_data = wav.read(audio_file)
    
    # 특정 구간 추출
    start_frame = int(start_time * sample_rate)
    end_frame = int(end_time * sample_rate)
    audio_data = audio_data[start_frame:end_frame]
    
    # 페이드아웃 처리
    fadeout_frames = int(fadeout_duration * sample_rate)
    fadeout_data = np.linspace(1.0, 0.0, fadeout_frames) * audio_data[-fadeout_frames:]
    audio_data[-fadeout_frames:] = fadeout_data

    return sample_rate, audio_data

# 사용 예시
audio_file = "example.wav"
start_time = 30  # 시작 시간(sec)
end_time = 60  # 종료 시간(sec)
fadeout_duration = 5  # 페이드아웃 지속 시간(sec)

sample_rate, extracted_audio = extract_fadeout(audio_file, start_time, end_time, fadeout_duration)

# 추출된 오디오 저장
wav.write("extracted_fadeout.wav", sample_rate, extracted_audio)

위의 코드는 example.wav 파일 중 30초부터 60초까지의 구간에서 마무리 음을 5초 동안 팽창시킨 후 추출하여 extracted_fadeout.wav 파일로 저장합니다.

참고 자료

위의 참고 자료에서 더 자세한 내용을 확인할 수 있습니다.