android-SpeechRecognizer在第一个结果后没有听到

android-SpeechRecognizer在第一个结果后没有听到,第1张

概述我正在Android中使用SpeechRecognizer和RecognizerIntent来实现语音识别.我的目的是在语音识别器在屏幕上显示结果后重新开始收听语音.为此,我使用以下代码.问题是,第一次运行正常并显示结果,但是在第二次开始监听之后(从onResults方法调用),由于某种原因,它听不到声音.然后,它给

我正在Android中使用SpeechRecognizer和RecognizerIntent来实现语音识别.我的目的是在语音识别器在屏幕上显示结果后重新开始收听语音.为此,我使用以下代码.

问题是,第一次运行正常并显示结果,但是在第二次开始监听之后(从onResults方法调用),由于某种原因,它听不到声音.然后,它给出一个ERROR_SPEECH_TIMEOUT错误,这意味着没有语音输入.在Logcat上,我可以看到它进入onReadyForSpeech(),但不知何故,它听不到我在说什么.

有谁知道为什么会这样?返回结果后是否继续监听?再次显式调用startListening是否正确?

public class VR extends Activity implements RecognitionListener {    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;    private TextVIEw vrtext;    private SpeechRecognizer speech = null;    private Intent intent;    private String TAG = "VR";    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.vr);        vrtext = (TextVIEw) findVIEwByID(R.ID.vrtext);      }    @OverrIDe    public voID onResume()    {        Listen();        super.onResume();    }    private voID Listen()    {        speech = SpeechRecognizer.createSpeechRecognizer(this);        speech.setRecognitionListener(this);        intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");        intent.putExtra(RecognizerIntent.EXTRA_CALliNG_PACKAGE, this.getPackagename());        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);        intent.putExtra(RecognizerIntent.EXTRA_MAX_RESulTS, 3);        speech.startListening(intent);    }    @OverrIDe    protected voID onPause() {        super.onPause();        // Todo auto-generated method stub        if(speech != null)        {            speech.destroy();            Log.i(TAG,"destroy");        }    }    public voID onBeginningOfSpeech() {        // Todo auto-generated method stub        Log.i(TAG, "onbeginningofspeech");    }    public voID onBufferReceived(byte[] arg0) {        // Todo auto-generated method stub        //Log.i(TAG, "onbufferreceived");    }    public voID onEndOfSpeech() {        // Todo auto-generated method stub        Log.i(TAG, "onendofspeech");    }    public voID one rror(int arg0) {        // Todo auto-generated method stub        Log.i(TAG, "error code: " + arg0);    }    public voID onEvent(int arg0, Bundle arg1) {        // Todo auto-generated method stub        Log.i(TAG, "onevent");    }    public voID onPartialResults(Bundle arg0) {        // Todo auto-generated method stub        Log.i(TAG, "onpartialresults");    }    public voID onReadyForSpeech(Bundle arg0) {        // Todo auto-generated method stub        Log.i(TAG, "onreadyforspeech");    }    public voID onResults(Bundle arg0) {        // Todo auto-generated method stub        Log.i(TAG, "onresults");        ArrayList<String> matches = arg0.getStringArrayList(SpeechRecognizer.RESulTS_RECOGNITION);        String s = "";        for (String result:matches)            s += result + "\n";        vrtext.setText(s);        speech.startListening(intent);    }    public voID onRmsChanged(float arg0) {        // Todo auto-generated method stub        //Log.i(TAG, "onrmschanged");    }}

解决方法:

“返回结果后,它继续听吗?”
没有

“再次显式调用startListening是否正确?”
是.

另外,如果您希望继续进行识别,则在发生以下错误时应再次调用startListening:

@OverrIDepublic voID one rror(int errorCode){    if ((errorCode == SpeechRecognizer.ERROR_NO_MATCH)            || (errorCode == SpeechRecognizer.ERROR_SPEECH_TIMEOUT))    {        Log.d(TAG, "dIDn't recognize anything");        // keep going        recognizeSpeechDirectly();    }    else    {        Log.d(TAG,                "Failed "                        + SpeechRecognitionUtil                                .diagnoseErrorCode(errorCode));    }}

检出我的代码,以使用SpeechRecognizer来检测某个口语单词here.

总结

以上是内存溢出为你收集整理的android-SpeechRecognizer在第一个结果后没有听到全部内容,希望文章能够帮你解决android-SpeechRecognizer在第一个结果后没有听到所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1073452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存