2014-05-06 10 views
6

mi hanno dato un testo in mytts.speak("hi hello hi",parameter,parameter...);Come dare pausa o divario tra le parole in TTS in Android

Ma le parole sono dette continuo senza intervalli o mettere in pausa, voglio fornire qualche intervallo di tempo tra le parole per maggiore chiarezza .

Come posso ottenere questo risultato?

+0

Quanto tempo divario vuoi di più? – Kedarnath

+0

1 secondo lo farà.In emulatore dando '/' cud ottenere questo, ma quando lo eseguo su dispositivo sumsung, il comportamento è cambiato. – SMS

+0

concordano dispositivi diversi, diverso comportamento di TTS. Anche la qualità della voce di un altro è diversa. – Kedarnath

risposta

0

È possibile suddividere la frase in parole e pronunciarle in un ciclo for in una nuova discussione. Dividere la frase ti darà un po 'di ritardo, ma se vuoi uno più lungo puoi lavorare sul thread e farli aspettare. Sarebbe qualcosa di simile:

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

Fammi sapere se ti aiuta . – Giuseppe

+0

Che cos'è "TTS_ID"? – HrishikeshKulkarni

+0

È un identificativo definito dallo sviluppatore. Vedere il sito ufficiale https://developer.android.com/reference/android/speech/tts/TextToSpeech.html#speak(java.lang.CharSequence, int, android.os.Bundle, java.lang.String). – Giuseppe

2

Se ho capito bene la tua domanda, this filo ha la risposta (da Rushi).

Basta aggiungere un ritardo nella coda TTS suddividendo la corda ed il ciclo sopra i frammenti tramite un ciclo for:

mytts.speak(snippet, QUEUE_ADD, null); 
mytts.playSilentUtterance(2000, QUEUE_ADD, null); 
Problemi correlati