pydub简单介绍

pydub是python的高级一个音频处理库,可以让你以一种不那么蠢的方法处理音频。(开发者自己是这么说的,不过个人感觉有时候仍然很蠢。。。。)

pydub传送门


安装

pip install pydub

注意: pydub直接支持wav格式音频读取,如果需要处理其它格式音频(如MP3,ogg等)需要安装ffmpeg。 ffmpeg的安装在各平台上略有不同,具体方法自行google


快速开始

打开WAV文件

from pydub import AudioSegment

song = 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以毫秒为单位工作
ten_seconds = 10 * 1000

first_10_seconds = song[:ten_seconds]

last_5_seconds = song[-5000:]

放大开头音量,减小结尾音量

# 放大6dB音量
beginning = first_10_seconds + 6

# 衰减3dB音量
end = last_5_seconds - 3

连接音频(将一个文件添加到另一个文件的末尾)

without_the_middle = beginning + end

音频时长?

without_the_middle.duration_seconds ==  15.0

注意:AudioSegments是不可变的

backwards = song.reverse()

交叉淡化(开头和结束不修改)

with_style = beginning.append(endcrossfade = 1500

重复

#重复剪辑两次 
do_it_over = with_style *  2

淡出(注意,你可以链接操作,因为一切返回一个AudioSegment)

2秒的淡入,3秒的淡出 
awesome = do_it_over.fade_in2000).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参数传递给export。(这句想不到一个通顺的翻译了)

awesome.export(“ mashup.mp3 ”,format = “ mp3 ”,bitrate = “ 192k ”)

ffmpeg支持的任何进一步的参数可以作为’参数’参数中的列表进行传递,其中第一个为开关,第二个为参数。注意,不对这些参数进行验证,并且您可能受到您的特定构建的ffmpeg / avlib支持的限制。

#使用预设的mp3品质0(相当于lame V0) 
awesome.export( “ mashup.mp3 ”, format = “ mp3 ”, parameters = [ “ -q:a ”, “ 0 ” ])

#混合下来两个通道并设置硬输出音量 
awesome.export( “ mashup.mp3 ”, format = “ mp3 ”, parameters = [ “ -ac ”, “ 2 ”, “- vol ”, “ 150 ” ])

API文档

AudioSegment 对象是不可变的,并且支持多个运算符。

from pydub import AudioSegment
sound1 = AudioSegment.from_file("/path/to/sound.wav", format="
  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值