语音识别几秒钟后停止收听

时间:2012-12-02 14:50:01

标签: android speech-recognition

我尝试了很多但却找不到,所以我希望你能帮助我。

我正在尝试构建自己的语音识别应用程序,它不显示对话框。

我已经编写了一些代码并且它工作得很好,但我的问题是识别器似乎在LogCat中没有任何错误或其他消息停止。

一个奇怪的事实是,“RecognitionListener”接口中的“onRmsChanged”仍然一直被调用,但不再调用“onBeginningOfSpeech”。

如果我在语音识别开始后发言,那就有效了。 但如果我等了几秒钟就没有了。

使用的API是4.0.3,我使用版本4.2.1将其安装在我的Nexus 7上

如果你有一些好主意,我真的很感激。

一些代码段:

我的课程:

class SpeechListener implements RecognitionListener
{

    public void onBeginningOfSpeech() 
    {
        Log.d(TAG, "onBeginningOfSpeech()");            
    }

    public void onBufferReceived(byte[] buffer) 
    {
        Log.d(TAG, "onBufferReceived()");
    }

    public void onEndOfSpeech() 
    {
        Log.d(TAG, "onEndOfSpeech()");

    }

    public void onError(int error) 
    {
        Log.d(TAG, "onError(): " + error);

        if(error == SpeechRecognizer.ERROR_NO_MATCH)
        {

        }
        else if(error == SpeechRecognizer.ERROR_SPEECH_TIMEOUT)
        {

        }
        else
        {
            tvOutput.setText("Error: " + error);    
        }

    }

    public void onEvent(int eventType, Bundle params) 
    {
        Log.d(TAG, "onEvent()");
    }

    public void onPartialResults(Bundle partialResults) 
    {
        Log.d(TAG, "onPartialResults()");
    }

    public void onReadyForSpeech(Bundle params) 
    {
        Log.d(TAG, "onReadyForSpeech()");
    }

    public void onResults(Bundle results) 
    {
        Log.d(TAG, "onResults(): " + results);

        String str = new String();

        ArrayList<String> data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);

        for(int i = 0; i < data.size(); i++)
        {
            str += data.get(i) + "\n";

        }           
        tvOutput.setText(tvOutput.getText().toString() + "\n\n" + "Results: " + str);           

    }
    public void onRmsChanged(float rmsdB) 
    {
        Log.d(TAG, "onRmsChanged()");
    }

}

我在MainActivity中的实现:

    this.srSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
    this.srSpeechRecognizer.setRecognitionListener(new SpeechListener());

    this.iSpeechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    this.iSpeechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    this.iSpeechIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "voice.recognition.test");      
    this.iSpeechIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);

所以它开始了:

srSpeechRecognizer.startListening(iSpeechIntent);

