文本转语音 (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 一个布尔值,是否正在朗读单词。
我在我的 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 一个布尔值,是否正在朗读单词。