我需要在Android上使用TTS同时说两种语言:EN中的一个短语和DE中的另一个短语。为此,我提供了TextToSpeech.OnInitListener的两种不同实现。到目前为止一切都有效。然后我试着说出它们,辅助功能:
// wait for speaker availability
public boolean isSpeakingWait(tts) {
int N = 50;
int i = 0;
while( tts.isSpeaking() && i < N ) {
i--;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return i == 50;
}
并呼吁发言:
isSpeakWait(ttsEN);
ttsEN.speak(strEN, TextToSpeech.QUEUE_FLUSH, null);
isSpeakWait(ttsDE);
ttsDE.speak(strDE, TextToSpeech.QUEUE_FLUSH, null);
看起来在推入队列之后我可能会在声音之前等待几秒钟,而en和de调用都会发生这种情况。
有时我可以在EN和DE短语之间看到以下错误:
W/TextToSpeech﹕ isSpeaking failed: not bound to TTS engine
W/TextToSpeech﹕ speak failed: not bound to TTS engine
我想,问题在于改变TTS的语言(因为EN我发射到用en-us初始化的TTS,而DE被发射到用de-de初始化的TTS)。有关提高绩效的任何建议吗?
更新 我注意到推动德语单词和生成语音后的静音时间大约是8秒,而英语单词大约是2秒
答案 0 :(得分:0)
回答太迟了,但是,是的,TTS就像一个单身人士.5- 8秒是laтguage加载。因此,如果在每次发言之前有1个带tts.setLanguage()的实例,那么tts的2个实例是相同的。