记录说话:

    12-16 13:50:53.576: D/DreamManagerService(485): Dream finished:   android.os.Binder@415bbf38
    12-16 13:50:53.576: I/DreamManagerService(485): Leaving dreamland.
    12-16 13:50:53.576: I/DreamController(485): Stopping dream: name=ComponentInfo{com.google.android.deskclock/com.android.deskclock.Screensaver}, isTest=false, userId=0
    12-16 13:50:53.586: I/PowerManagerService(485): Waking up from dream...
    12-16 13:50:53.616: I/ActivityManager(485): No longer want com.google.android.gsf.login (pid 13171): empty #17
    12-16 13:50:56.796: I/GoogleRecognitionServiceImpl(1461): #startListening [de-DE]
    12-16 13:50:56.806: I/ActivityManager(485): Start proc com.google.android.gsf.login for service com.google.android.gsf.login/com.google.android.gsf.loginservice.GoogleLoginService: pid=13343 uid=10019 gids={50019, 3003, 1007, 1028, 1015, 2001, 3006}
    12-16 13:50:56.866: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:56.886: D/dalvikvm(1461): GC_FOR_ALLOC freed 516K, 12% free 8706K/9892K, paused 18ms, total 18ms
    12-16 13:50:56.906: D/dalvikvm(1461): GC_CONCURRENT freed 160K, 9% free 9015K/9892K, paused 3ms+2ms, total 21ms
    12-16 13:50:56.906: I/AudioService(485):  AudioFocus  requestAudioFocus() from android.media.AudioManager@4135e960com.google.android.speech.audio.AudioController$1@41261910
    12-16 13:50:56.916: I/VS.G3EngineManager(1461): create_rm: m=ENDPOINTER_VOICESEARCH,l=en-US
    12-16 13:50:56.916: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:56.916: I/VS.G3EngineManager(1461): Brought up new g3 instance :/system/usr/srec/en-US/endpointer_voicesearch.config for: en-USin: 3 ms
    12-16 13:50:56.926: I/ConnectionFactoryImpl(1461): Opening SSL connection: vs.google.com:14259
    12-16 13:50:56.966: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.016: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.066: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.116: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.166: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.216: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.266: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.316: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.366: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.416: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.466: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.516: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.566: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.616: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.666: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.716: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.766: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.816: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.866: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.916: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:57.966: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.016: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.066: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.116: I/MainActivity/SpeechListener(13268): onBeginningOfSpeech()
    12-16 13:50:58.126: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.176: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.226: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.276: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.326: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.376: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.426: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.476: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.526: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.576: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.626: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.676: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.726: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.776: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.826: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.876: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.926: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:58.976: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.026: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.076: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.126: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.176: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.236: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.286: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.336: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.386: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.436: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.486: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.536: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.586: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.636: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.646: I/MicrophoneInputStream(1461): mic_close
    12-16 13:50:59.666: I/AudioService(485):  AudioFocus  abandonAudioFocus() from         android.media.AudioManager@4135e960com.google.android.speech.audio.AudioController$1@41261910
    12-16 13:50:59.666: D/dalvikvm(1461): threadid=37: thread exiting, not yet detached (count=0)
    12-16 13:50:59.666: I/MainActivity/SpeechListener(13268): onEndOfSpeech()
    12-16 13:50:59.676: I/decoder(1461): INFO: recognition time wall: 2.732 sec user: 0.54 sec sys: 0.08 sec 
    12-16 13:50:59.686: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.736: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.786: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.826: I/MainActivity/SpeechListener(13268): onResults(): Bundle[mParcelledData.dataSize=292]
    12-16 13:50:59.836: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.886: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.936: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:50:59.986: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:51:00.046: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:51:00.096: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:51:00.146: D/MainActivity/SpeechListener(13268): onRmsChanged()
    12-16 13:51:00.196: D/MainActivity/SpeechListener(13268): onRmsChanged()

不说话的日志:

    12-16 13:53:39.246: I/GoogleRecognitionServiceImpl(1461): #startListening [de-DE]
    12-16 13:53:39.296: D/dalvikvm(1461): GC_FOR_ALLOC freed 567K, 12% free 8708K/9892K, paused 21ms, total 21ms
    12-16 13:53:39.316: D/dalvikvm(1461): GC_CONCURRENT freed 164K, 9% free 9017K/9892K, paused 3ms+2ms, total 21ms
    12-16 13:53:39.316: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.316: I/AudioService(485):  AudioFocus  requestAudioFocus() from         android.media.AudioManager@4135e960com.google.android.speech.audio.AudioController$1@41261910
    12-16 13:53:39.326: I/VS.G3EngineManager(1461): create_rm: m=ENDPOINTER_VOICESEARCH,l=en-US
    12-16 13:53:39.326: I/ConnectionFactoryImpl(1461): Opening SSL connection: vs.google.com:14259
    12-16 13:53:39.326: I/VS.G3EngineManager(1461): Brought up new g3 instance :/system/usr/srec/en-US/endpointer_voicesearch.config for: en-USin: 5 ms
    12-16 13:53:39.366: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.416: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.466: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.516: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.576: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.626: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.676: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.726: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.776: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.826: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.876: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.926: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:39.976: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.026: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.076: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.136: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.176: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.226: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.286: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.336: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.386: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.436: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.486: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.536: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.586: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.636: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.686: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.736: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.786: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.836: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.886: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.936: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:40.986: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.046: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.096: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.146: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.196: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.246: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.296: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.346: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.396: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.446: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.496: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.546: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.596: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.646: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.696: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.746: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.796: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.846: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.896: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.946: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:41.996: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.046: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.096: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.146: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.196: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.246: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.296: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.356: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.406: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.456: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.506: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.556: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.606: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.656: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.706: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.756: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.806: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.856: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.906: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:42.956: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.006: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.056: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.116: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.156: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.216: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.266: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.316: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.366: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.416: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.466: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.516: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.566: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.616: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.666: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.716: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.766: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.816: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.866: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.916: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:43.966: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.016: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.066: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.116: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.166: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.226: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.276: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.326: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.376: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.426: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.476: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.526: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.576: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.626: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.676: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.726: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.776: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.826: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.876: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.926: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:44.976: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.026: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.076: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.126: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.176: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.226: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.276: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.326: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.376: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.426: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.476: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.526: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.576: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.636: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.676: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.736: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.786: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.836: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.886: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.936: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:45.986: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.036: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.086: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.136: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.186: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.236: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.286: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.336: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.386: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.436: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.486: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.536: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.596: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.636: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.696: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.746: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.796: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.846: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.896: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.946: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:46.996: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.046: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.096: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.146: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.196: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.246: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.296: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.346: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.396: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.446: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.496: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.556: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.596: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.656: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.696: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.746: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.796: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.856: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.906: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:47.956: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.006: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.056: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.106: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.156: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.206: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.256: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.306: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.356: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.406: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.456: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.506: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.556: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.616: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.656: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.706: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.766: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.816: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.866: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.916: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:48.966: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.016: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.066: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.116: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.166: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.216: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.266: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.316: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.366: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.416: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.466: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.516: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.566: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.616: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.666: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.716: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.776: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.816: D/dalvikvm(1461): GC_FOR_ALLOC freed 106K, 9% free 9025K/9892K,         paused 32ms, total 32ms
    12-16 13:53:49.816: I/dalvikvm-heap(1461): Grow heap (frag case) to 9.282MB for 320656-byte allocation
    12-16 13:53:49.836: D/dalvikvm(1461): GC_FOR_ALLOC freed 156K, 11% free 9182K/10208K, paused 19ms, total 19ms
    12-16 13:53:49.836: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.886: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.936: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:49.986: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:50.036: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:50.086: D/MainActivity/SpeechListener(13441): onRmsChanged()
    12-16 13:53:50.136: D/MainActivity/SpeechListener(13441): onRmsChanged()

