繁体   English   中英

Python:实时或从 wav 文件获取音量分贝级别

[英]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 范围内

您给出的值相对于20 µPa参考声压级

在数字系统中,声音文件通常由浮点数< 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM