You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将经pydub修改后的AudioSegment直接加载到librosa?

解决方案

你可以直接用BytesIO包装audio_clip.raw_data,因为BytesIO本身就属于BinaryIO类型,完全符合librosa.load()的输入要求。不过要注意,raw_data是未经编码的PCM原始数据,调用librosa.load()时需要手动指定音频的采样率、声道数等参数,否则librosa无法正确解析。

直接上可用代码:

from pydub import AudioSegment
import librosa
from io import BytesIO

audio_clip = AudioSegment.from_mp3("example.mp3")
# ... 执行你的音频修改操作

# 将原始音频字节数据包装成BytesIO对象
audio_bytes = BytesIO(audio_clip.raw_data)

# 调用librosa.load并指定必要参数
# sr传入音频原始采样率,mono根据原音频声道数设置(True转单声道,False保留原声道)
y, sr = librosa.load(audio_bytes, sr=audio_clip.frame_rate, mono=(audio_clip.channels == 1))

关键说明

  • BytesIO是Python标准库io中的类,它实现了BinaryIO接口,所以能直接作为librosa.load()的输入。
  • audio_clip.frame_rate是音频的原始采样率,传给sr参数可以保证librosa解析时的采样率和原始数据一致。
  • mono参数:设为True会自动将多声道音频转为单声道;设为False则保留原声道结构,此时返回的y是二维数组(每列对应一个声道)。

内容的提问来源于stack exchange,提问作者Lazzza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:22:13