如何知道什么时候TTS完成?什么时候、TTS

2023-09-12 09:34:38 作者:侠骨柔情摧红颜

我实现在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.

解决方案 进口奥迪TT TTS降价优惠 天津万元促销

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