剪輯音樂要很久?3行代碼Python瞬間搞定
你沒看錯(cuò),使用Python,? 只需要3行語句就能剪輯音樂,比如我要剪輯《End of Time》33秒到1分10秒的音樂片段:
from?pydub import?AudioSegment
song = AudioSegment.from_mp3("end_of_time.mp3")
song[33,[object Object],1000].export('end_of_time_slice.mp3')運(yùn)行這個(gè)腳本,我們能瞬間完成剪輯:
這個(gè)功能非常基本,處理速度也非常快,這段處理的時(shí)間里,普通的同學(xué)可能 Adobe Audition 還沒成功打開 。
下面再介紹點(diǎn) Pydub 模塊的更高級玩法。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南?進(jìn)行安裝。
(可選1)?如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
(可選2)?此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install pydub看到 Successfully installed xxx 則說明安裝成功。此外你還需要安裝ffmpeg,這個(gè)在網(wǎng)絡(luò)上有許多教程,你也可以閱讀我們上篇文章:《提取音樂高潮》,內(nèi)含詳細(xì)的安裝教程。
后臺回復(fù)音樂剪輯可獲得本文全部代碼。
2.音量變化
我們可以修改上面剪輯的那段音樂的入場音量大小和退場音量大小:
from?pydub import?AudioSegment
# 1秒=1000毫秒
SECOND = 1000
# 導(dǎo)入音樂
song = AudioSegment.from_mp3("end_of_time.mp3")
# 取33秒到70秒間的片段
song = song[33*SECOND:70*SECOND]
# 入場部分提高6分貝, 退場部分減少5分貝
ten_seconds = 10?* SECOND
last_five_seconds = -5?* SECOND
beginning = song[:ten_seconds] + 6
ending = song[last_five_seconds:] - 5
# 形成新片段
new_song = beginning + song[ten_seconds:last_five_seconds] + ending
# 導(dǎo)出音樂
new_song.export('end_of_time_slice.mp3')聽聽看:
效果和預(yù)期的一致,想想看,如果這個(gè)你用專業(yè)的音樂編輯器來做,得畫段切片、設(shè)置音量,然后保存,細(xì)思極恐,太費(fèi)時(shí)間了!
2.重復(fù)片段
如何重復(fù)我們開頭說到的33秒到70秒這段音樂片段?可簡單了,你只要會(huì)做乘法就行:
from?pydub import?AudioSegment
song = AudioSegment.from_mp3("end_of_time.mp3")
(song[33*1000:63*1000])*2.export('end_of_time_slice.mp3')由于微信公眾號只允許放三個(gè)音頻,因此這個(gè)例子大家可以閱讀原文進(jìn)行聆聽。沒錯(cuò),在pydub中,片段和數(shù)量之間的運(yùn)算里加法調(diào)音量,乘法調(diào)長度,你記住了嗎?
3.漸進(jìn)漸出
有時(shí)候我們的耳朵需要時(shí)間來適應(yīng)音量的變化,尤其是在看短視頻的時(shí)候,音量忽大忽小實(shí)在是太沒有用戶體驗(yàn)了,這時(shí)候漸進(jìn)漸出的設(shè)計(jì)就尤為關(guān)鍵:
# 公眾號:Python 實(shí)用寶典
from?pydub import?AudioSegment
# 導(dǎo)入音樂
song = AudioSegment.from_mp3("end_of_time.mp3")
# 提取片段
song = song[33*1000:70*1000]
# 漸進(jìn)漸出
awesome = song.fade_in(5000).fade_out(3000)
# 導(dǎo)出音樂
awesome.export('end_of_time_fade.mp3')聽聽看,可優(yōu)秀了!
4.反轉(zhuǎn)音樂
這可能是最有趣和最可能產(chǎn)生特別效果的操作,它會(huì)讓你完全不認(rèn)得這首歌:
from?pydub import?AudioSegment
# 導(dǎo)入音樂
song = AudioSegment.from_mp3("end_of_time.mp3")[33*1000:70*1000]
# 翻轉(zhuǎn)音樂
backwards = song.reverse()
# 導(dǎo)出音樂
backwards.export("end_of_time_reverse.mp3")當(dāng)然,反轉(zhuǎn)音樂后會(huì)變得“耳”不忍“聽”,這也很正常,原來的“正向規(guī)律 ” 倒轉(zhuǎn)后,音調(diào)節(jié)奏也變了(不排除有特殊口味的人喜歡這種感覺呢)。好奇嗎?好奇就自己動(dòng)手試試看!
我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請持續(xù)關(guān)注Python實(shí)用寶典。
有任何問題,可以在公眾號后臺回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問。
原創(chuàng)不易,希望你能在下面點(diǎn)個(gè)贊和在看支持我繼續(xù)創(chuàng)作,謝謝!
點(diǎn)擊下方閱讀原文可獲得更好的閱讀體驗(yàn)
Python實(shí)用寶典?(pythondict.com)
不只是一個(gè)寶典
歡迎關(guān)注公眾號:Python實(shí)用寶典
