python pydub用法(1)

AudioSegment()

#打开音频文件
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_file(path/handle,format)

打开一个音频文件作为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). 不是所有的音频格式都支持tagMP3格式支持).

parameters:调用ffmpeg 时的额外参数;需要是list格式,例如["-ac", "2"]

id3v2_version:默认 4,设置ffmpegID3v2版本 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


  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值