Jump to content

TextToSpeech (énonciation finie) [résolu]


Guest hardrocky

Recommended Posts

Guest 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

Link to comment
Share on other 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");

}

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...