Pydub 是一个用 Python 编写的音频处理库,它可以方便地处理许多音频文件,诸如分割、合并、格式转换、音量调节等。它具有以下特点:
- 主要使用 ffmpeg 和 libav 模块来实现音频的读取、处理和输出。
- 支持的音频格式非常广泛,包括 MP3、WAV、FLAC、MP4 等。
- API 简单易用,可以方便地进行常用的音频处理操作。
Pydub 是一个轻量级、快速且易于使用的库。silence库是pydub的一个扩展库,可以在音频文件中根据静默部分进行分割,非常方便。
1 pydub安装
安装 Pydub 的最简单方法是使用 pip,只需在命令行下运行以下命令即可:
pip install pydub
依赖:需安装ffmpeg或者libav
如果 ffmpeg 或 libav 未安装,则还需要在系统中安装相关依赖库。
2 pydub模块使用
读取音频文件非常简单,只需使用 AudioSegment.from_file() 函数即可。以下示例演示了如何读取名为 "soundfile.mp3" 的 MP3 文件:
2.1 打开音频文件
from pydub import AudioSegment
# 打开wav格式音频文件
sound = AudioSegment.from_wav('./soundfile.wav')
# 打开mp3音频文件,AudioSegment原生只支持wav,raw文件,安装ffmpeg可支持其所有格式
sound = AudioSegment.from_mp3('./soundfile.mp3')
# 打开音频文件,生成AudioSegment对象
sound = AudioSegment.from_file('./soundfile.mp3') # format默认值为"mp3"
sound = AudioSegment.from_file('./soundfile.wav', format='wav')
# 打开raw文件需要额外参数,sample_width(采样位数),frame_rate(采样频率),channels(声通道)
# sample_width: 1、8bit,2、16bit,3、32bit
# frame_rate: 44100(44.1kHz CD audio), 48000(48kHz DVD audio)
# channels: 1、单声道,2、立体声
sound = AudioSegment.from_file('./soundfile.raw', format='raw', frame_rate=44100, channels=2, sample_width=2)
2.2 导出音频文件
要将 AudioSegment 对象保存为音频文件,可以使用 export() 函数。以下示例将上述读取的音频输出为名为 "outputsoundfile.mp3" 的 mp3文件:
sound = AudioSegment.from_file('./soundfile.wav', format='wav')
# 导出音频文件
sound.export('./outputsoundfile.mp3', format='mp3')
2.3 创建音频文件
# 生成一个时间长度为0秒的AudioSegment对象,一般用于多个音频合并
sound = AudioSegment.empty()
# 生成一个时间长度为5秒的无声AduioSegment对象
# 参数duration:时间长度(毫秒),frame_rate:频率,默认为11025Hz
sound = AudioSegment.silent(duration=50000)
2.4 合并音频文件
# 两个单声道音频合并为一个多声道音频
left_channel = AudioSegment.from_wav('sound_left.wav')
right_channel = AudioSegment.from_wav('sound_right.wav')
stereo_sound = AudioSegment.from_mono_auidosegments(left_channel,right_channel)
# 将多声道音频分解成两个单声道
sound = AudioSegment.from_wav('sound.wav')
sound.spli