본문 바로가기
data science/audio processing

pydub.AudioSegment

by 꼰대코더 2024. 1. 14.

Install Package

pip install pydub
# 내부적으로 ffmpeg 라이브러리를 사용하기에 OS에 맞게 ffmpeg 설치 필요

 

불러오기

from pydub import AudioSegment

wav_audio = AudioSegment.from_wav("input.wav")
mp3_audio = AudioSegment.from_mp3("input.mp3")

 

정보

# 프레임레이트
print(wav_audio.frame_rate)
# 채널수 (스테레오=2, 모노=1)
print(wav_audio.channels)
# 재생시간
print(wav_audio.duration_seconds)

 

frame rate 변경

sound = audio.set_frame_rate(16000)

 

저장

wav_audio.export("wav.mp3", format="mp3")
mp3_audio.export("mpthree.wav", format="wav")

 

Slice audio

#   단위는 밀리세컨드
ten_seconds = 10 * 1000
first_10_seconds = song[:ten_seconds]

# 맨끝자락 5초
last_5_seconds = song[-5000:]

 

데시벨 올리기 내리기

# boost volume by 6dB 
beginning = first_10_seconds + 6

# reduce volume by 3dB 
end = last_5_seconds - 3

 

합치기

without_the_middle = beginning + end

 

numpy 변경

# 일단 스테레오를 모노로 변경 -> 각 채널값들을 평균화
audio = audio.set_channels(1)
samples = np.array(audio.get_array_of_samples())

 

numpy 를 audio 로 변경

re_audio = AudioSegment( samples.tobytes(),
                                            frame_rate=audio.frame_rate,
                                            sample_width=audio.sample_width,
                                            channels=audio.channels )