作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取并表示先前使用设备的内部麦克风录制的 wav 文件的 SPL。问题是,我得到的值似乎根本不符合逻辑,因为我得到的值超过 100 db,只是拍手,如您在此处看到的:
(来源:subirimagenes.com)
这就是我正在做的事情:
你们知道我做错了什么吗?我认为这些值应该是获得的值的一半左右
这是一段代码:
protected void miThread() {
Thread t=new Thread() {
public void run(){
//Operaciones ope=new Operaciones();
double [] st =new double [arr.length];
int j=0;
try{
for (int i = 44; i < s; i+=2) {
// convert byte pair to int
double audioSample = (double) (array[i+1] << 8 | array[i] & 0xff)/ 32767.0;
arr[j]=audioSample; //double
n[j] = (Number)arr[j]; //Number
st[j]=10*Math.log10(Math.abs((audioSample/Math.pow(10, -12)))); //double
l[j]=(Number)(10*Math.log10(Math.abs((audioSample/Math.pow(10, -12))))); //Number
if(audioSample == 0.0 ){
if(j!=0){
l[j]=l[j-1];
st[j]=st[j-1];
}else{
l[j]=0.0;
st[j]=0.0;
}
}
j=j+1;}
min=Operaciones.minimum(arr);
max=Operaciones.maximum(arr);
min2=Operaciones.minimum(st);
max2=Operaciones.maximum(st);
}
catch (NullPointerException e){
e.printStackTrace();
}
handle.post(proceso);
} }; t.start();
}
final Runnable proceso=new Runnable(){
public void run(){
//plot.redraw();
//plot2.redraw();
Toast.makeText(Grafica.this,
"Ya se ha cargado todo el array", Toast.LENGTH_LONG).show();
}
};
最佳答案
SPL 不是代表与绝对引用值相比的声压级吗?所以麦克风插在16bit精度的端口上我认为是可以的。 SNR 应约为 60dB,因此语音间隔约为 44dB。因此,当麦克风接收到任何声音时,信号应该上升(如果我记得是 16 位的话,信号应该上升约 104dB)。
SPL=20log(帕斯卡/2e-5)
关于java - 获取wav文件的声压级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24110333/
我是一名优秀的程序员,十分优秀!