我正在编写一个将与现有语音识别相似的应用程序,但会将声音数据发送到专有Web服务以执行语音识别部分。我使用的是标准的Mediarecord(已编码AMR-NB),这似乎是语音识别的完美选择。此提供的唯一数据是通过 getMaxAmplitude() 方法。

我正在尝试检测该人何时开始说话,以便当该人停止交谈大约2秒钟时,我可以继续将声音数据发送到Web服务。现在,我正在使用一个阈值来振幅,如果它超出了一个值(即1500),那么我假设该人在说话。我关心的是,振幅水平可能因设备而异(即一个nexus One V droid),因此我正在寻找一种可以从幅度值得出的更标准的方法。

PS我看了看 图形振幅 但这并不能仅仅用振幅提供一种方法。

有帮助吗?

解决方案

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

其他提示

1500个数字太低。测量振幅的变化将更好地工作。但是,这仍然会导致错过检测。

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

大多数智能手机都带有接近传感器。 Android具有用于使用这些传感器的API。这足以适合您描述的工作。当用户将手机移到耳朵附近时,您可以编码应用程序以开始录制。这应该很容易。

Android传感器类

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top