Google habilitó silenciosamente el reconocimiento fuera de línea en esa actualización de búsqueda, pero (hasta ahora) no hay API o parámetros adicionales disponibles dentro de la clase SpeechRecognizer . {Ver Editar en la parte inferior de esta publicación} La funcionalidad está disponible sin codificación adicional, sin embargo, el dispositivo del usuario deberá configurarse correctamente para que comience a funcionar y aquí es donde radica el problema y me imagino por qué muchos desarrolladores suponga que "les falta algo".
Además, Google ha restringido el uso del reconocimiento fuera de línea para ciertos dispositivos Jelly Bean debido a limitaciones de hardware. No se documenta a qué dispositivos se aplica esto, de hecho, no se documenta nada, por lo que configurar las capacidades para el usuario ha demostrado ser una cuestión de prueba y error (para ellos). Funciona para algunos de inmediato - Para aquellos que no lo hace, esta es la 'guía' que les proporciono.
- Asegúrese de que el Reconocimiento de voz de Android predeterminado esté configurado en Google, no en Samsung / Vlingo
- Desinstale cualquier archivo de reconocimiento sin conexión que ya haya instalado desde la configuración de búsqueda por voz de Google
- Vaya a la configuración de la aplicación de Android y vea si puede desinstalar las actualizaciones para las aplicaciones de búsqueda de Google y búsqueda por voz de Google.
- Si no puede hacer lo anterior, vaya a Play Store para ver si tiene la opción allí.
- Reiniciar (si lograste 2, 3 o 4)
- Actualice la Búsqueda de Google y la Búsqueda por voz de Google desde Play Store (si logró 3 o 4 o si hay una actualización disponible de todos modos).
- Reiniciar (si lograste 6)
- Instalar archivos de idioma sin conexión en inglés del Reino Unido
- Reiniciar
- ¡Utilice total! con una conexión
- Cambia al modo avión y pruébalo
- Una vez que esté funcionando, el reconocimiento fuera de línea de otros idiomas, como el inglés de EE. UU., También debería comenzar a funcionar.
EDITAR: Cambiar temporalmente la configuración regional del dispositivo a inglés del Reino Unido también parece impulsar esto para que funcione para algunos.
Algunos usuarios informaron que todavía tenían que reiniciar varias veces antes de que comenzara a funcionar, pero todos llegan allí eventualmente, a menudo inexplicablemente a cuál fue el disparador, cuya clave está dentro del APK de búsqueda de Google , por lo que no es de dominio público. o parte de AOSP .
Por lo que puedo establecer, Google prueba la disponibilidad de una conexión antes de decidir si usar el reconocimiento en línea o fuera de línea. Si una conexión está disponible inicialmente pero se pierde antes de la respuesta, Google proporcionará un error de conexión, no volverá a estar fuera de línea. Como nota al margen, si se ha realizado una solicitud para la voz sintetizada de red, no se proporciona ningún error si falla: se obtiene silencio.
La actualización de la Búsqueda de Google no habilitó funciones adicionales en Google Now y, de hecho, si intenta usarlo sin conexión a Internet, se producirá un error. Menciono esto mientras me preguntaba si la habilidad se retiraría tan silenciosamente como parecía y, por lo tanto, no debería confiarse en la producción.
Si tiene la intención de comenzar a usar la clase SpeechRecognizer, tenga en cuenta que hay un error bastante importante asociado, que requiere su propia implementación para manejarlo.
No poder solicitar específicamente offline = true , hace que controlar esta función sea imposible sin manipular la conexión de datos. Basura. Recibirá cientos de correos electrónicos de usuarios preguntándole por qué no ha habilitado algo tan simple.
EDITAR: Desde el nivel de API 23, se ha agregado un nuevo parámetro EXTRA_PREFER_OFFLINE al que parece adherirse el servicio de reconocimiento de Google.
Espero que lo anterior ayude.