0

我正在编写一个应用程序,其行为类似于现有的语音识别,但会将声音数据发送到专有的 Web 服务以执行语音识别部分。我正在使用标准的 MediaRecord(它是 AMR-NB 编码的),它似乎非常适合语音识别。唯一提供的数据是通过getMaxAmplitude()方法提供的 Amplitude。

我正在尝试检测此人何时开始说话,以便当此人停止说话约 2 秒钟时,我可以继续将声音数据发送到 Web 服务。现在我正在使用一个幅度阈值,如果它超过一个值(即 1500),那么我假设这个人正在说话。我担心的是幅度级别可能因设备(即 Nexus One v Droid)而异,因此我正在寻找一种更标准的方法,可以从幅度值中得出。

PS我查看了graphing-amplitude,但它没有提供仅使用幅度的方法。

4

3 回答 3

0

1500这个数字太低了。测量幅度的变化会更好。但是,它仍然会导致漏检。

我担心解决这个问题的唯一方法是弄清楚如何识别一个简单的单词或音调,而不是简单地检测噪音。

于 2010-10-18T11:06:45.553 回答
0

好吧,这可能没有太大帮助,但如何从测量应用程序的设备麦克风捕获的偏移噪声开始,并基于此动态应用阈值?这样,您可以使其适应不同设备的麦克风以及用户在给定时间使用它的环境。

于 2010-10-16T00:16:28.340 回答
-5

大多数智能手机都带有接近传感器。Android 有使用这些传感器的 API。这对于您描述的工作来说已经足够了。当用户将手机靠近耳朵时,您可以对应用程序进行编码以开始录制。这应该很容易。

安卓传感器类

于 2010-10-16T00:30:39.810 回答