Pydub:用 Python 处理音频,不写废话

文章目录

  • [Pydub:用 Python 处理音频,不写废话](#Pydub:用 Python 处理音频,不写废话)
    • [1、 核心能力](#1、 核心能力)
    • [2、 链式调用](#2、 链式调用)
    • [3、 调试](#3、 调试)
    • [4、 安装](#4、 安装)
    • [5、 实际场景](#5、 实际场景)
    • [6、 适合谁](#6、 适合谁)

Pydub:用 Python 处理音频,不写废话

Pydub 在 GitHub 上已经拿到 9,763 个 Star。

这个 Python 库的目标是让音频操作变得简单直观。打开文件、剪片段、调音量、拼接、淡入淡出、格式转换,全部链式调用,几行代码写完。

1、 核心能力

打开音频文件:

复制代码
from pydub import AudioSegment
song = AudioSegment.from_wav("file.wav")
song = AudioSegment.from_mp3("file.mp3")

MP3、WAV、Ogg、FLV、MP4,只要 ffmpeg 支持的格式,它都认识。统一用 AudioSegment 对象,不用为每种格式写不同的解析逻辑。

切片基于毫秒:

复制代码
first_10_seconds = song[:10000]
last_5_seconds = song[-5000:]

调音量直接用加减运算符:

复制代码
louder = first_10_seconds + 6
quieter = last_5_seconds - 3

拼接和重复:

复制代码
mix = beginning + end
loop = mix * 2

2、 链式调用

因为每个操作都返回新的 AudioSegment,可以一口气串起来:

复制代码
result = (song[:10000] + 6)
    .append(song[-5000:] - 3, crossfade=1500)
    .fade_in(2000)
    .fade_out(3000)
result.export("output.mp3", format="mp3", bitrate="192k")

不用手动算帧率,不用管采样率,不用写循环。AudioSegment 是不可变对象,所有操作不修改原数据。

导出时支持更多参数,直接透传给 ffmpeg:

复制代码
song.export("output.mp3", format="mp3",
    parameters=["-ac", "2", "-vol", "150"],
    tags={"artist": "Pydub", "album": "Demo"})

3、 调试

转换出错时可以打开日志,查看实际执行的 ffmpeg 命令:

复制代码
import logging
l = logging.getLogger("pydub.converter")
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())

大多数转换问题来自 ffmpeg 环境配置,日志能直接暴露是哪一步出了问题。

4、 安装

复制代码
pip install pydub

然后装 ffmpeg。macOS 用 brew install ffmpeg,Linux 用 apt-get install ffmpeg,Windows 下载二进制文件加到 PATH 就行。

5、 实际场景

批量转视频为音频:

复制代码
import glob
from pydub import AudioSegment

for video in glob.glob("*.mp4"):
    mp3 = video.replace(".mp4", ".mp3")
    AudioSegment.from_file(video).export(mp3, format="mp3")

拼接歌单,带交叉淡化:

复制代码
playlist = None
for mp3_file in glob("*.mp3"):
    song = AudioSegment.from_mp3(mp3_file)
    if playlist is None:
        playlist = song[:30000]
    else:
        playlist = playlist.append(song, crossfade=10000)
playlist.fade_out(30000).export("mix.mp3", format="mp3")

6、 适合谁

处理音频批量的开发者、做播客剪辑工具的、跑语音识别预处理的、需要在 Python 项目里加音效播放的。API 足够直观,看过 Quickstart 就能上手。

项目基于 MIT 协议,由 James Robert 在 2011 年发布,社区活跃,问题可以在 Stack Overflow 上找到解答。

thon 项目里加音效播放的。API 足够直观,看过 Quickstart 就能上手。

项目基于 MIT 协议,由 James Robert 在 2011 年发布,社区活跃,问题可以在 Stack Overflow 上找到解答。

相关推荐
小小晓.10 小时前
Qt 对话框、QLineEdit 与布局管理实战详解
开发语言·qt
終不似少年遊*10 小时前
【安全业务Agent】从场景到编排
python·react.js·ai·langchain·agent·安全架构·工作流
AKA__Zas10 小时前
接口自动化测试(1.0 初认识
python·ci/cd·学习方法
炸薯条!10 小时前
博客系统测试报告
开发语言·lua
Evand J10 小时前
【MATLAB例程12】永磁同步电机基于增广无迹卡尔曼滤波的未知负载转矩在线观测
开发语言·matlab
用户03321266636710 小时前
使用 Python 在 Excel 文档中添加水印
python·excel
高洁0111 小时前
自然语言处理的技术演进与核心任务
人工智能·python·深度学习·机器学习·迁移学习
vipxieliang11 小时前
Python 类型注解与 mypy:提升代码可维护性
python
skywalk816311 小时前
不用 SSH、不装数据库:我用 1 个 Python 脚本 + Git,把 15 个 AI Agent 串成了一条流水线
数据库·人工智能·python·ssh·集群
天天被压力11 小时前
【A股分钟级高频数据完全手册 #02】Python调用股票1分钟数据接口:Pro版最新分时取数与字段解析
java·人工智能·python