Voice recognition stops listening after a few seconds

I tried a lot, but I can not find it, so I hope you can help me.

I am trying to create my own voice recognition application that does not display a dialog.

I already wrote the code and it works very well, but my problem is that the recognizer seems to stop without any errors or other interference in LogCat.

The strange fact is that "onRmsChanged" from the "RecognitionListener" interface is still called all the time, but "onBeginningOfSpeech" is no longer called.

If I speak right after the start of speech recognition, it works. But this is not the case if I wait a few seconds.

Used API 4.0.3 and I installed it on my Nexus 7 with version 4.2.1

I would really appreciate it if you have any good ideas.

Some snippets of code:

My class:

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()"); } } 

And my implementation in 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); 

And so it began:

 srSpeechRecognizer.startListening(iSpeechIntent); 

Magazines with language:

  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() 

Logs without a conversation:

  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() 
+33
android speech-recognition
Dec 02
source share
4 answers

The only solution that is likely to circumvent this problem is to use a third-party service. 4.1.1 and 4.2 both rely on a version of the speech recognition service that does not stick to the documented behavior in that the service that works with it dies silently.

If you do not want to use a third-party API, and you need to somehow take into account this death of the service, this is possible, but it is not very or ideal.

Once the service dies, none of the following methods will ever be called:

  • onBeginningOfSpeech
  • onError
  • onResults
  • onEndOfSpeech

But if the onBeginningOfSpeech call is called before the service dies, you can be sure that either onError or onEndOfSpeech will be called in the end.

Therefore, if all you want is to be sure that you are aware of the life and death of the service in Jellybean , the workaround for this problem in the built-in SpeechRecognizer is as follows:

  • Create a boolean flag like isSpeechRecognizerAlive.
  • Each time you start SpeechRecognizer, set the flag above to false.
  • In onBeginningOfSpeech, if called, set isSpeechRecognizerAlive to true.
  • It supports a handler that checks the status of isSpeechRecognizerAlive at a 4-second delay. If this is false, manually destroy the SpeechRecognizer instance. If is is true, do nothing. A normal flow will take care of you.

Why is this not the ideal solution to maintain constant speech recognition?

This was not explicitly stated in your question, but some people want to do this in order to be able to continuously recognize speech. This is not a good way to do this in 4.1.1 and 4.2, because the Google SpeechRecognition service now starts with a non-standard β€œbloop” sound effect. There seems to be no way to mute this sound. There is nothing in the API to manage it. Your users DON'T GET to be β€œbloated” on a 4 second loop repeating.

+17
Jan 08 '13 at
source share

You can try to provide the following RecognizerIntent additional functions:

  • EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
  • EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS
  • EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

although none of them really fit in this case. Android simply does not offer " WAIT_UNTIL_I_START_SPEAKING " additionally. This is not a mistake (in Bean jelly or anywhere else), it is simply the lack of a function. And even if such an additional feature is added to a future version of Android, there can be no guarantee that a speech recognition application (for example, Google Voice Search) really does. The RecognizerIntent documentation contains many additional features with unspecified behavior.

A better option would be to restart the resolver as soon as you get onEndOfSpeech or onError .

+3
Jan 02 '13 at 23:16
source share

I made a Service that wears Audio to Speech Recognizer, which simulates continuity, rebooting itself every time there is an error or result. , , / ASR ( , ASR , ). ASR . , Recognizer - . DONT 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
27 . '15 15:48
source share

, -, , - . , , , , . , On. , . , .

-one
19 . '15 8:35
source share



All Articles