python - 从 mp3 生成音量曲线

标签 python waveform

我正在尝试用 python 构建一些东西,可以分析上传的 mp3 并生成必要的数据来构建波形图。我发现的一切都比我需要的复杂得多。最终,我正在尝试构建像您在 SoundCloud 上看到的那样的东西。

我一直在研究numpyfft,但这一切似乎比我需要的更复杂。对此最好的方法是什么?我将使用 Canvas 构建实际的图形,所以不用担心这部分,我只需要绘制数据。

最佳答案

MP3 文件是波形的编码版本。在使用波形之前,必须首先将 MP3 数据解码为 PCM 波形。获得 PCM 数据后,每个样本都代表该时间点的波形幅度。如果我们假设 MP3 解码器输出带符号的 16 位值,则幅度范围将在 -16384 到 +16383 之间。如果通过将每个样本除以 16384 来标准化样本,则波形样本的范围将在 +/- 1.0 之间。

问题实际上是 MP3 解码为 PCM 的问题之一。据我所知,没有原生的Python解码器。但是,您可以使用 LAME,从 python 作为子进程调用,或者做更多工作,使用 SWIG 之类的东西将 LAME 库直接连接到 Python。这不是一项简单的任务。

绘制这些数据就成为读者的一项练习。

关于python - 从 mp3 生成音量曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254671/

相关文章:

javascript - 从选项播放时 Soundcloud 和波形背景发生变化

ffmpeg - 选择生成波形图像时要使用的音轨

python - 无法在 Django 中导入 GeoIP 模块

audio - 如何使用 FFmpeg 获得音频峰值?

python - 使用Python从Docker容器内获取MYSQL_TCP_ADDR?

python - Numpy 概率

javascript - riffwave.js 公式中的 (128 + 127 *) 部分是什么?

c - 停止 PCM 示例会导致点击

python - 复合分配的属性 setter ?

python - 在 Python 中查询数据库并存储到数据结构中