Aller au contenu

TextToSpeech (énonciation finie) [résolu]


Invité hardrocky

Recommended Posts

Invité hardrocky

Bonjour à tous.

Dans le but de savoir quand mon énonciation lors d'un TTS est finie, j'ai écrit cela à la fin du onInit en suivant la doc officielle.

tts.setOnUtteranceProgressListener(new UtteranceProgressListener()
{
@Override
public void onDone(String utteranceId)
{
Toast.makeText(getApplicationContext(), "Done", Toast.LENGTH_LONG).show();
}

@Override
public void onerror(String utteranceId)
{
}

@Override
public void onstart(String utteranceId)
{
Toast.makeText(getApplicationContext(), "Start", Toast.LENGTH_LONG).show();
}
});

Problème, ca ne marche pas. Une idée ?

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

2 choses:

LA première, comme je te l'ai dit sur Google+, tu dois préciser un paramètre lors de l'appel à speak:


public void say(String text2say)
{
HashMap<String, String> hm = new HashMap<String, String>();
hm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "toto");
this.talker.speak(text2say, TextToSpeech.QUEUE_ADD, hm);
}

Sans ça, le listener renseigné par setOnUtteranceProgressListener ne sera jamais appelé.

Ensuite, dans ton init du tts, tu renseignes comme tu l'a fais un listener. Par contre, ce listener ne s'execute pas dans une même thread, tu devras donc crer un runnable, que tu run sur le thread de l'ui, comme ceci:

@Override
public void onInit(int status)
{
this.talker.setOnUtteranceProgressListener(new UtteranceProgressListener()
{

@Override
public void onstart(String utteranceId)
{

}

@Override
public void onerror(String utteranceId)
{

}

@Override
public void onDone(final String utteranceId)
{
Runnable run = new Runnable()
{

@Override
public void run()
{
Toast.makeText(MainActivity.this, "Le speaker " + utteranceId + " a fini de parler", Toast.LENGTH_LONG).show();

}

};

MainActivity.this.runOnUiThread(run);

}
});

this.say("Hello World");

}

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...