Pydub
新手使用的话,可能会遇到一些问题,我写了一篇关于依赖库ffmpeg的文章,可以参考一下:
from pydub import AudioSegment
wav_version = AudioSegment.from_wav("文件路径.wav")
mp3_version = AudioSegment.from_mp3("文件路径.mp3")
ogg_version = AudioSegment.from_ogg("文件路径.ogg")
flv_version = AudioSegment.from_flv("文件路径.flv")
mp4_version = AudioSegment.from_file("文件路径.mp4", "mp4")
wma_version = AudioSegment.from_file("文件路径.wma", "wma")
aac_version = AudioSegment.from_file("文件路径.aiff", "aac")
mp3_audio = AudioSegment.from_file("文件路径.mp3", format="mp3")
# 还可以更精确的读取
raw_audio = AudioSegment.from_file("/path/to/sound.raw", format="raw",frame_rate=44100, channels=2, sample_width=2)
frame_rate:采样率,其值一般为
44100
(44.1kHz - CD音频), 或是48000
(48kHz -DVD音频) channels:声道,1--表示单声道,2--表示双声道 sample_width:取样的字节数,1--表示8-bit音频,2--表示16-bit音频,4--表示32-bit音频。
格式不限于此,它支持ffmpeg库所支持的文件。
==ffmpeg支持的文件参考==:http://www.ffmpeg.org/general.html#File-Formats
song.export("文件路径.mp3", format="mp3")
# 更精确的保存
file_handle = song.export("保存的路径.mp3",
format="mp3",
bitrate="192k",
tags={"album": "The Bends", "artist": "Radiohead"},
cover="图片文件路径.jpg")
bitrate:可以设置编码时使用的编码器,具体可以参考ffmpeg文档 tag:给编码器提供媒体信息标签,不是所有的格式都可以使用的 cover:给音频文件添加封面
==pydub中做任何的操作的时间尺度都是毫秒级==
from pydub import AudioSegment
# 读取一个mp3文件
song = AudioSegment.from_mp3("文件路径.mp3")
# 设定一个10s的单位时间
ten_seconds = 10 * 1000
# 进行切片处理
first_10_seconds = song[:ten_seconds]
last_5_seconds = song[-5000:]
from pydub import AudioSegment
# 读取一个mp3文件
song = AudioSegment.from_mp3("文件路径.mp3")
# 设定一个10s的单位时间
ten_seconds = 10 * 1000
# 进行切片处理
first_10_seconds = song[:ten_seconds]
last_5_seconds = song[-5000:]
# 对前10秒的声音调高3dB,后5秒的声音降低3dB
first_10_seconds_new = first_10_seconds + 6
last_5_seconds_new = last_5_seconds - 3
from pydub import AudioSegment
# 读取一个mp3文件
song = AudioSegment.from_mp3("文件路径.mp3")
# 2秒淡入3秒淡出
result = song.fade_in(2000).fade_out(3000)
from pydub import AudioSegment
# 读取一个mp3文件
sound = AudioSegment.from_mp3("文件路径.mp3")
# 获取长度
len_s = sound.duration_seconds
# 获取响度
loudness = sound.dBFS
# 获取声道数
channel_count = sound.channels
# 取样数
bytes_per_sample = sound.sample_width
# 获取帧速率
frames_per_second = sound.frame_rate
# 获取采样率
bytes_per_frame = sound.frame_width
# 获取帧数,这个例子是返回200毫秒中帧的数目
number_of_frames = sound.frame_count(ms=200)
# 直接用+相连就可以
song_link = song_1 + song_2
# 直接用*就可以,n代表重复几次
song_repeat = song * n
# 1000即代表1秒,不要忘了,这里都是以毫秒作为单位进行操作的
song = AudioSegment.silent(duration=1000)
AudioSegment
对象empty = AudioSegment.empty()
可以用于将许多的音频集合在一起循环
# 存放三个音频文件
sounds = [song_1, song_2, song_3]
# 创建一个持续时间为0的对象
empty = AudioSegment.empty()
for sound in sounds:
empty += sound
参考一:
参考二:
最好用的python音频库之一:pydub的中文文档(含API)
参考三:
作者:远方的星 CSDN:https://blog.csdn.net/qq_44921056
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。