针对特定声音音调的Android语音识别

时间:2011-03-24 06:04:41

标签: android api

我们可以使用Android语音识别API检测“尖叫”或“响亮的声音”等吗? 或者是否有其他软件/第三方工具可以做同样的事情?

谢谢, KAPS

2 个答案:

答案 0 :(得分:4)

你的意思是实现一个拍板?

无需使用花哨的数学或语音识别API。只需使用MediaRecorder及其getMaxAmplitute()方法。

以下是您需要的一些代码。 算法,记录一段时间,然后测量放大差异。如果它很大,那么用户可能发出响亮的声音。

public void recordClap()
{
    recorder.start();

    int startAmplitude = recorder.getMaxAmplitude();
    Log.d(D_LOG, "starting amplitude: " + startAmplitude);
boolean ampDiff;
do
{
    Log.d(D_LOG, "waiting while taking in input");
    waitSome();
    int finishAmplitude = 0;
    try
    {
        finishAmplitude = recorder.getMaxAmplitude();
    }
    catch (RuntimeException re)
    {
        Log.e(D_LOG, "unable to get the max amplitude " + re);
    }
    ampDiff = checkAmplitude(startAmplitude, finishAmplitude);
    Log.d(D_LOG, "finishing amp: " + finishAmplitude + " difference: " + ampDiff );
}
while (!ampDiff && recorder.isRecording());

}

private boolean checkAmplitude(int startAmplitude, int finishAmplitude)
{
    int ampDiff = finishAmplitude - startAmplitude;
    Log.d(D_LOG, "amplitude difference " + ampDiff);
    return (ampDiff >= 10000);
}

答案 1 :(得分:2)

如果我试图检测到尖叫或响亮的声音,我只会寻找通过麦克风发出的声音的高均方根。我想你可以尝试训练一个语音识别系统来识别一个尖叫声,但它看起来有些过分。