오디오 파일을 처리하고 수정하는 것은 파이썬에서 일반적인 작업입니다. 오디오 파일의 주파수 대역을 감소시키는 방법에 대해서 알아보겠습니다.
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
파일을 재생해 보세요.