TTS-UtteranceProgressListener nicht genannt
Ich will nicht all meine code hier, so bin ich gerade dabei, die relevanten Stücke. Wenn Sie mehr benötigen, fühlen Sie sich frei, zu Fragen.
Ich bin mit Text-To-Speech (TTS), die dazu führt, eine Rede, die Zuhörer, nachdem Sie eine Frage gestellt... ich fand durch Log-Ausgaben, die TTS ist onInit aufgerufen, aber die UtteranceProgressListener nicht und ich kann nicht herausfinden, warum. Jede Hilfe ist willkommen.
//---Initialize TTS variables---
//Implement Text to speech feature
tts = new TextToSpeech(this, new ttsInitListener());
//set listener to the TTS engine
tts.setOnUtteranceProgressListener(new ttsUtteranceListener());
if (!tts.isSpeaking()) {
tts.speak("Speak to me", TextToSpeech.QUEUE_FLUSH, null);
}
//--- TEXT TO SPEECH && SPEECH TO TEXT METHODS ---
class ttsInitListener implements OnInitListener {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
tts.setLanguage(Locale.getDefault());
} else {
tts = null;
Toast.makeText(mContext, "Failed to initialize TTS engine.",
Toast.LENGTH_SHORT).show();
}
}
}
class ttsUtteranceListener extends UtteranceProgressListener {
@Override
public void onDone(String utteranceId) {
if (processStart) {
speech.startListening(intent);
} else {
...
}
}
@Override
public void onError(String utteranceId) {
}
@Override
public void onStart(String utteranceId) {
}
}
Ich Hinzugefügt-log-Ausgänge, um alle meine TTS und Spracherkennung Methoden. UtteranceProgressListener die onStart gar nicht aufgerufen wird:
11-30 00:38:37.299: D/OpenGLRenderer(15842): Enabling debug mode 0
11-30 00:38:39.782: I/TextToSpeech(15842): Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
11-30 00:38:39.782: I/TextToSpeech(15842): Set up connection to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
11-30 00:38:39.782: D/LOOK AT ME!!!(15842): ttsInitListener - onInit
- müssen gemacht eine logcat Ausgabe auf äußerung Fortschritts-listener in onstart
- Ich habe gerade gestoppt. Wird wieder in etwa 20 Minuten, werde ich hinzufügen, und fügen Sie die logs dann
- Ich Hinzugefügt die Ausgabe der OP
Du musst angemeldet sein, um einen Kommentar abzugeben.
die Antwort gefunden...
Stellt sich heraus, dass die TTS-Ressourcen, die ich online gefunden haben, wurden mit einem einzigen TTS string source, also der Dritte parameter im tts.spreche(String text, int queueMode, HashMap params) wurde auf null gesetzt.
niemanden mit diesem Problem in der Zukunft:
wenn Sie den Dritten Parameter auf null, gibt es keine ID für die UtteranceProgressListener zu verfolgen. Das Update war das erstellen und initialisieren eine hashmap, dann hinzufügen, um das enthaltene array für jedes neue TTS mit einer neuen ID zu verfolgen. Hier ist der code:
dann, vor dem Aufruf von tts.sprechen...
dann können Sie anrufen und sprechen Sie mit allen params...
Anhängen zu WizardKnight die gute Antwort:
Die neue API zieht ein Bündel, so ersetzen Sie die HashMap mit einem Bündel
dann, wenn Sie die speak-Aufruf
Der Schlüssel ist die Verwendung der ID in der Anrufs sprechen. Sie können steckte es in das Bundle, aber es wird nichts mehr tun für Sie. Es hat in der speak-Aufruf zum auslösen der Zuhörer.
Habe ich eine WLAN-Lösung für die Erfassung Wetter tts hat fertig gesprochen.
Schritt 1: Erstellen Sie diese Klasse in Ihrem code.
Schritt 2: Rufen Sie beim Aufruf von tts.sprechen(...)