Android AudioRecord PCM to get DB



So far:

byte data[] = new byte[recBufSize];
read = audioRecord.read(data, 0, recBufSize);
long v = 0;
for (int i = 0; i < data.length; i++) {
    v += Math.abs(data[i]);
}
double mean = v / (double) read;
final double volume = 20 * Math.log10(mean);

有些设备工作正常,但在其他设备上运行时,v, meanvolume的值没有变化。

我想获得一个值来确定用户是否在说话。

这个演示一台设备上面可以如期运行,卷在不说话和说话时候波动比较大,但是再另外一些设备上基本上就没有什么波动。

翻译:

在这个演示中,当它在一个设备上运行时,音量要么静音要么非常大,但在不同的设备上,基本上没有其他波动

如果没有声音,则变量("v", "mean", " volume ")等于零。我猜你没有得到录音的许可。

首先,请检查您是否在Manifest文件中有录音权限。

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

如果测试设备运行Marshmallow,您需要在运行时请求权限:https://developer.android.com/training/permissions/requesting.html

相关内容

  • 没有找到相关文章

最新更新