3
我需要在Android上使用TTS來同時說兩種語言:EN中的一個短語和DE中的另一個短語。爲此,我提供了兩個不同的TextToSpeech.OnInitListener實現。一切工作到目前爲止。然後我試圖講他們的輔助功能:當兩種語言同時使用時,TextToSpeech隊列的性能較差
// 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我發出來TTS相關EN-US初始化,而DE被髮射到用de-de初始化的TTS)。有關性能改進的任何建議?
UPDATE 我注意到,沉默的時間推德語單詞和生成的聲音大約是8秒,當英文單詞大約爲2秒