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

标签 python audio matplotlib mp3 pyaudio

我有一个 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/

相关文章:

python - Pandas - 多线图

python - 如何为 Homebrew 安装找到 python 和 python3 配置目录?

c++ - 在 iOS 中生成 AcoustID/Chromaprint 声学指纹

java - Android:如何在 API 30 中以编程方式修剪 WAV 音频?

python - 如何反转 seaborn 图形级图的轴 (FacetGrid)

python - asyncio matplotlib show() 仍然卡住程序

python - tf.contrib.signal.stft 返回一个空矩阵

python - 检测 python 程序是否通过 Windows GUI(双击)与命令提示符执行

java - Android - 铃声不会停止播放

python - 在python3中绘制散点图,其中x轴是纬度/经度(以公里为单位),y轴是深度