Android中的语音活动检测

我正在编写一个类似于现有语音识别的应用程序,但会将声音数据发送到专有Web服务以执行语音识别部分。我使用标准的MediaRecord(AMR-NB编码),这似乎是语音识别的完美之选。这提供的唯一数据是通过getMaxAmplitude()方法的Amplitude。 我试图检测该人何时开始说话,以便当该人停止讲话约2秒钟时,我可以继续将声音数据发送到Web服务。现在我正在使用振幅的阈值,如果它超过一个值(即1500),那么我假设这个人说话。我担心的是幅度水平可能因设备而异(即Nexus One v Droid),因此我正在寻找一种更为标准的方法,可以从幅度值中得出。 附: 我查看了图形幅度,但它没有提供一种方法来只用振幅。     
已邀请:
那么,这可能没什么帮助,但是如何通过测量应用程序的设备麦克风捕获的偏移噪声来开始,并基于此动态应用阈值?这样,您可以使其适应不同设备的麦克风以及用户在给定时间使用的环境。     
1500太低了。测量振幅的变化会更好。 但是,它仍会导致未命中检测。 我担心解决这个问题的唯一方法是找出如何识别简单的单词或音调,而不是简单地检测噪音。     
大多数智能手机都配有接近传感器。 Android拥有使用这些传感器的API。这对于您描述的工作就足够了。当用户将手机靠近他的耳朵时,您可以编写应用程序以开始录制。它应该很容易。 Android的传感器类     

要回复问题请先登录注册