繁体   English   中英

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

[英]get the amplitude data from an mp3 audio files using 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,但是我们可以仅使用内容而不存储实际文件吗?

MP3是已编码的wave(+标签和其他内容)。 您需要做的就是使用MP3解码器对其进行解码。 解码器将为您提供需要进一步处理的完整音频数据。

如何解码mp3? 令我震惊的是,几乎没有可用的Python工具。 虽然我在这个问题上找到了一个很好的人。 它叫做pydub ,我希望我可以使用作者提供的示例代码片段(我用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处于“播放中”状态;)。 现在由您决定如何使用收集的数据,但是此模块似乎可以为您提供所需的一切。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM