我实现在Android上的交互式语音应答应用。我想知道如何确定何时 tts.speak()
功能做了交谈,所以我可以叫我的语音识别功能。
公共类TTSActivity扩展活动实现OnInitListener,OnUtteranceCompletedListener,... {
私人TextToSpeech MTTS;
...........
私人无效讲(文本字符串){
如果(文字!= NULL){
HashMap的<字符串,字符串> myHashAlarm =新的HashMap<字符串,字符串>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM,将String.valueOf(AudioManager.STREAM_ALARM));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,有些消息);
mTts.speak(文字,TextToSpeech.QUEUE_FLUSH,myHashAlarm);
}
}
// TTS初始化后激发
公共无效的OnInit(INT状态){
如果(状态== TextToSpeech.SUCCESS){
mTts.setOnUtteranceCompletedListener(本);
}
}
//这是回调
公共无效onUtteranceCompleted(字符串utteranceId){
Log.i(TAG,utteranceId); // utteranceId ==某个消息
}
...........
}
读 一个很好的教程
I'm implementing an Interactive Voice Response application on Android. I would like to know how to determine when the tts.speak()
function has done talking so I can call my speech recognizer function.
public class TTSActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener, ... {
private TextToSpeech mTts;
...........
private void speak(String text) {
if(text != null) {
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "SOME MESSAGE");
mTts.speak(text, TextToSpeech.QUEUE_FLUSH, myHashAlarm);
}
}
// Fired after TTS initialization
public void onInit(int status) {
if(status == TextToSpeech.SUCCESS) {
mTts.setOnUtteranceCompletedListener(this);
}
}
// It's callback
public void onUtteranceCompleted(String utteranceId) {
Log.i(TAG, utteranceId); //utteranceId == "SOME MESSAGE"
}
...........
}
Read A good tutorial