pydub-簡單易用的處理音訊的python庫
阿新 • • 發佈:2020-12-12
pydub是一個簡單易用的,用於處理音訊的python庫。
快速開始
開啟一個WAV檔案:
from pydub import AudioSegmentsong = AudioSegment.from_wav("never_gonna_give_you_up.wav")
也可以是mp3:
song = AudioSegment.from_mp3("never_gonna_give_you_up.mp3")
同樣,ogg格式或者flv格式或者任何ffmpeg支援的檔案格式都是可以的:
ogg_version = AudioSegment.from_ogg("never_gonna_give_you_up.ogg") flv_version = AudioSegment.from_flv("never_gonna_give_you_up.flv") mp4_version = AudioSegment.from_file("never_gonna_give_you_up.mp4", "mp4") wma_version = AudioSegment.from_file("never_gonna_give_you_up.wma", "wma") aac_version = AudioSegment.from_file("never_gonna_give_you_up.aiff", "aac")
切片音訊:
# pydub does things in milliseconds ten_seconds = 10 * 1000 first_10_seconds = song[:ten_seconds] 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
How long is it?
without_the_middle.duration_seconds == 15.0
音訊間隔是不變的:
# song is not modified backwards = song.reverse()
交叉淡入淡出(重複,開始和結束均未修改)
# 1.5 second crossfade with_style = beginning.append(end, crossfade=1500)
重複
# repeat the clip twice do_it_over = with_style * 2
淡入淡出(請注意,您可以連結操作,因為一切都會返回AudioSegment)
# 2 sec fade in, 3 sec fade out awesome = do_it_over.fade_in(2000).fade_out(3000)
儲存結果(同樣,ffmpeg支援)
awesome.export("mashup.mp3", format="mp3")
使用標籤儲存結果(元資料)
awesome.export("mashup.mp3", format="mp3", tags={'artist': 'Various artists', 'album': 'Best of 2011', 'comments': 'This album is awesome!'})
您可以使用ffmpeg支援的任何語法傳遞可選的bitrate引數以匯出:
awesome.export("mashup.mp3", format="mp3", bitrate="192k")
ffmpeg支援的其他任何引數都可以作為列表傳遞到“ parameters”引數中,其中開關優先,引數第二。請注意,不會對這些引數進行驗證,並且您可能會受到特定的ffmpeg / avlib構建支援的限制。
# Use preset mp3 quality 0 (equivalent to lame V0) awesome.export("mashup.mp3", format="mp3", parameters=["-q:a", "0"]) # Mix down to two channels and set hard output volume awesome.export("mashup.mp3", format="mp3", parameters=["-ac", "2", "-vol", "150"])
安裝
安裝pydub非常簡單,但是請不要忘記安裝ffmpeg / avlib,
pip install pydub
或從網盤安裝我們儲存的pydub壓縮包檔案。
例子
假設您有一個包含mp4和flv視訊的目錄,並且想要將它們全部轉換為mp3,以便可以在mp3播放器上收聽它們。
import os import glob from pydub import AudioSegment video_dir = '/home/johndoe/downloaded_videos/' # Path where the videos are located extension_list = ('*.mp4', '*.flv') os.chdir(video_dir) for extension in extension_list: for video in glob.glob(extension): mp3_filename = os.path.splitext(os.path.basename(video))[0] + '.mp3' AudioSegment.from_file(video).export(mp3_filename, format='mp3')