Nik*_*391 5 python audio mp3 matplotlib pyaudio
我有一个mp3文件,我想基本上绘制出该音频样本中存在的振幅频谱。我知道如果我们有一个wav文件,我们可以很容易地做到这一点。有很多python软件包可用于处理wav文件格式。但是,我不想将文件转换为wav格式,然后存储然后使用。我要实现的目标是直接获取mp3文件的幅度,即使我必须将其转换为wav格式,脚本也应该在运行时进行广播,而无需实际将文件存储在数据库中。我知道我们可以像下面这样转换文件:
from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")
sound.export("temp.wav", format="wav")
Run Code Online (Sandbox Code Playgroud)
并创建了预期的temp.wav,但是我们可以仅使用内容而不存储实际文件吗?
MP3 是编码波(+ 标签和其他东西)。您需要做的就是使用 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
Run Code Online (Sandbox Code Playgroud)
请注意,此时raw_data正在“播出”;)。现在由您决定如何使用收集的数据,但该模块似乎为您提供了所需的一切。