1

我想构建一个 android 应用程序,它可以识别我的声音,将其转换为文本,并显示我刚刚在祝酒词中所说的话。我可以通过使用将为我启动语音识别器的按钮来做到这一点。但现在我只想让它在我的声音的基础上工作。

该应用程序应触发语音识别器并仅在我开始讲话时才开始听我讲话,并且在感觉到静音时应停止聆听。就像会说话的汤姆应用程序的功能一样。它在那里记录声音,但我想使用语音识别器识别它。像这样的一些事情:

if(no silense)
   Launch Recognizer
else if(silence)
   Stop Recognizer
Show toast

主要问题是我如何在启动语音识别器之前感知用户是否在说话。有什么方法可以感知噪音强度..??

其次,有没有办法在后台启动语音识别器......??

如果我可以在后台服务中检测到音频信号(有人开始说话),是否可以立即启动语音识别器来识别语音。

4

2 回答 2

2

大多数语音识别器已经有一个端点来检测语音的开头和结尾。端点通常会尝试读取环境噪声级别以确定静音的基线并调整信噪比。但是,如果输入噪声电平发生变化,它可能会触发终结者的讲话开始。如果一直用敏感的麦克风收听,终结者可能还会接听在你旁边说话的人,而不是你。

因此,使用语音按钮是一种很好的做法,可以在您希望讲话时进行宣布。试图让识别器一直在听可能不是您想要做的,或者应该留给研究人员。

于 2012-06-15T19:54:24.783 回答
1

好的,我已经弄清楚了。我已经mediaRecorder为此使用了类。当应用程序启动时,我开始使用录制音频mediaRecoder(或者您可以提供一个按钮来启动和停止整个过程)。我检查 mediaRecorder 录制的音频的幅度。如果幅度超过预定义的阈值,我会暂停记录并启动Voice Recognition activity. 在OnActivityResult我再次恢复录音机。

if(mRecorder != null){
        int i= mRecorder.getMaxAmplitude();   // Getting amplitude 
        Log.d("AMPL : ", String.valueOf(i));

        if(i>20000){      // If amplitude is more than 20000
            onRecord(false);    //Stop recording before launching recognizer
            Intent intent=new Intent(this,VoiceRecognizer.class);   //Launch recognizer activity
            startActivityForResult(intent, 12112);
        }

或者:您也可以使用SO 帖子中提到的RecognitionListener接口。

于 2012-06-21T15:15:13.440 回答