pydub入门(基于Pyhton3)

AudioSegment类

pydub 是一个简单易用的 Python 音频处理库,专注于提供高层次的音频操作接口,而 AudioSegment 是它的核心类,用于表示音频片段(如 MP3、WAV、OGG 等格式)。通过 AudioSegment,你可以轻松实现音频文件的加载、切割、合并、格式转换、音量调整等操作。

核心功能

  • 多格式支持
    支持常见音频格式(如 MP3、WAV、AAC、OGG、FLAC 等),依赖 FFmpeg 或 libav 进行底层编解码。

  • 简洁的API
    提供类似列表和字典的操作方式(如切片、拼接、覆盖)。

  • 跨平台
    兼容 Windows、macOS、Linux。

安装与依赖

在这里插入图片描述

基本用法

加载音频文件

from pydub import AudioSegment

# 加载音频文件(自动检测格式)
audio = AudioSegment.from_file("input.mp3")

# 指定格式加载
audio = AudioSegment.from_wav("input.wav")
audio = AudioSegment.from_mp3("input.mp3")

导出音频文件

audio.export("output.wav", format="wav")
audio.export("output.mp3", format="mp3", bitrate="192k")

音频基础操作

# 获取音频属性
duration = len(audio)          # 时长(毫秒)
channels = audio.channels      # 声道数
sample_width = audio.sample_width  # 采样位深(字节)
frame_rate = audio.frame_rate  # 采样率(Hz)

# 切割音频(从第10秒到第20秒)
segment = audio[10_000:20_000]

# 调整音量(增加6分贝)
louder = audio + 6

# 拼接音频
combined = audio1 + audio2

# 重复播放
looped = audio * 3

# 淡入淡出
faded = audio.fade_in(2000).fade_out(3000)  # 2秒淡入,3秒淡出

对帧处理

# 获取原始PCM数据(16位小端)
raw_data = audio.raw_data

opus_datas = []

# 按帧处理所有音频数据(包括最后一帧可能补零)
for i in range(0, len(raw_data), frame_size * 2):  # 16bit=2bytes/sample
    # 获取当前帧的二进制数据
    chunk = raw_data[i:i + frame_size * 2]

    # 如果最后一帧不足,补零
    if len(chunk) < frame_size * 2:
        chunk += b'\x00' * (frame_size * 2 - len(chunk))

    # 转换为numpy数组处理
    np_frame = np.frombuffer(chunk, dtype=np.int16)

    # 编码Opus数据
    opus_data = encoder.encode(np_frame.tobytes(), frame_size)
    opus_datas.append(opus_data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值