dialogflow startListening()

时间:2018-05-21 13:50:51

标签: java android dialogflow

我正在使用Dialogflow开发应用。

该应用程序工作正常,除了听众。我希望用户能够从屏幕上显示的单词列表中大声朗读。

目前,当用户单击要记录的按钮时,单词列表会在监听器未准备好时显示(准备好读取)。在下一个单词显示之前,每个单词显示2秒。

在下一个单词显示之前,有没有办法让单词显示,直到录音完成?

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。

  1. 使用计时器 你可以设置某种倒计时器,它可以为用户倒计时。这篇文章更多地讨论了这个想法:SpeechRecognizer Time Limit。 在该帖子中,建议如下:

      

    你最好的选择是连接某种计时器,类似于   CountDownTimer:

     yourSpeechListener.startListening(yourRecognizerIntent);
     new CountDownTimer(2000, 1000) {
    
     public void onTick(long millisUntilFinished) {
         //do nothing, just let it tick
     }
    
     public void onFinish() {
         yourSpeechListener.stopListening();
     }   }.start();
    
  2. 您可以使用EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS识别器内容

  3. 使用它来控制识别器在停止前需要听到的静音量。有两个参数可以在这种情况下工作

    EXTRA_INPUT_COMPLETE_SILENCE_LENGTH_MILLISEXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

    两者的作用几乎相同,如果有100ms的完全静音或者可能是200ms,那么识别器将停止监听并随后处理刚刚听到的单词。例如:

            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);          
            intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 2000000);   
    

            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);          
            intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 2000000);