我正在使用AudioRecord类来分析麦克风中的原始pcm字节.
所以那很好用.现在我需要将pcm字节转换为分贝.
我有一个公式,将Pa中的声音压力设为db.
db = 20*log10(Pa/ref Pa)
所以问题是我从缓冲区得到的字节是从振荡器得到的振幅帕斯卡声压力是什么.
我试图把这个值放到te公式中,但是它带有非常高的db,所以我不认为它是正确的
谢谢
Mus*_*sis 12
免责声明:我对Android知之甚少.
您的设备可能使用每个样本两个字节,以每秒44,100个样本(可能更少)以单声道录制.所以你的第一步是将原始数据中的字节对组合成两字节整数(我不知道在Android中如何完成).
然后,您可以通过首先获取样本的标准化绝对值并将其传递给Db函数来计算每个样本的分贝值(相对于峰值):
float Db = 20 * log10(ABS(sampleVal) / 32768)
Run Code Online (Sandbox Code Playgroud)
峰值附近的值(例如+32767或-32768)将具有接近0的Db值.值3277(0.1)将具有-20的Db值; 值327(.01)的Db值为-40等.