Intereting Posts
OnCreate () и onCreateView () вызывает намного больше, чем требуется (фрагменты) Мне нужно загрузить несколько изображений в каталог, чтобы содержимое можно было получить в автономном режиме Как вернуть проект назад к предыдущей фиксации в студии android Android RSA Keypair Generation – Должен ли я использовать стандартный Java / Bouncy Castle / Spongy Castle / JSch / Other? Невозможно создать многопользовательский чат (MUC) с библиотекой aSmack для Android: «package.DefaultPacketExtension нельзя отнести к пакету. MUCUser» Android: преобразование битмапа во входной поток Twitter Bootstrap modal на мобильных устройствах Инструмент Android для создания селектора xml для кнопок Как передать несколько аргументов через xml для настраиваемого сеттера при использовании привязки данных Android Вопросительный знак (?) В атрибутах XML для Android Граница формы Android с градиентом Android FragmentTransaction Custom Animation (Неизвестное имя аниматора: Перевести) Скрыть инф.истовую карту api v2 Малые Caps на TextViews, EditTexts и кнопки в Android Отключить анимацию перехода между действиями

Ошибка ERROR_RECOGNIZER_BUSY с автономным распознаванием речи

Я провел исследование по распознаванию речи в офлайн-режиме. Но он отлично работает в google nexus 5 (OS: -4.4), но тот же сборник, если я реализую в Samsung Galaxy S5 (ОС: -5.0), он не распознает и показывает эту ошибку:

8 – ERROR_RECOGNIZER_BUSY.

Ниже мой код. Сохраняя эту ссылку в качестве ссылки, я внес изменения: http://www.truiton.com/2014/06/android-speech-recognition-without-dialog-custom-activity/

Без интернет-голоса необходимо признать. Я работал над Pocket sphinx, но у него много бокового голоса, поэтому клиент отклонил его.

public class VoiceRecognitionActivity extends Activity implements RecognitionListener { private TextView returnedText; private static ProgressBar progressBar; private static SpeechRecognizer speech = null; private static Intent recognizerIntent; private String LOG_TAG = "VoiceRecognitionActivity"; private Button button1; Activity activity = VoiceRecognitionActivity.this; private TextView textView2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); returnedText = (TextView) findViewById(R.id.textView1); textView2 = (TextView) findViewById(R.id.textView2); progressBar = (ProgressBar) findViewById(R.id.progressBar1); button1 = (Button) findViewById(R.id.button1); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // toggleButton = (ToggleButton) findViewById(R.id.toggleButton1); PackageManager pm = getPackageManager(); List<ResolveInfo> activities = pm.queryIntentActivities( new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); if (activities.size() != 0) { createSpeechAgain(VoiceRecognitionActivity.this); } else { textView2.setText("Recognizer_not_present"); } button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { speech.stopListening(); speech.destroy(); createSpeechAgain(VoiceRecognitionActivity.this); } }); } private void createSpeechAgain(VoiceRecognitionActivity voiceRecognitionActivity) { progressBar.setVisibility(View.INVISIBLE); speech = SpeechRecognizer.createSpeechRecognizer(voiceRecognitionActivity); speech.setRecognitionListener(voiceRecognitionActivity); recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US"); recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, voiceRecognitionActivity.getPackageName()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3); //recognizerIntent.putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, Boolean.FALSE); recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 20000); recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 20000); // EXTRA_PREFER_OFFLINE progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.startListening(recognizerIntent); } @Override public void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); /*if (speech != null) { speech.destroy(); Log.i(LOG_TAG, "destroy"); }*/ } @Override public void onBeginningOfSpeech() { Log.i(LOG_TAG, "onBeginningOfSpeech"); progressBar.setIndeterminate(false); progressBar.setMax(10); } @Override public void onBufferReceived(byte[] buffer) { Log.i(LOG_TAG, "onBufferReceived: " + buffer); } @Override public void onEndOfSpeech() { Log.i(LOG_TAG, "onEndOfSpeech"); progressBar.setIndeterminate(false); progressBar.setVisibility(View.INVISIBLE); speech.stopListening(); } @Override public void onError(int errorCode) { String errorMessage = getErrorText(errorCode); Log.d(LOG_TAG, "FAILED " + errorMessage); textView2.setText(errorMessage); } @Override public void onEvent(int arg0, Bundle arg1) { Log.i(LOG_TAG, "onEvent"); } @Override public void onPartialResults(Bundle arg0) { Log.i(LOG_TAG, "onPartialResults"); } @Override public void onReadyForSpeech(Bundle arg0) { Log.i(LOG_TAG, "onReadyForSpeech"); } @Override public void onResults(Bundle results) { Log.i(LOG_TAG, "onResults"); ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); String text = ""; for (String result : matches) text += result + "\n"; returnedText.setText(text); Log.v(LOG_TAG, "onResults---> " + text); progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.startListening(recognizerIntent); } @Override public void onRmsChanged(float rmsdB) { //Log.i(LOG_TAG, "onRmsChanged: " + rmsdB); progressBar.setProgress((int) rmsdB); } public String getErrorText(int errorCode) { String message; switch (errorCode) { case SpeechRecognizer.ERROR_AUDIO: message = "Audio recording error"; Log.v("LOG_TAG", message); progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.startListening(recognizerIntent); break; case SpeechRecognizer.ERROR_CLIENT: message = "Client side error"; Log.v("LOG_TAG", message); progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.startListening(recognizerIntent); break; case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS: message = "Insufficient permissions"; Log.v("LOG_TAG", message); progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.startListening(recognizerIntent); break; case SpeechRecognizer.ERROR_NETWORK: message = "Network error"; Log.v("LOG_TAG", message); break; case SpeechRecognizer.ERROR_NETWORK_TIMEOUT: message = "Network timeout"; Log.v("LOG_TAG", message); break; case SpeechRecognizer.ERROR_NO_MATCH: message = "No match"; Log.v("LOG_TAG", message); progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.startListening(recognizerIntent); break; case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: message = "RecognitionService busy"; Log.v("LOG_TAG", message); speech.stopListening(); speech.destroy(); createSpeechAgain(VoiceRecognitionActivity.this); break; case SpeechRecognizer.ERROR_SERVER: message = "error from server"; Log.v("LOG_TAG", message); break; case SpeechRecognizer.ERROR_SPEECH_TIMEOUT: message = "No speech input"; Log.v("LOG_TAG", message); progressBar.setVisibility(View.VISIBLE); progressBar.setIndeterminate(true); speech.stopListening(); speech.destroy(); createSpeechAgain(VoiceRecognitionActivity.this); break; default: message = "Didn't understand, please try again."; break; } return message; } } 