5 个答案:

答案 0 :(得分:19)

唯一可以解决此问题的解决方案是使用第三方服务。 4.1.1和4.2 依赖于语音识别服务的一个版本,该服务不遵守记录的行为,因为运行它的服务无声地死亡。

如果您不想使用第三方API,并且您需要以某种方式解释此服务死亡, 可能,但它不是很理想。

服务终止后,将不会调用以下任何方法:

  • onBeginningOfSpeech
  • onError
  • onResults
  • onEndOfSpeech

如果在服务死亡之前调用onBeginningOfSpeech,您可以放心,最终会调用onError或onEndOfSpeech。

因此,如果你想要的是确保你知道Jellybean中服务的生命和死亡,内置SpeechRecognizer中此问题的解决方法是执行以下操作:

  • 创建一个类似于isSpeechRecognizerAlive的布尔标志。
  • 每次启动SpeechRecognizer时,请将上述标志设置为false。
  • 在onBeginningOfSpeech中,如果调用它,请将isSpeechRecognizerAlive设置为true。
  • 维护一个处理程序,在4秒延迟时将检查isSpeechRecognizerAlive的状态。如果为false,请手动终止SpeechRecognizer实例。如果是真的,什么也不做。正常流程将为您处理事情。

为什么这不是维持连续语音识别设置的理想解决方案

在您的问题中没有直接说明,但有些人希望这样做,以便他们可以持续进行语音识别。 这在4.1.1和4.2 中实现这一点并不是一个好方法,因为Google的SpeechRecognition服务现在开始时带有非可选的“bloop”音效。似乎无法关闭此声音。 API中没有列出任何内容来控制它。您的用户不会喜欢在4秒重复循环中“泛滥”。

答案 1 :(得分:3)

您可以尝试提供以下RecognizerIntent个额外内容:

  • EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
  • EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS
  • EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

虽然它们都不适合这种情况。 Android根本不提供额外的“WAIT_UNTIL_I_START_SPEAKING”。这不是一个错误(在果冻豆或其他地方),它只是缺乏一个功能。即使在Android的未来版本中添加了这样的额外内容,也可能无法保证语音识别应用程序(例如Google语音搜索)实际上实现了这一点。 RecognizerIntent文档包含大量具有未指定行为的附加内容。

您最好的选择可能是在您onEndOfSpeechonError后立即重新启动识别器。

答案 2 :(得分:3)

我制作了一个带有音频到语音识别器的服务,每次出现错误或结果时都会通过重新启动来模拟连续性。正如您所看到的,我的服务侦听广播接收器以启动/停止连续ASR(电池价格昂贵,因此我建议您仅在相关UI位于前台时运行此连续ASR服务)。 ASR的结果也会广播到应用程序的其余部分。你可以忽略广播,服务和识别器监听器是主要的想法。 不要忘记INTERNET权限和清单以及服务声明:

