SpeechRecognizer выдает ERROR_NO_MATCH при первом прослушивании, когда googlequicksearchbox находится в фоновом режиме

Поведение очень похоже на то, что описано здесь, но происходит только когда googlequicksearchbox находится в фоновом режиме. Я использую Google APP 5.2.33.19.arm.

Я создал SpeechRecognizer, позвонив

SpeechRecognizer.createSpeechRecognizer(myContext, new ComponentName("com.google.android.googlequicksearchbox", "com.google.android.voicesearch.serviceapi.GoogleRecognitionService"))

Я получил следующее сообщение об ошибке в Android Studio Logcat

GoogleRecognitionServic﹕ #startListening [es-MX]
WebAppState﹕ WebApp unloaded
MediaFocusControl﹕ AudioFocus  requestAudioFocus() from android.media.AudioManager@b4542c6com.google.android.voicesearch.a.a$1@11f9f287 req=4flags=0x0
MediaFocusControl﹕ AudioFocus  abandonAudioFocus() from android.media.AudioManager@b4542c6com.google.android.voicesearch.a.a$1@11f9f287
Greco3EngineManager﹕ create_rm: m=ENDPOINTER_DICTATION,l=en-US
Greco3EngineManager﹕ Brought up new g3 instance :/system/usr/srec/en-US/endpointer_dictation.config for: en-USin: 1 ms
ErrorReporter﹕ reportError [type: 211, code: 458760]: es-MX
ErrorProcessor﹕ onFatalError, ignoring error from engine(1): com.google.android.apps.gsa.shared.speech.a.f: es-MX
ErrorReporter﹕ reportError [type: 211, code: 458756]: GsaErrorCode: 458756, engine: 1
ErrorProcessor﹕ onFatalError, ignoring error from engine(1): com.google.android.apps.gsa.shared.speech.a.d: GsaErrorCode: 458756, engine: 1
GoogleSpeechRecognition﹕ onError No match

Вот все сообщения от распознавателя речи. Кроме того, ERROR_CLIENT близится к завершению. Другое дело, что при этом нет вызова onRmsChanged. Обычно во время обычного запроса на распознавание происходит множество таких вызовов.

googleRecognizer﹕ onError No match
googleRecognizer﹕ onReadyForSpeech
googleRecognizer﹕ onBeginningOfSpeech
googleRecognizer﹕ onPartialResults
googleRecognizer﹕ onPartialResults
googleRecognizer﹕ onPartialResults
googleRecognizer﹕ onPartialResults
googleRecognizer﹕ onPartialResults
googleRecognizer﹕ onEndOfSpeech
googleRecognizer﹕ onError Client side error
googleRecognizer﹕ onResults

person qlpiero    schedule 09.09.2015    source источник


Ответы (1)


Сначала вам нужно понять, что делает SpeechRecognizer. SpeechRecognizer отправляет «вызов пробуждения» вашему приложению для преобразования речи в текст по умолчанию на вашем телефоне (это можно увидеть в «Настройки» -> «Язык и ввод»). Приложение по умолчанию просыпается, преобразует вашу речь в текст, а затем отправляет его вам обратно onResults. В вашем конкретном случае вы явно вызываете «поиск Google».

SpeechRecognizer.createSpeechRecognizer(..."com.google.android.googlequicksearchbox"...)

Я бы сказал, что пока «googlequicksearchbox» работает в фоновом режиме, ваш распознаватель не может его использовать (поскольку может быть только один экземпляр этого действия).

Попробуйте вызвать другое приложение преобразования речи в текст и посмотрите, что произойдет.

person tamir007    schedule 19.09.2015
comment
К сожалению, я хочу использовать распознаватель Google. Кажется, это способ создать распознаватель речи с помощью службы Google, используя com.google.android.googlequicksearchbox. - person qlpiero; 20.09.2015
comment
Попробуйте закрыть все приложения, которые могут работать с Google Recognizer, включая все поисковые приложения Google. - person tamir007; 21.09.2015