Xml: –

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:src="@drawable/ic_launcher" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/toggleButton1" android:layout_marginTop="28dp" android:paddingLeft="10dp" android:paddingRight="10dp" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/progressBar1" android:layout_centerHorizontal="true" android:layout_marginTop="47dp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/imageView1" android:layout_alignLeft="@+id/imageView1" android:text="Restart" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_centerHorizontal="true" android:layout_marginBottom="19dp" android:text="" /> </RelativeLayout> 

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.offlinegooglespeechtotext" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".VoiceRecognitionActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Logcat: –

  09-30 18:05:54.732: D/ResourcesManager(3941): creating new AssetManager and set to /data/app/com.example.offlinegooglespeechtotext-2/base.apk 09-30 18:05:54.772: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/sym_def_app_icon.png 09-30 18:05:54.772: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi/ic_launcher.png 09-30 18:05:54.787: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/ic_ab_back_holo_dark_am.png 09-30 18:05:54.797: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/sym_def_app_icon.png 09-30 18:05:54.817: D/Activity(3941): performCreate Call secproduct feature valuefalse 09-30 18:05:54.817: D/Activity(3941): performCreate Call debug elastic valuetrue 09-30 18:05:54.827: D/OpenGLRenderer(3941): Render dirty regions requested: true 09-30 18:05:54.867: I/(3941): PLATFORM VERSION : JB-MR-2 09-30 18:05:54.867: I/OpenGLRenderer(3941): Initialized EGL, version 1.4 09-30 18:05:54.877: I/OpenGLRenderer(3941): HWUI protection enabled for context , &this =0xb39090d8 ,&mEglDisplay = 1 , &mEglConfig = -1282088012 09-30 18:05:54.887: D/OpenGLRenderer(3941): Enabling debug mode 0 09-30 18:05:54.957: V/LOG_TAG(3941): No match 09-30 18:05:54.957: D/VoiceRecognitionActivity(3941): FAILED No match 09-30 18:05:54.982: I/Timeline(3941): Timeline: Activity_idle id: android.os.BinderProxy@24862afe time:5837375 09-30 18:05:55.607: I/VoiceRecognitionActivity(3941): onReadyForSpeech 09-30 18:05:55.947: I/VoiceRecognitionActivity(3941): onBeginningOfSpeech 09-30 18:05:57.252: I/VoiceRecognitionActivity(3941): onEndOfSpeech 09-30 18:05:57.322: V/LOG_TAG(3941): No match 09-30 18:05:57.322: D/VoiceRecognitionActivity(3941): FAILED No match 09-30 18:05:57.332: V/LOG_TAG(3941): No match 09-30 18:05:57.332: D/VoiceRecognitionActivity(3941): FAILED No match 09-30 18:05:57.347: V/LOG_TAG(3941): No match 09-30 18:05:57.347: D/VoiceRecognitionActivity(3941): FAILED No match 09-30 18:05:57.367: V/LOG_TAG(3941): RecognitionService busy 09-30 18:05:57.392: D/VoiceRecognitionActivity(3941): FAILED RecognitionService busy 09-30 18:05:57.392: E/SpeechRecognizer(3941): not connected to the recognition service 09-30 18:05:58.232: I/VoiceRecognitionActivity(3941): onReadyForSpeech 09-30 18:06:03.287: V/LOG_TAG(3941): No speech input 09-30 18:06:03.302: D/VoiceRecognitionActivity(3941): FAILED No speech input 09-30 18:06:03.302: E/SpeechRecognizer(3941): not connected to the recognition service 

Solutions Collecting From Web of "Ошибка ERROR_RECOGNIZER_BUSY с автономным распознаванием речи"