AndroidPocketSphinx: ¿Cómo sabe el sistema qué reconocedor se invoca?
Estoy estudiando el código fuente de TestPocketSphinxAndAndroidASR.java y lo primero que no es tan claro para mí es cómo el sistema sabe qué reconocedor (es decir, Google o CMUSphinx) para invocar.
Puedo ver que la actividad de reconocimiento se inicia por:
- API de voz a texto o SDK para móviles (multiplataforma)
- Los extras de Android sobre reconocimiento de voz no funcionan
- ¿Se puede configurar CMU Sphinx para reconocer ~ 200 palabras
- java.lang.SecurityException: No se permite enlazar con el servicio Intent (HTC voice dicttation)
- Mejorar el reconocimiento de voz de Android con un contexto adicional
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
Pero por lo que sé este código no es específico para GVR (Google Voice Search) o CMUSphinx.
Entonces, ¿cómo sabe Android qué reconocedor para comenzar?
Anteriormente en onCreate (), hay una referencia a una configuración de AndroidPocketSphinx:
mUsePocektSphinxASR = prefs.getBoolean(PreferenceConstants.PREFERENCE_USE_POCKETSPHINX_ASR, false);
Pero la búsqueda en todo el proyecto produce sólo la siguiente instrucción que utiliza este booleano para mostrar un Toast diferente:
if (mUsePocektSphinxASR){ Toast.makeText(TestPocketSphinxAndAndroidASR.this, "Would be working offline, using PocketSphinx Speech recognizer...", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(TestPocketSphinxAndAndroidASR.this, "Working online, Using system speech recognizer (Google speech recognition server)... ", Toast.LENGTH_LONG).show(); }
Así que no entiendo cómo el sistema sabe (basado en esa preferencia) que reconocedor para iniciar.
¿Cómo sabe Android qué reconocedor comenzar?
- Servicio de reconocimiento de voz en Android
- Android Speech Recognition API no funciona en Android 7 Nougat
- grabar / guardar audio de la intención de reconocimiento de voz
- ¿Ha cambiado el código de idioma estadounidense? Google Speech Api v2 no devuelve el resultado correcto
- Google discurso Api v1 no funciona?
- Android: Métodos de reconocimiento de voz
- Reconocimiento de voz para android
- ¿Hay alguna manera de usar la API de SpeechRecognizer directamente para la entrada de voz?
Su pregunta no es específica para el reconocimiento de voz en Android. Es sólo una pregunta acerca de cómo la resolución de intenciones ocurre en Android.
Su código construye un Intent y lo pasa a startActivityForResult
que inicia la actividad correspondiente. Si hay varias actividades correspondientes, entonces Android muestra un cuadro de diálogo de elección o elige automáticamente en función de un valor predeterminado definido por el usuario. Si, por ejemplo, Google Voice Search se elige automáticamente, puede intentar aplicar "clear defaults" en el Application Manager. Instrucciones para Samsung Galaxy S II con Android 4.1:
Settings -> Application manager -> All -> Google Search (v2.7.9...) -> Launch by default -> Clear defaults
La configuración de la búsqueda de Google "Iniciar por defecto" ahora debe mostrar "Sin valores predeterminados". Ahora, si ACTION_RECOGNIZE_SPEECH
una actividad que admite ACTION_RECOGNIZE_SPEECH
y si, además de la Búsqueda de Google, tiene una o más aplicaciones instaladas que admiten esta intención, verá el cuadro de diálogo. Si para realizar una prueba necesita una aplicación que admita ACTION_RECOGNIZE_SPEECH
continuación, instale Kõnele . (No estoy seguro de que el código basado en Sphinx de CMU que realices implementa realmente este tipo de intención, pero no lo revisé cuidadosamente).
Android no "sabe qué reconocer para iniciar" porque seleccionar que "Prueba ambas ASR" elemento de menú (y función) no significa que la selección de ese elemento de menú invocará GVR o CMU basado en el PREFERENCE_USE_POCKETSPHINX_ASR.
En su lugar, significa "sólo prueba GVR" y por lo tanto siempre se iniciará GVR.
La prueba CMU se realiza a través del elemento de disposición "Hold and Speak" existente.
- Botón de Android con Drawable – relleno
- Modificación de la capa LayerDrawable en Android 2.3 .X (Gingerbread) e inferior