<service android:name=".speechRecognitionService" />

SpeechRecognitionService:

    /**
     * Created by Josh on 22/07/15.
     *  This service bears an Audio to Speech recognizer (ASR), once this service is started,
     *  it listens a broadcast called "asrService".
     *  the Service starts ASR when it receives a "START-ASR" value inside the "message" parameter of its broadcast receiver
     *  the Service stopss ASR when it receives a  "STOP-ASR" value inside the "message" parameter of its broadcast receiver
     Example:
     Intent intent = new Intent("asrService");
     intent.putExtra("message", "STOP-ASR");
     LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
     Once the ASR Listener that this service bears is running, it will broadcast the results is gets.
     To catch ASR results, implement a Broadcast receiver that listens to app.asrResult="ASRresult", for example:

     private BroadcastReceiver ASRReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String message = intent.getStringExtra("message");
            if(message!=null) {
                app.logwhite("ASR says: "+message);
            }
        }
    };
     LocalBroadcastManager.getInstance(this).registerReceiver(ASRReceiver, new IntentFilter(app.asrResult));

     Unregister the broadcast receiver likewise:
     LocalBroadcastManager.getInstance(this).unregisterReceiver(ASRReceiver);
     */

    public class speechRecognitionService extends Service {

        private static speechRecognitionListenerJosh speechReconListener;
        private static SpeechRecognizer mSpeechRecognizer=null;
        private static Intent mSpeechRecognizerIntent;
        private static boolean mIslistening=false;


        //======== BROADCAST RECEIVERS
        // handler for received Intents for the "my-event" event
        private BroadcastReceiver startASRReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String message = intent.getStringExtra("message");
                if(message.equals("START-ASR")) {
                    if (mIslistening == false) {


                        if (mSpeechRecognizer != null) {
                            mSpeechRecognizer.destroy();
                            mSpeechRecognizer = null;
                        }
                        app.logy("==BROADCAST Rx: START_ASR");

                        mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
                        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                        //mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
                        //mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE ,   this.getPackageName());
                        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 5000);
                        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 5000);
                        //mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
                        //mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);

                        mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
                        speechReconListener = new speechRecognitionListenerJosh();
                        mSpeechRecognizer.setRecognitionListener(speechReconListener);

                        mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
                    } else {
                        app.logy("==BROADCAST Rx: STOP_ASR");
                        mSpeechRecognizer.stopListening();
                        mSpeechRecognizer.destroy();
                        speechReconListener = null;
                    }
                }

                if(message.equals("STOP-ASR")){
                    app.logy("==BROADCAST Rx: STOP_ASR");
                    mSpeechRecognizer.stopListening();
                    mSpeechRecognizer.destroy();
                    speechReconListener = null;
                }
            }
        };


        @Override
        public void onCreate() {
            super.onCreate();

            mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
            mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL  ,   RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            //mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
            mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE ,   this.getPackageName());
            mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 4000);
            mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
            mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
            speechReconListener = new speechRecognitionListenerJosh();
            mSpeechRecognizer.setRecognitionListener(speechReconListener);

            LocalBroadcastManager.getInstance(this).registerReceiver(startASRReceiver, new IntentFilter("asrService"));
            app.toastlog("==ASR Service - CREATED");
        }

        @Override
        public void onDestroy() {
            super.onDestroy();
            LocalBroadcastManager.getInstance(this).unregisterReceiver(startASRReceiver);

            if (mSpeechRecognizer != null){
                mSpeechRecognizer.destroy();
                mSpeechRecognizer=null;
            }
            app.toastlog("==ASR Service - DESTROYED");
        }

        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }

        @Override //rather not use, runs before onStart
        public int onStartCommand(Intent intent, int flags, int startId) {
            return super.onStartCommand(intent, flags, startId);
        }

        @Override
        public void onStart(Intent intent, int startId) {
            super.onStart(intent, startId);
            app.toastlog("==ASRservice - onStart");
        }



        private class speechRecognitionListenerJosh  implements RecognitionListener {

            @Override
            public void onBeginningOfSpeech() {
                mIslistening=true;
                app.loge("=ASRListener - onBeginingOfSpeech");
            }

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

            }

            @Override
            public void onEndOfSpeech(){
                app.loge("=ASRListener - onEndOfSpeech");
            }

            @Override
            public void onError(int error) {
                mIslistening=false;
                String code= Integer.toString(error);

                if(error==SpeechRecognizer.ERROR_CLIENT){ // 5
                    code="ERROR_CLIENT";
                    mIslistening=false;
                    mSpeechRecognizer.destroy();
                    Intent intent = new Intent("asrService");
                    intent.putExtra("message", "START-ASR");
                    LocalBroadcastManager.getInstance(app.appContext).sendBroadcast(intent);
                }

                if(error==SpeechRecognizer.ERROR_SPEECH_TIMEOUT){ // 6
                    code="SPEECH_TIMEOUT";
                    mSpeechRecognizer.stopListening();
                    mIslistening=false;
                    Intent intent = new Intent("asrService");
                    intent.putExtra("message", "START-ASR");
                    LocalBroadcastManager.getInstance(app.appContext).sendBroadcast(intent);
                    //Usualy bounces back to ERROR_CLIENT.
                }
                if(error==SpeechRecognizer.ERROR_NO_MATCH){ // 7
                    code="ERROR_NO_MATCH";
                    mIslistening=false;
                    Intent intent = new Intent("asrService");
                    intent.putExtra("message", "START-ASR");
                    LocalBroadcastManager.getInstance(app.appContext).sendBroadcast(intent);
                    //Usually bounces back to ERROR_CLIENT.
                }

                app.loge("=ASRListener - ASR Error: "+code);
                /*
                // 1 = NETWORK_TIMEOUT
                // 2 = ERROR_NETWORK
                // 3 = ERROR_AUDIO
                // 4 = ERROR_SERVER
                // 5 = ERROR_CLIENT
                // 8 = ERROR_RECOGNIZER_BUSY
                // 9 = ERROR_INSUFFICIENT_PERMISSIONS
                */

            }

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

            }

            @Override //Somehow doesn't trigger upon partial results
            public void onPartialResults(Bundle partialResults){
                ArrayList<String> results=partialResults.getStringArrayList("EXTRA_PARTIAL_RECOGNITION");
                if(results!=null) {
                    if (results.size() > 0) {
                        app.logwhite("=== ASR Partial Results: " + results);
                    }
                }
            }

            @Override
            public void onReadyForSpeech(Bundle params){
                app.loge("=ASRListener - onReadyForSpeech, LISTENING  (((( ");
            }

            @Override
            public void onResults(Bundle resultBundle){
                app.loge("=ASRListener - onResults");
                ArrayList<String> result = resultBundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
                if(result!=null) {  //when speaking timeout happen, results is null

                    // matches are the return values of speech recognition engine

                    if (result.size() > 0) {
                        app.logwhite("=== ASR Results:");
                        app.logwhite(result.get(0));
                        //BC name, message
                        app.broadcast(app.asrResult,result.get(0)); //The result is broadcast to the entire app
                    }

                }

                mIslistening=false;
                Intent intent = new Intent("asrService");
                intent.putExtra("message", "START-ASR");
                LocalBroadcastManager.getInstance(app.appContext).sendBroadcast(intent);
            }

            @Override
            public void onRmsChanged(float rmsdB){
                //VOLUME VUmeter!!!!
            }
        }
    }

