使用 Python 测量音频“响度”

Posted

技术标签:

【中文标题】使用 Python 测量音频“响度”【英文标题】:Using Python to measure audio "loudness" 【发布时间】:2011-05-29 21:32:54 【问题描述】:

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

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

输入音频将取自各种本地 MP3 文件,时长约为 30 秒。

【问题讨论】:

PyMedia 提供了一个getVolume 【参考方案1】:

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

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

【讨论】:

嗨,李,感谢您的详细描述!你完美地回答了我的第一个问题。

以上是关于使用 Python 测量音频“响度”的主要内容,如果未能解决你的问题,请参考以下文章

音频知识点- 响度控制单位

FFmpeg:流式音频播放列表,标准化响度并生成频谱图和波形

音频处理Loudness Normalization 响度均衡算法简介

音频处理Loudness Normalization 响度均衡算法简介

WebRTC Native M96音频基础知识介绍--使用Opus

WebRTC Native M96音频基础知识介绍--使用Opus