我有一个 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 是编码波(+ 标签和其他东西)。您需要做的就是使用 MP3 解码器对其进行解码。解码器将为您提供进一步处理所需的全部音频数据。
如何解码mp3?我很震惊 Python 可用的工具如此之少。虽然我在this找到了一个不错的问题。它叫做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
正在“播出”;)。现在由您决定如何使用收集到的数据,但这个模块似乎可以为您提供所需的一切。
关于python - 使用python从mp3音频文件中获取振幅数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38797934/