答案 3 :(得分:0)

一段时间以来,我面临着同样的问题,我在任何地方都找不到正确的工作答案。 为了使聆听无限进行,请在重新实例化SpeechRecognizer并重新设置意图对象之后,再次发布onError()onResults()我是在打电话给speechRecognizer.startListening(intent);

但是正如您提到的,它最终在听了一段时间后就消失了。

这是我尝试过的方法,对我有用。

我只是确保在回想speechRecognizer.startListening(intent);之前先打电话给

speechRecognizer.stopListening();
speechRecognizer.destroy();

去做第一段中提到的事情。

到目前为止,对我来说一切正常。

答案 4 :(得分:0)

我在Node.js库中遇到了同样的问题,这是我与团队的答复一起提交的问题。 https://github.com/googleapis/nodejs-speech/issues/667

TLDR; 设置您的配置如下(注意使用增强型)

 const config = {
        encoding: "LINEAR16",
        sampleRateHertz: 16000,
        languageCode: "en-US",
        metadata: recognitionMetadata,
        model: 'phone_call',
        useEnhanced: true}

您将获得以下输出-注意替代方案,在我看来这有点误导性措词,但是哦:

[{"results":[{"alternatives":[{"words":[],"transcript":"I live in Boston","confidence":0.9128385782241821}],"channelTag":0,"languageCode":"en-us"},{"alternatives":[{"words":[],"transcript":" Boston is an amazing City","confidence":0.9128385186195374}],