2

我正在寻找使用 Python 计算一段音频的响度——可能是通过提取一段音频的峰值音量,或者可能使用更准确的测量值(RMS?)。

最好的方法是什么?我看过pyaudio,但这似乎并没有达到我想要的效果。看起来不错的是ruby​​-audio,因为这似乎已经sound.abs.max内置在其中了。

输入音频将取自各种持续时间约为 30 秒的本地 MP3 文件。

4

1 回答 1

4

我认为 RMS 将是最准确的衡量标准。需要注意的一点是,我们在不同频率下对响度的感知不同,因此使用 fft 将音频转换为频率空间(numpy.fft 应该仅适用于 30 秒的音频)。现在据此计算功率谱密度。使用一些响度曲线按频率加权 PSD。尤其是低于 10Hz 的频率,因为那里会有很多功率(它会主导时域中的 RMS 计算),但我们听不到它。现在整合 PSD 并取平方根,这将给出一个感知的 RMS。

您还可以将 mp3 分成多个部分或窗口,并应用此技术在特定部分中给出音量。

于 2011-05-29T22:04:37.070 回答