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

时间:2018-10-23 07:12:24

标签: python numpy signal-processing wav pyaudio

对于项目工作,我需要从已录制的音频文件或使用麦克风实时录制的情况下测量音量。经过初步研究,我尝试使用声音文件库。使用声音文件读取文件,并使用for(Employee e: findEmplyees){ String name = e.getUser.getName(); } 来计算dB值。声音文件的值越来越小。但是正常的声音可能在50-70 dB的范围内,而我得到的是负值。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

简短的回答:dB与dB不同。您的结果可能是正确的。

长答案:dB电平始终定义与某个参考值的关系。 For audio / acoustics, there are many reference values,并且您需要指定要使用哪个值才能使dB值有意义。当你说

  

正常声音可能在50-70 dB范围内

那可能不是一个准确的陈述,

  

正常声音可能在50-70 dB SPL范围内

您要在其中提供与reference sound pressure level of 20 µPa相关的值。

在数字系统中,声音文件通常由浮点数< 1表示,然后我们将参考值称为1的dB FS (dB full scale)。根据数学定律,dB FS值为负。

同样清楚的是,您不能直接将dB FS值与dB SPL值相关联:如果您播放相同的音频文件(即获取某个dB FS值)并播放两次,但是请调高扬声器的音量旋钮,它将导致两个不同的值dB SPL(您所听到的)。

答案 1 :(得分:1)

您需要添加声音参考,即20 log10(P rms_value/P ref)+120 dB才能获得dB范围内的数据,可以从输入模块中调整Pref