我试图获得通过AudioRecord捕获的音频数据的声级的线性表示,但我能在网上找到的唯一代码返回指数值。谁能指出我正确的方向?
我到目前为止找到的代码是
private double soundPressureLevel(final float[] buffer) {
double value = Math.pow(localEnergy(buffer), 0.5);
value = value / buffer.length;
return linearToDecibel(value);
}
private double linearToDecibel(final double value) {
return 20.0 * Math.log10(value);
}
private double localEnergy(final float[] buffer) {
double power = 0.0D;
for (float element : buffer) {
power += element * element;
}
return power;
}