Android连续语音识别:防止结局

时间:2019-01-12 05:24:35

标签: javascript java cordova-plugins speech-recognition

您如何在Android上录制和转录连续语音?

想要在移动(科尔多瓦)应用程序的Android中录制和转录语音。当认为语音已经完成时,如何强制Android语音识别API不停止录制?   尝试设置所有参数。似乎可以保证连续识别的参数(见下文)似乎不起作用,即使是在一堆值/组合中尝试时也是如此。无论我们尝试传递什么值,语音识别算法似乎都会在沉默约1-2秒后停止并返回。    下面设置了当前使用的一些参数。使用这些参数,语音识别会在静音1-2秒后停止。取消注释其他参数不能解决此问题。同样,尝试打开/关闭DICTATION_MODE也不起作用,使用打开/关闭部分结果也不能解决问题(因为识别仍然结束)。到目前为止,更改MILLIS参数的长度也未产生积极效果。

到目前为止,几个不同的可用的cordova语音识别插件以及对其进行编辑以更改基本参数的操作,都导致了相同的问题(如上所述)。

这是当前的cordova代码,摘自几个cordova语音插件之一。

    private void startRecognition() {

        final Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,lang);
        intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, "12000");
//        intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, "12000");
        intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, "12000");
        intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, "12000");
        intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, false);
        intent.putExtra("android.speech.extra.DICTATION_MODE", true);

        intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);

        Handler loopHandler = new Handler(Looper.getMainLooper());
        loopHandler.post(new Runnable() {

            @Override
            public void run() {
                recognizer.startListening(intent);
            }

        });

        PluginResult res = new PluginResult(PluginResult.Status.NO_RESULT);
        res.setKeepCallback(true);
        this.speechRecognizerCallbackContext.sendPluginResult(res);
    }

0 个答案:

没有答案