[英]Python: Get volume decibel Level real time or from a wav file
对于项目工作,我需要通过录制的音频文件或使用麦克风实时录制来测量音量。 在我的初步研究之后,我尝试使用 soundfile 库。 该文件是使用20*np.log10(np.sqrt(np.mean(np.absolute(a)**2)))
读取的,并使用20*np.log10(np.sqrt(np.mean(np.absolute(a)**2)))
,我已经计算了 dB 值。 我得到了声音文件的负值。 但是正常的声音可能在 50-70 dB 的范围内,而我得到的是负值。 有人可以帮我解决这个问题吗?
简短回答:dB 与 dB 不同。 你的结果可能是正确的。
长答案:dB 级别总是定义与某个参考值的关系。 对于音频/声学,有很多参考值,您需要指定您使用的是哪一个,以 dB 为单位的值才有意义。 当你说
正常声音可能在 50-70 分贝范围内
这不是一个准确的陈述,你可能是说
正常声音可能在 50-70 dB SPL 范围内
在数字系统中,声音文件通常由浮点数< 1
,然后我们说dB FS(dB 满量程) ,参考值为 1。根据数学定律,dB FS 值为负。
同样很明显,您不能直接将 dB FS 值与 dB SPL 值相关联:如果您播放相同的音频文件(即取一些 dB FS 值)并播放两次,但调高扬声器的音量旋钮,它将导致到两个不同的值 dB SPL(你听到的)。
您需要添加声音参考,即 20 log10(P rms_value/P ref)+120 dB
以获取dB
标度范围内的数据,Pref 可以从您的输入模块进行调整
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.