#打开音频文件
from pydub import AudioSegment
sound1 = AudioSegment.from_file("/path/to/sound.wav", format="wav")
sound2 = AudioSegment.from_file("/path/to/another_sound.wav", format="wav")
# 调整音量大小
louder = sound1 + 6
quieter = sound1 - 3.5
# sound2 连接在sound1 后面
combined = sound1 + sound2
# sound1 重复3次
repeated = sound1 * 3
# 持续时间
duration_in_milliseconds = len(sound1)
# sound1 前5秒
beginning = sound1[:5000]
# sound1 最后5秒
end = sound1[-5000:]
# 创建原始二进制音频:
sound = AudioSegment(
# raw audio data (bytes) 二进制数据
data=b'…',
# 2 byte (16 bit) samples 采样sample
sample_width=2,
# 44.1 kHz frame rate 采样频率
frame_rate=44100,
# stereo 声道
channels=2
)
当两个音频文件拼接时,AudioSegment objects 会检查channels, frame rate, sample rate, bit depth, 等是否匹配,不匹配则会修改质量较低的音频使之与较高的音频匹配。
读入音频
打开一个音频文件作为AudioSegment实例
from pydub import AudioSegment
# wave and raw don’t use ffmpeg
wav_audio = AudioSegment.from_file("/path/to/sound.wav", format="wav")
raw_audio = AudioSegment.from_file("/path/to/sound.raw", format="raw",
frame_rate=44100, channels=2, sample_width=2)
# all other formats use ffmpeg
mp3_audio = AudioSegment.from_file("/path/to/sound.mp3", format="mp3")
# use a file you've already opened (advanced …ish)with open("/path/to/sound.wav", "rb") as wav_file:
audio_segment = AudioSegment.from_file(wav_file, format="wav")
format参数:默认 MP3.同时支持 "wav"和 "raw" ,其他格式需要 ffmpeg支持.
"raw"需要额外三个参数, sample_width, frame_rate, and channels,
sample_width:1 8-bit音频,2 16-bit (CD quality),4 32-bit.
channels: 1 单声道, 2 立体声.
frame_rate:通常采样率为 44100 (44.1kHz - CD audio), 或者 48000 (48kHz - DVD audio)
导出音频
AudioSegment.export(path/handle,format)
把一个AudioSegment对象导出文件,返回值为文件句柄
from pydub import AudioSegment
sound = AudioSegment.from_file("/path/to/sound.wav", format="wav")
# simple export
file_handle = sound.export("/path/to/output.mp3", format="mp3")
# more complex export
file_handle = sound.export("/path/to/output.mp3",
format="mp3",
bitrate="192k",
tags={"album": "The Bends", "artist": "Radiohead"},
cover="/path/to/albumcovers/radioheadthebends.jpg")
export的第一个参数可以是文件输出路径或者句柄
format:默认 "mp3"。支持"wav" ,"raw" ,其他格式需要ffmpeg.
codec:有些音频格式需要额外的解码器,你可以在此定义你所需要的解码器。例如,OGG格式通常是用“libVorbis“解码器(需要ffmpeg)。
bitrate:比特率,该参数决定了解码器所使用的比特率(例如‘128k’用于压缩格式)(需要ffmpeg). 每种codec 所要求的比特率不同(参见ffmpeg documentation )(bitrate 通常用-b, -ba or -a:b).
tags:允许你为音频添加标签,例如 {"album": "1989", "artist": "Taylor Swift"} (需要ffmpeg). 不是所有的音频格式都支持tag(MP3格式支持).
parameters:调用ffmpeg 时的额外参数;需要是list格式,例如["-ac", "2"]。
id3v2_version:默认 “4”,设置ffmpeg的ID3v2版本 ffmpeg来为输出文件添加标签。If you want Windows Exlorer to display tags, use "3" here (source).
cover:允许你为音频设置封面,目前只有MP3格式支持,图片格式为png, bmp, tiff 。 例如: "/path/to/imgfile.png"
AudioSegment.empty()
创建一个空的AudioSegment.
from pydub import AudioSegment
empty = AudioSegment.empty()
len(empty) == 0
#This is useful for aggregation loops:
from pydub import AudioSegment
sounds = [
AudioSegment.from_wav("sound1.wav"),
AudioSegment.from_wav("sound2.wav"),
AudioSegment.from_wav("sound3.wav"),
]
playlist = AudioSegment.empty()for sound in sounds:
playlist += sound