2015-01-15 21 views
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秒

回答

0

來不及回答卻是,TTS就像是一個單例。 5 - 8秒是lanyguage加載。因此,如果在每次講話之前使用tts.setLanguage()創建1個實例,則tts的2個實例是相同的。

相關問題