Python “测量音频”;“响度”:RMS与LUFS

Python “测量音频”;“响度”:RMS与LUFS,python,audio,volume,spectrogram,librosa,Python,Audio,Volume,Spectrogram,Librosa,我试图测量各种电视内容剪辑(2-40秒)的“响度”。我对内容的相对响度感兴趣——人们在哪些场景中大喊大叫或低语,大声的音乐或安静的场景,等等 我想这意味着我感兴趣的是获取增益(输入响度)而不是音量(输出响度) 我用Python尝试了两种方法: librosa的RMS: np.mean(librosa.feature.rms(光谱图,中心=真)。T,轴=0) pyloudnorm:(实现ITU-R BS.1770-4响度算法(LUFS)) 当我比较两者的结果时,它们有时是一致的,但往往是不同的

我试图测量各种电视内容剪辑(2-40秒)的“响度”。我对内容的相对响度感兴趣——人们在哪些场景中大喊大叫或低语,大声的音乐或安静的场景,等等

我想这意味着我感兴趣的是获取增益(输入响度)而不是音量(输出响度)

我用Python尝试了两种方法:

  • librosa的RMS:
    np.mean(librosa.feature.rms(光谱图,中心=真)。T,轴=0)

  • pyloudnorm:(实现ITU-R BS.1770-4响度算法(LUFS))


  • 当我比较两者的结果时,它们有时是一致的,但往往是不同的(相同的文章显示相对较高的RMS,但较低的响度,反之亦然)。更重要的是,虽然他们两人似乎都做对了一些事情,但两人似乎都没有非常准确地反映出电视节目的内容。我想知道我是否需要采取一些措施来过滤掉一些未被感知到但在某种程度上影响这些指标的频率,或者我只是缺少一些重要的东西?

    响度,即被感知到的声音有多大,可能会相当棘手。我们知道它与频率有关,我们对中等频率范围更敏感。它与振幅是非线性的。在某一点上,两倍的速度

    短音阶下也存在时间依赖性效应,突然的响声会导致随后的声音比之前没有的声音显得更响亮(时间掩蔽)。在长期范围内,我们倾向于适应逐渐增加的容量(脱敏)。我们倾向于过滤掉几乎没有信息的声音(如静态/重复噪音)。等等

    您至少应该应用频率加权。是常用的。这可以通过对librosa的STFT光谱图进行加权来实现。然后你可以计算它的均方根。你也应该把它转换成分贝

    meter = pyln.Meter(samplerate)
    loudness = meter.integrated_loudness(waveform)