剪辑音乐要很久?3行代码Python瞬间搞定
共 2385字,需浏览 5分钟
·
2022-06-06 17:00
你没看错,使用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')
运行这个脚本,我们能瞬间完成剪辑:
这个功能非常基本,处理速度也非常快,这段处理的时间里,普通的同学可能 Adobe Audition 还没成功打开 。
下面再介绍点 Pydub 模块的更高级玩法。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
请选择以下任一种方式输入命令安装依赖:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install pydub
看到 Successfully installed xxx 则说明安装成功。此外你还需要安装ffmpeg,这个在网络上有许多教程,你也可以阅读我们上篇文章:《提取音乐高潮》,内含详细的安装教程。
后台回复音乐剪辑可获得本文全部代码。
2.音量变化
我们可以修改上面剪辑的那段音乐的入场音量大小和退场音量大小:
from pydub import AudioSegment
# 1秒=1000毫秒
SECOND = 1000
# 导入音乐
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
# 导出音乐
new_song.export('end_of_time_slice.mp3')
听听看:
效果和预期的一致,想想看,如果这个你用专业的音乐编辑器来做,得画段切片、设置音量,然后保存,细思极恐,太费时间了!
2.重复片段
如何重复我们开头说到的33秒到70秒这段音乐片段?可简单了,你只要会做乘法就行:
from pydub import AudioSegment
song = AudioSegment.from_mp3("end_of_time.mp3")
(song[33*1000:63*1000])*2.export('end_of_time_slice.mp3')
由于微信公众号只允许放三个音频,因此这个例子大家可以阅读原文进行聆听。没错,在pydub中,片段和数量之间的运算里加法调音量,乘法调长度,你记住了吗?
3.渐进渐出
有时候我们的耳朵需要时间来适应音量的变化,尤其是在看短视频的时候,音量忽大忽小实在是太没有用户体验了,这时候渐进渐出的设计就尤为关键:
# 公众号:Python 实用宝典
from pydub import AudioSegment
# 导入音乐
song = AudioSegment.from_mp3("end_of_time.mp3")
# 提取片段
song = song[33*1000:70*1000]
# 渐进渐出
awesome = song.fade_in(5000).fade_out(3000)
# 导出音乐
awesome.export('end_of_time_fade.mp3')
听听看,可优秀了!
4.反转音乐
这可能是最有趣和最可能产生特别效果的操作,它会让你完全不认得这首歌:
from pydub import AudioSegment
# 导入音乐
song = AudioSegment.from_mp3("end_of_time.mp3")[33*1000:70*1000]
# 翻转音乐
backwards = song.reverse()
# 导出音乐
backwards.export("end_of_time_reverse.mp3")
当然,反转音乐后会变得“耳”不忍“听”,这也很正常,原来的“正向规律 ” 倒转后,音调节奏也变了(不排除有特殊口味的人喜欢这种感觉呢)。好奇吗?好奇就自己动手试试看!
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
点击下方阅读原文可获得更好的阅读体验
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典