Java 语音对文本和文本对语音 activityresult上受保护的void(int-requestCode、int-resultCode、Intent-data){ super.onActivityResult(请求代码、结果代码、数据); 开关(请求代码){ 案例请求代码语音输入:{ if(resultCode==RESULT\u OK&&null!=数据){ ArrayList结果=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果); k=0; 对于(int i=0;i0) tts.speak(“买了2个香蕉”,TextToSpeech.QUEUE\u FLUSH,null); } } 打破 } } }
我试着做点什么,而且从演讲到文本的效果很好。我现在从谷歌那里得到了所有的可能性,但当我想让它相应地说和做一些事情时(实际上是创建一个命令) 它不起作用 k表示一个索引,表示单词“X”(在另一种语言中,这就是为什么我将X而不是单词)存在于结果数组列表中的次数。 如果k大于0,我希望动作发生Java 语音对文本和文本对语音 activityresult上受保护的void(int-requestCode、int-resultCode、Intent-data){ super.onActivityResult(请求代码、结果代码、数据); 开关(请求代码){ 案例请求代码语音输入:{ if(resultCode==RESULT\u OK&&null!=数据){ ArrayList结果=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果); k=0; 对于(int i=0;i0) tts.speak(“买了2个香蕉”,TextToSpeech.QUEUE\u FLUSH,null); } } 打破 } } },java,android,text-to-speech,Java,Android,Text To Speech,我试着做点什么,而且从演讲到文本的效果很好。我现在从谷歌那里得到了所有的可能性,但当我想让它相应地说和做一些事情时(实际上是创建一个命令) 它不起作用 k表示一个索引,表示单词“X”(在另一种语言中,这就是为什么我将X而不是单词)存在于结果数组列表中的次数。 如果k大于0,我希望动作发生 希望可以理解。为什么要通过getText()检查null,而不是直接从字符串检查null?由于文本之间有逗号,它将始终返回true。您初始化了tts吗?可能您的语言不受支持。@ShashankMishra我初始
希望可以理解。为什么要通过getText()检查null,而不是直接从字符串检查null?由于文本之间有逗号,它将始终返回true。您初始化了tts吗?可能您的语言不受支持。@ShashankMishra我初始化了tts。该语言支持从语音到文本的转换,所以当我想让它说话时,我会用英语来做。然后试试调试。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
k = 0;
for(int i=0;i<result.size();i++){
if(result.get(i).contains("X")) {
k+=1;
}
}
tv.setText(result.toString()+","+k);
if(tv.getText()!=null){
if(k>0)
tts.speak("bought 2 bananas",TextToSpeech.QUEUE_FLUSH,null);
}
}
break;
}
}
}