Intereting Posts
Подавление тоста из пакета в Android Установка z порядка просмотра с помощью bringChildToFront () Существует ли какой-либо конструктор форм для Google Android Должны ли мы использовать setTargetFragment ()? Я думал, что Фрагменты не должны общаться друг с другом «MinifyEnabled» против «shrinkResources» – какая разница? И как получить сохраненное пространство? Android AlertDialog с динамически изменяющимся текстом по каждому запросу Изменение ориентации на Android вызывает onCreate Измените фон ImageView (старое изображение остается там!) Android – как расширить FragmentActivity и actionbaractivity Значок уведомления о переключении ящика на панели инструментов – Android Android Drag / Анимация просмотров Как заменить один фрагмент на другой фрагмент с помощью прослушивателя в первом фрагменте Как показать алфавитные буквы на стороне Android ListView Как получить высоту клавиатуры, когда активность создана в android Не удалось отладить Whitelisted device / ApplicationSession, не запуская

Распознавание голоса прекращает прослушивание через несколько секунд

Я много пробовал, но не могу найти его, поэтому надеюсь, что вы мне поможете.

Я пытаюсь создать собственное приложение для распознавания голоса, которое не отображает диалог.

Я уже написал код, и он работает очень хорошо, но моя проблема заключается в том, что распознаватель, кажется, останавливается без каких-либо ошибок или других помех в LogCat.

Странным фактом является то, что «onRmsChanged» из интерфейса «RecognitionListener» все еще называется все время, но «onBeginningOfSpeech» больше не вызывается.

Если я говорю сразу после начала распознавания речи, это работает. Но это не так, если я подожду несколько секунд.

Используемый API 4.0.3, и я установил его на свой Nexus 7 с версией 4.2.1

Я бы очень признателен, если у вас есть хорошие идеи.

Некоторые фрагменты кода:

Мои занятия:

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

Solutions Collecting From Web of "Распознавание голоса прекращает прослушивание через несколько секунд"

Единственное решение, которое наверняка обойдет эту проблему, – использовать стороннюю услугу. 4.1.1 и 4.2 оба полагаются на версию службы распознавания речи, которая не придерживается документированного поведения в том, что работающая с ней служба умирает молча.

Если вы не хотите использовать сторонний API, и вам нужно каким-то образом учесть эту смерть службы, это возможно, но это не очень или идеально.

Как только служба умрет, ни один из следующих методов никогда не будет вызван:

  • onBeginningOfSpeech
  • OnError
  • onResults
  • onEndOfSpeech

Но если onBeginningOfSpeech вызывается до того, как служба умрет, вы можете быть уверены, что в конце концов будут вызваны либо onError, либо onEndOfSpeech.

Поэтому, если все, что вы хотите, должно быть уверенным, что вам известно о жизни и смерти службы в Jellybean, обходной путь для этой проблемы во встроенном SpeechRecognizer состоит в том, чтобы сделать следующее:

  • Создайте булевский флаг, например isSpeechRecognizerAlive.
  • Каждый раз, когда вы запускаете SpeechRecognizer, установите флаг выше в false.
  • В onBeginningOfSpeech, если он вызывается, установите isSpeechRecognizerAlive в true.
  • Поддерживайте обработчик, который на 4-секундной задержке проверяет статус isSpeechRecognizerAlive. Если это ложь, вручную уничтожьте экземпляр SpeechRecognizer. Если верно, ничего не делайте. Обычный поток позаботится о вас.

Почему это не идеальное решение для поддержания постоянной настройки распознавания речи

Это не было прямо указано в вашем вопросе, но некоторые люди хотят сделать это, чтобы иметь возможность непрерывного распознавания речи. Это не очень хороший способ сделать это в 4.1.1 и 4.2, потому что служба SpeechRecognition Google теперь запускается с нестандартным звуковым эффектом «bloop». Кажется, что невозможно отключить этот звук. Ничто не указано в API для управления им. Ваши пользователи НЕ оценили бы «раздувание» на 4-секундной повторяющейся петле.

Вы можете попытаться предоставить следующие дополнительные функции 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 » дополнительно. Это не ошибка (в Jelly Bean или где бы то ни было), это просто отсутствие функции. И даже если такой дополнительный добавлен в будущую версию Android, не может быть гарантии того, что приложение распознавания речи (например, Google Voice Search) действительно реализует это. Документация RecognizerIntent содержит множество дополнительных функций с неуказанным поведением.

Ваш лучший вариант может состоять в том, чтобы перезапустить распознаватель, как только вы получите onEndOfSpeech или onError .

I have made a Service that bears an Audio to Speech Recognizer that simulates being continuous by restarting itself everytime there is an error or result. As you can see, my service listens to a Broadcast receiver in order to start/stop continuous ASR (it is battery expensive so I recommend you run this continuous ASR service only while your relevant UI is in the foreground). The results of the ASR are also broadcasted to the rest of the app. You can ignore the broadcasting, the service and the Recognizer Listener are the main idea. DONT forget the INTERNET permission and the manifest, and the service declaration:

 <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!!!! } } } 

Your End of speech calls when you speak some thing and this mean that it heard something. but it is strange that it is still listening I think it starts listening again with out showing the start listening . I think you have to make check in the On result. if the Results are your desired results , then it's ok to turn of the speech and release it else you can stop and start the speech recognition again. it will start listening again even after the end of speech is called.