我正在使用Dialogflow开发应用。
该应用程序工作正常,除了听众。我希望用户能够从屏幕上显示的单词列表中大声朗读。
目前,当用户单击要记录的按钮时,单词列表会在监听器未准备好时显示(准备好读取)。在下一个单词显示之前,每个单词显示2秒。
在下一个单词显示之前,有没有办法让单词显示,直到录音完成?
答案 0 :(得分:0)
有很多方法可以解决这个问题。
使用计时器 你可以设置某种倒计时器,它可以为用户倒计时。这篇文章更多地讨论了这个想法: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();
使用它来控制识别器在停止前需要听到的静音量。有两个参数可以在这种情况下工作
EXTRA_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
或EXTRA_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);