Ich habe ein Problem mit meinem TextToSpeech. In der Tat, wenn ich meine Funktion "Son" (siehe unten) anrufe (wenn ich zum Beispiel klicke), muss ich 4 Sekunden auf den ersten Klick warten, bis die Stimme spricht, aber nach dem ersten Klick ist es sofort hörbar.Ich muss einige Sekunden warten, bis TextToSpeech spricht
Aber manchmal funktioniert es perfekt vom ersten Klick. Im Android-Monitor, ob es funktioniert oder nicht, kann ich sehen:
I/TextToSpeech: Sucessfully bound to com.google.android.tts
I/TextToSpeech: Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
I/TextToSpeech: Set up connection to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
Also gehe ich davon aus, dass es auf Android hängt aber ich hoffe, dass ich etwas tun kann, dass zu korrigieren ... Haben Sie eine Idee? Wenn Sie weitere Informationen benötigen, zögern Sie nicht zu fragen!
Danke Jungs!
Mein Code:
public void Son(final String texte_son){
t1=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR) {
t1.setLanguage(Locale.FRENCH);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ttsGreater21(texte_son);
} else {
ttsUnder20(texte_son);
}
}
}
});
}
@SuppressWarnings("deprecation")
private void ttsUnder20(String text) {
HashMap<String, String> map = new HashMap<>();
map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "MessageId");
t1.speak(text, TextToSpeech.QUEUE_FLUSH, map);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void ttsGreater21(String text) {
String utteranceId=this.hashCode() + "";
t1.speak(text, TextToSpeech.QUEUE_FLUSH, null, utteranceId);
}
Inded synthetisieren müssen, es war nutzlos um immer TextToSpeech zu erstellen. Vielen Dank ! Trotzdem habe ich immer noch mein Problem, auf das erste Sprechen zu warten. Hast du eine Idee, wie das zu korrigieren ist? – ValentinLoricourt
Ich kann einen Unterschied mit diesem Code sehen. Wenn ich lange genug warte (ungefähr 6 Sekunden, also ist es lang), bevor ich meinen ersten Klick mache, kommt die Stimme sofort raus. Mit meinem vorherigen Code ist Warten nutzlos. Ich weiß nicht, ob das helfen kann ... – ValentinLoricourt
Es braucht etwas Zeit, um den Dienst zu starten, die Schaltfläche inaktiv zu setzen, während tts nicht initialisiert ist, und dem Benutzer einen Fortschritt anzuzeigen, so etwas. –