pydub
pydub 是一个 Python 库,用于处理音频文件,特别是方便地剪辑和转换音频文件。它基于 ffmpeg 工具,可以支持多种音频格式的导入导出,如MP3、WAV等。
安装
首先,你需要安装所需的库和ffmpeg工具:
pip install pydub
# 你也需要安装ffmpeg工具,并确保它能在命令行下访问
使用pydub裁剪音频文件
from pydub import AudioSegment
# 加载mp3文件
audio = AudioSegment.from_mp3("/path/to/audio.mp3")
# 截取前10秒
clipped_audio = audio[:10000] # 时间单位为毫秒
# 导出裁剪后的音频
clipped_audio.export("/path/to/clipped_audio.mp3", format="mp3")
合并多个音频片段
from pydub import AudioSegment
# 加载两个音频片段
audio1 = AudioSegment.from_mp3("/path/to/audio1.mp3")
audio2 = AudioSegment.from_mp3("/path/to/audio2.mp3")
# 合并两个音频片段
combined_audio = audio1 + audio2
# 导出合并后的音频
combined_audio.export("/path/to/combined_audio.mp3", format="mp3")
将音频文件转换为其他格式
from pydub import AudioSegment
# 加载wav文件
audio = AudioSegment.from_wav("/path/to/audio.wav")
# 转换为mp3格式
audio.export("/path/to/audio_converted.mp3", format="mp3")
调整音频音量
from pydub import AudioSegment
# 加载音频并增加音量
audio = AudioSegment.from_mp3("/path/to/audio.mp3").apply_gain(6) # 增加6dB音量
# 导出调整音量后的音频
audio.export("/path/to/increased_volume.mp3", format="mp3")
添加淡入淡出效果
from pydub import AudioSegment
# 加载音频并添加淡入和淡出效果
audio = AudioSegment.from_mp3("/path/to/audio.mp3")
audio = audio.fade_in(500).fade_out(500) # 淡入和淡出各500毫秒
# 导出处理后的音频
audio.export("/path/to/faded_audio.mp3", format="mp3")
分割音频文件
from pydub import AudioSegment
# 加载音频并按每10秒分割
audio = AudioSegment.from_mp3("/path/to/audio.mp3")
chunks = make_chunks(audio, 10000) # 每个chunk长度为10秒
for i, chunk in enumerate(chunks):
chunk.export(f"/path/to/chunk_{i}.mp3", format="mp3")
def make_chunks(sound, milliseconds):
chunks = []
for i in range(0, len(sound), milliseconds):
chunks.append(sound[i:i+milliseconds])
return chunks
更改音频采样率和位深度
from pydub import AudioSegment
# 加载音频并更改采样率和位深度
audio = AudioSegment.from_mp3("/path/to/audio.mp3")
audio = audio.set_frame_rate(44100).set_channels(2).set_sample_width(2)
# 导出处理后的音频
audio.export("/path/to/resampled_audio.mp3", format="mp3")
混合背景音乐与人声
from pydub import AudioSegment
# 加载背景音乐和人声
bg_music = AudioSegment.from_mp3("/path/to/bg_music.mp3")
voice = AudioSegment.from_mp3("/path/to/voice.mp3")
# 混合音频,假设人声音量减少一半
mixed_audio = bg_music.overlay(voice - voice.dBFS * 6)
# 导出混合音频
mixed_audio.export("/path/to/mixed_audio.mp3", format="mp3")
提取音频文件的元数据
from pydub import AudioSegment
# 加载音频并获取元数据
audio = AudioSegment.from_mp3("/path/to/audio.mp3")
metadata = audio.metadata
print(f"标题: {metadata.get('title', '未知')}, 艺术家: {metadata.get('artist', '未知')}, 长度: {len(audio)/1000:.2f}秒")
删除音频中的静默部分
from pydub.silence import detect_silence
# 加载音频并检测静默部分
audio = AudioSegment.from_mp3("/path/to/audio.mp3")
silent_parts = detect_silence(audio, min_silence_len=1000, silence_thresh=-32)
# 删除静默部分
non_silent_parts = audio.split_on_silence(min_silence_len=1000, silence_thresh=-32)
# 重新组合非静默部分
filtered_audio = sum(non_silent_parts, AudioSegment.empty())
# 导出处理后的音频
filtered_audio.export("/path/to/no_silence_audio.mp3", format="mp3")
请注意:
上述所有示例均需先正确安装并配置好 pydub 和 ffmpeg。同时,某些操作可能需要对音频片段进行适当的处理才能达到预期效果。
行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!