录制音频,但如果它在 android 上有数据,请保存它

record audio but save it if it has data on android

我正在 android 上录制音频,但我现在面临的主要问题是,如果音频中没有数据(就像用户什么也没说一样),我不想保存音频文件.我可以保存它然后检查音频文件的时间或长度然后删除它,但我想在存储文件之前检查它以减少工作并提高性能。

您可以通过以下方式在 MediaRecorder 上访问语音流的振幅:

public double getAmplitude() {
    if (recorder != null)
        return  recorder.getMaxAmplitude();
    else
        return 0;
}

然后你可以检查范围来检测音频上是否有任何有价值的数据(比如谈话)

根据环境噪音,检查振幅可能不够。您可能需要对音频进行快速傅里叶变换以分离频率。这可以通过最少量的缓冲来完成。

观看 video for a visual explanation of what a Fourrier Transform is. There is also 此视频。这实际上是一个超级有趣的话题。

无论如何,该书的以下 book. Here is the accompanying github site 中都有音频可视化器的示例代码。它还可能包含一些您可能会觉得有用的其他与音频相关的代码示例。