我在我的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方法。
答案 0 :(得分:0)
这可能不是最有效的方法,但是我有一个与此类似的问题,并使用处理程序来解决。
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()
,该方法返回一个布尔值,无论是否说出该单词。