如何知道什么时候TTS完成? [英] How to know when TTS is finished?
本文介绍了如何知道什么时候TTS完成?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我实现在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
这篇关于如何知道什么时候TTS完成?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文