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