Java 如何在tts通话期间停止语音识别?
我正在制作一个同时使用语音识别和tts的应用程序。Java 如何在tts通话期间停止语音识别?,java,android,text-to-speech,voice-recognition,Java,Android,Text To Speech,Voice Recognition,我正在制作一个同时使用语音识别和tts的应用程序。 在我的应用程序中,我一直在使用语音识别,问题是当我使用tts时,语音识别会听到应用程序所说的话。如何在tts讲话期间停止语音识别,然后在tts结束后启动语音识别?我可以用另一种方法解决这个问题吗?实现onutternancecompletedlistener或utternanceprogresslistener并在onutternancecompleted或onDone中调用startListening,我可以用异步任务解决它 但我现在不能启动
在我的应用程序中,我一直在使用语音识别,问题是当我使用tts时,语音识别会听到应用程序所说的话。如何在tts讲话期间停止语音识别,然后在tts结束后启动语音识别?我可以用另一种方法解决这个问题吗?实现
onutternancecompletedlistener
或utternanceprogresslistener
并在onutternancecompleted
或onDone中调用startListening
,我可以用异步任务解决它
但我现在不能启动语音识别
private class MiTareaAsincronaDialog extends AsyncTask<Void, Integer, Boolean> {
@Override
protected Boolean doInBackground(Void... params)
{
String words = "Esto es una prueba del texto pasado a oral";
speakWords(words);
while(myTTS.isSpeaking() == true)
{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return true;
}
@Override
protected void onProgressUpdate(Integer... values) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(Boolean result) {
Toast.makeText(MainActivity.this, "Tarea finalizada!",
Toast.LENGTH_SHORT).show();
}
@Override
protected void onCancelled()
{
Toast.makeText(MainActivity.this, "Tarea cancelada!",
Toast.LENGTH_SHORT).show();
}
}
私有类MitareAssincronDialog扩展了异步任务{
@凌驾
受保护的布尔doInBackground(Void…params)
{
String words=“Esto es una prueba del texto pasado a oral”;
说单词(单词);
while(myTTS.isSpeaking()==true)
{
试一试{
睡眠(100);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
返回true;
}
@凌驾
受保护的void onProgressUpdate(整型…值){
}
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的void onPostExecute(布尔结果){
Toast.makeText(MainActivity.this,“Tarea finalizada!”,
吐司。长度(短)。show();
}
@凌驾
受保护的void onCancelled()
{
Toast.makeText(MainActivity.this,“Tarea cancelada!”,
吐司。长度(短)。show();
}
}
常识要求您在tts忙时停止语音识别。也许你可以解释一下你用来启动语音识别的代码?否则,恐怕没有人能回答这个问题……嗨,谢谢你的回答。我已经找到了一些教程,展示了如何做到这一点,但它不起作用,也许我用错了方法。只需发布不起作用的代码。在调用speak以调用OnTerranceCompleted或OnOne时,您必须传入一个utranceId。