我正在尝试评估电视内容的各种片段(约2-40秒)的“响度”。我对内容的相对响度很感兴趣-人们在哪些场景中大喊大声或窃窃私语,大声的音乐大声或安静的场景等。
我认为这意味着我有兴趣捕获增益(输入响度)而不是音量(输出响度)...
我用python尝试了两种方法:
np.mean(librosa.feature.rms(spectrogram, center=True).T, axis=0)
meter = pyln.Meter(samplerate)
loudness = meter.integrated_loudness(waveform)
当我比较两者的结果时,它们有时是对齐的,但通常是不同的(同一篇文章显示的RMS相对较高,但响度较低,反之亦然)。更重要的是,尽管它们似乎都可以解决某些问题,但它们似乎都不是电视中即将出现的事情的非常准确的表示。我想知道是否需要采取一些步骤来过滤掉一些未被感知但会以某种方式影响这些指标的频率,或者我是否只是缺少一些重要的东西?
最佳答案
响度,即某事物被感知的响度,可能非常棘手。众所周知,它与频率有关,我们对中间频率范围更加敏感。关于幅度,它是非线性的。在某个时候两倍。在小范围内还存在与时间有关的效果,突然的大声声音会导致后面的声音显得比以前的声音不在那儿声音大(临时掩盖)。从长远来看-我们倾向于适应逐渐增加的体积(脱敏)。我们倾向于滤除很少信息(例如静态/重复性噪声)的声音。等等..
您至少应该应用频率加权。通常使用A加权https://en.m.wikipedia.org/wiki/A-weighting这可以通过对librosa的STFT频谱图进行加权来完成。然后,您可以计算该值的RMS。您还应该将其转换为Desibel。
关于python - 测量音频 “loudness”:RMS与LUFS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59429684/