[python] 파이썬으로 오디오 파일의 리버브(잔향) 효과를 추가하는 방법

오디오 파일에 리버브(잔향) 효과를 추가하면 음악이나 음성에 깊이와 공간감을 줄 수 있습니다. 이러한 효과는 파이썬을 사용하여 쉽게 구현할 수 있습니다. 이번 블로그에서는 파이썬을 사용하여 오디오 파일에 리버브 효과를 추가하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

먼저, 파이썬으로 오디오 파일을 다루기 위해 다음과 같은 라이브러리를 설치해야 합니다.

pip install pydub scipy numpy

오디오 파일 로드하기

리버브 효과를 추가할 오디오 파일을 먼저 로드해야 합니다. 이를 위해 pydub 라이브러리의 AudioSegment 클래스를 사용합니다.

from pydub import AudioSegment

audio = AudioSegment.from_file("audio.wav")

audio.wav는 리버브 효과를 추가할 오디오 파일의 경로입니다.

리버브 효과 추가하기

리버브 효과를 추가하는 방법은 파이썬의 scipy 라이브러리의 signal 모듈을 사용합니다. 다음은 리버브 효과를 추가하는 함수의 예입니다.

import numpy as np
from scipy import signal

def add_reverb(audio, rev_time, decay):
    sample_rate = audio.frame_rate
    data = np.array(audio.get_array_of_samples())
    impulse = np.zeros(rev_time * sample_rate)
    impulse[0] = 1
    rev_response = signal.lfilter([1], [1, -decay], impulse)
    convolved = np.convolve(data, rev_response)
    convolved = convolved.astype(np.int16)
    return AudioSegment(data=convolved, frame_rate=sample_rate, sample_width=2, channels=1)

위의 함수는 add_reverb라는 이름으로 정의되며, audio는 입력 오디오 파일을 나타내는 AudioSegment 객체입니다. rev_time은 리버브 시간이고, decay는 리버브 감쇠 정도를 나타냅니다.

리버브 효과 적용하기

이제 리버브 효과를 추가하는 함수를 호출하여 결과 오디오를 얻을 수 있습니다.

reverb_audio = add_reverb(audio, rev_time=2, decay=0.5)
reverb_audio.export("reverb_audio.wav", format="wav")

위의 코드는 add_reverb 함수를 호출하여 리버브 효과가 적용된 오디오를 reverb_audio.wav 파일로 내보냅니다. rev_timedecay 값을 조정하여 효과의 강도와 성격을 조절할 수 있습니다.

이제 파이썬으로 오디오 파일에 리버브 효과를 추가하는 방법에 대해 알아보았습니다. 이를 응용하여 자신만의 음악 혹은 음성 파일에 다양한 효과를 적용해보세요!

참고 자료