使用python从mp3音频文件中获取振幅数据

2024-05-16 19:50:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个mp3文件,我想基本上绘制出音频样本中的振幅谱。 我知道如果我们有一个wav文件,我们可以很容易地做到这一点。有很多python包可用于处理wav文件格式。但是,我不想将文件转换为wav格式,然后存储并使用它。 我试图实现的是直接获取mp3文件的振幅,即使我必须将其转换为wav格式,脚本也应该在运行时进行广播,而不必实际将文件存储在数据库中。 我知道我们可以如下转换文件:

from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")
sound.export("temp.wav", format="wav")

它创建了应该创建的temp.wav文件,但是我们可以只使用内容而不存储实际的文件吗?


Tags: 文件from脚本数据库格式绘制音频mp3
1条回答
网友
1楼 · 发布于 2024-05-16 19:50:45

MP3是编码波(+标签和其他东西)。你只要用MP3解码器解码就行了。解码器将给你整个音频数据,你需要进一步处理。

如何解码mp3?我感到震惊的是,可用于Python的工具如此之少。尽管我在问题中找到了一个好的答案。它被称为pydub,我希望我可以使用来自author的示例片段(我用wiki的更多信息更新了它):

from pydub import AudioSegment

sound = AudioSegment.from_mp3("test.mp3")

# get raw audio data as a bytestring
raw_data = sound.raw_data
# get the frame rate
sample_rate = sound.frame_rate
# get amount of bytes contained in one sample
sample_size = sound.sample_width
# get channels
channels = sound.channels

请注意,raw_data此时处于“广播”状态;)。现在取决于您想如何使用收集的数据,但是这个模块似乎为您提供了所需的一切。

相关问题 更多 >