[python] 파이썬으로 오디오 파일의 주파수 대역을 감소하는 방법

오디오 파일을 처리하고 수정하는 것은 파이썬에서 일반적인 작업입니다. 오디오 파일의 주파수 대역을 감소시키는 방법에 대해서 알아보겠습니다.

1. 오디오 파일 로딩

먼저, 오디오 파일을 로딩하고 소리 데이터에 접근해야 합니다. 이 작업을 위해 파이썬의 wave 모듈을 사용하겠습니다.

import wave

# 오디오 파일 열기
audiofile = wave.open('audio.wav', 'rb')

# 오디오 파일의 매개 변수 읽기
n_channels = audiofile.getnchannels()
sample_width = audiofile.getsampwidth()
frame_rate = audiofile.getframerate()
n_frames = audiofile.getnframes()

이 코드는 audio.wav 오디오 파일을 읽고 오디오 파일의 속성을 변수에 저장합니다.

2. 주파수 대역을 감소시키는 방법

오디오 파일의 주파수 대역을 감소시키기 위해 파이썬의 오디오 처리 라이브러리인 librosa를 사용하겠습니다. librosa를 설치하려면 다음과 같이 명령을 실행하세요.

pip install librosa
import librosa

# 오디오 파일을 로드하여 시계열 데이터로 변환
y, sr = librosa.load('audio.wav')

# 시계열 데이터의 주파수 대역을 감소시키기
y_shifted = librosa.effects.pitch_shift(y, sr, n_steps=-1)

위 코드에서 librosa.load 함수를 사용하여 오디오 파일을 로드하고, librosa.effects.pitch_shift 함수를 사용하여 시계열 데이터의 주파수 대역을 감소시킵니다. n_steps 매개 변수를 사용하여 감소시킬 주파수 대역의 정도를 조절할 수 있습니다. 위의 예제에서는 -1로 설정하여 주파수를 1 옥타브 감소시킵니다.

3. 오디오 파일 저장

주파수 대역을 감소시킨 후에는 수정된 오디오를 저장할 수 있습니다. wave 모듈을 사용하여 파일에 쓰는 방법을 알아보겠습니다.

# 오디오 파일을 새로 생성
output_audio = wave.open('output.wav', 'wb')

# 샘플 파라미터 설정
output_audio.setnchannels(n_channels)
output_audio.setsampwidth(sample_width)
output_audio.setframerate(frame_rate)

# 오디오 데이터 쓰기
output_audio.writeframes(y_shifted.tobytes())

# 파일 닫기
output_audio.close()

위의 코드에서 wave.open 함수를 사용하여 출력 오디오 파일을 열고, setnchannels, setsampwidth, setframerate 함수를 사용하여 샘플 파라미터를 설정합니다. 마지막으로 writeframes 함수를 사용하여 수정된 오디오 데이터를 파일에 씁니다.

4. 결과 확인

오디오 파일을 감소시킨 후에는 결과를 확인할 수 있습니다. 음악 재생 프로그램 등을 사용하여 output.wav 파일을 재생해 보세요.

참고 자료