首页 > 技术文章 > pydub-简单易用的处理音频的python库

expressTHK 2020-12-12 18:02 原文

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

  

推荐阅读