文本转语音 (TTS) 延迟 3 秒朗读文本

Text To Speech (TTS) delays by 3 seconds to speak text

我在我的 android 应用程序中使用 TextToSpeak 功能并意识到它在说出实际单词之前占用了一些延迟。

onCreate(){
 textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
        @Override
        public void onInit(int status) {
            if (status != TextToSpeech.ERROR) {
                textToSpeech.setLanguage(Locale.UK);
            }
        }
    });

 textToSpeech.speak("Hello World", TextToSpeech.QUEUE_FLUSH, null, null);
 performAction();
}

performAction(){…}

如您所见,我在使用 TTS .speak() 方法后立即调用 performAction 方法,但是 3 秒的延迟导致一些不准确。

如何触发 performAction 方法在说出单词时立即被调用。

这可能不是最有效的方法,我遇到了与此类似的问题并使用 Handler 解决了它。

onCreate(){
  textToSpeech = new TextToSpeech(getApplicationContext(), new 
  TextToSpeech.OnInitListener() {
    @Override
    public void onInit(int status) {
        if (status != TextToSpeech.ERROR) {
            textToSpeech.setLanguage(Locale.UK);
        }
    }
  });

  textToSpeech.speak("Hello World", TextToSpeech.QUEUE_FLUSH, null, null);
  checkIfTTSIsSpeaking();
}

checkIfTTSIsSpeaking() {
    new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
      if(textToSpeech.isSpeaking()){
         performAction();
      }else{
         checkIfTTSIsSpeaking();
      }
     }
    },10);
}


performAction(){…}

TextToSpeech 引擎有一个方法 isSpeaking(),其中 returns 一个布尔值,是否正在朗读单词。

TextToSpeech reference