1. 程式人生 > 實用技巧 >pydub-簡單易用的處理音訊的python庫

pydub-簡單易用的處理音訊的python庫

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')