SpeechRecognizer突然没有脱机工作

时间:2015-05-12 19:40:54

标签: android speech-recognition

SpeechRecognizer工作了很长时间,突然它无法正常工作现在没有检测到任何东西..示例代码是这样的。当它在线时它工作正常但不能脱机,我在任何地方都遗漏了什么吗?

    SpeechRecognizer speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
    speechRecognizer.setRecognitionListener(new RecognitionListener() {
        @Override
        public void onReadyForSpeech(Bundle params) {

        }

        @Override
        public void onBeginningOfSpeech() {

        }

        @Override
        public void onRmsChanged(float rmsdB) {

        }

        @Override
        public void onBufferReceived(byte[] buffer) {

        }

        @Override
        public void onEndOfSpeech() {
            //speechRecognizer.stopListening();
        }

        @Override
        public void onError(int error) {

        }

        @Override
        public void onResults(Bundle results) {
            List<String> data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
            String full = data.get(0);
            System.out.println(full);
        }

        @Override
        public void onPartialResults(Bundle partialResults) {

        }

        @Override
        public void onEvent(int eventType, Bundle params) {

        }
    });
    speechRecognizer.startListening(i);`

2 个答案:

答案 0 :(得分:3)

语音识别仅在默认情况下在线使用。识别过程需要大量内存分配,如果您需要离线引擎,则应避免使用默认的Android识别服务。

看看这个post

答案 1 :(得分:0)

使用google的api进行离线识别仅适用于运行Jellybean的设备,即使要使用Jellybean,也必须在目标设备上安装该语言的软件包。

如果您定位所有操作系统版本,我建议您使用CMUSphinx。它脱机工作并支持连续语音识别。您可以尝试演示here