2014-05-06 49 views
6

我已經給了一個文字mytts.speak("hi hello hi",parameter,parameter...);如何給詞與詞之間的停頓或間隙在TTS在Android中

,但沒有任何差距不斷說的話或暫停,我想更加清晰提供單詞之間有一段時間間隔。

我怎麼能做到這一點?

+0

多少時間間隔你想:

只要通過一個for循環分割在片段串和循環中增加延遲到TTS隊列? – Kedarnath

+0

1秒鐘就可以做到了。在模擬器中給出'/'我cud實現了這個,但是當我在sumsung設備上運行它時,行爲發生了改變。 – SMS

+0

同意不同的設備,TTS的不同行爲。甚至有時候,語音質量也是不同的。 – Kedarnath

回答

0

你可以用單詞分開你的句子並在一個新線程的for循環中說出它們。將短語拆分會給你一點點延遲,但如果你想要更長的話,你可以在線程上工作並讓它們等待。 這將是這樣的:

final Handler h = new Handler(); 
String[] words = text.split(" "); 
for (final CharSequence word : words) { 
    Runnable t = new Thread() { 
     @Override 
     public void run() { 
      m_TTS.speak(word, TextToSpeech.QUEUE_ADD, null, "TTS_ID"); 

     } 
    }; 
    h.postDelayed(t, 1000); 
} 
+0

請讓我知道它是否可以幫助您。 – Giuseppe

+0

什麼是「TTS_ID」? – HrishikeshKulkarni

+0

這是由開發人員定義的標識符。請參閱官方的https://developer.android.com/reference/android/speech/tts/TextToSpeech.html#speak(java.lang.CharSequence,int,android.os.Bundle,java.lang.String)。 – Giuseppe

2

如果我正確理解你的問題,this線程都有答案(由如是)。

mytts.speak(snippet, QUEUE_ADD, null); 
mytts.playSilentUtterance(2000, QUEUE_ADD, null); 
相關問題