Reconocimiento continuo de voz Android

Estoy buscando hacer reconocimiento de voz en Android. El progtwig necesita tener un reconocimiento de voz continuo. La biblioteca solo necesita tener unas 10 palabras. He considerado usar la API de Google, pero no creo que funcione. (No puedo tener nada cubriendo la pantalla). He estado investigando de otras maneras pero nada parece funcionar. ¿Es posible usar la biblioteca de reconocimiento de voz de Java, o hay alguna otra forma de hacerlo?

En resumen
1. Se necesita entrada de voz continua
2. 10 palabras al máximo
3. puede entrenar si es necesario
4. descripción general del progtwig: pantalla de visualización, espere a la entrada de voz o a la entrada táctil, actualice la pantalla repetida
5. no puede cubrir lo que se muestra en la pantalla

Cualquier ayuda sería apreciada.
Gracias por adelantado

Aquí está la explicación de Oracle de Java Speech API Preguntas frecuentes .

Creo que tendrías que capturar audio directamente desde el micrófono del teléfono y transmitirlo a tu propio servicio de reconocimiento. Las API de reconocimiento de Google se crean como un Intento que inicia su propio diálogo de Reconocimiento y le brinda resultados de regreso. Si desea un reconocimiento continuo sin una IU, tendrá que crear esa funcionalidad usted mismo.

CMUSphinx recientemente implementó la escucha continua en la plataforma Android. Puedes encontrar la demo en la página wiki

Puede configurar una o varias palabras clave para escuchar, la palabra clave predeterminada es “oh poderosa computadora”. También puede configurar el umbral de detección. Los idiomas admitidos actualmente son inglés de EE. UU. Y algunos otros (francés, español, ruso, etc.). Puede entrenar su propio modelo para su idioma.

Escuchar es simple, crea un reconocedor y simplemente agrega la búsqueda de palabras clave:

recognizer = defaultSetup() .setAcousticModel(new File(modelsDir, "hmm/en-us-semi")) .setDictionary(new File(modelsDir, "lm/cmu07a.dic")) .setKeywordThreshold(1e-5f) .getRecognizer(); recognizer.addListener(this); recognizer.addKeywordSearch(KWS_SEARCH_NAME, KEYPHRASE); switchSearch(KWS_SEARCH_NAME); 

y define un oyente:

 @Override public void onPartialResult(Hypothesis hypothesis) { String text = hypothesis.getHypstr(); if (text.equals(KEYPHRASE)) // do something } 

En lugar de una sola frase clave, puede especificar una ruta de archivo de comandos en un sistema de archivos:

  recognizer.addKeywordSearch(KWS_SEARCH, new File(assetsDir, "commands.lst").toString()); 

¿Qué comandos de archivo commands.lst contiene comandos uno por línea?

  oh might computer ok google hello dude 

Para poner este archivo en el sistema de archivos puede ponerlo en activos y ejecutar SyncAssets al inicio de la aplicación.

Aquí hay otra forma (si está planeando usar Phonegap / Cordova).

https://stackoverflow.com/a/39695412/3603128

1) Escucha continuamente.

2) No muestra (ocupa) en la pantalla.

Use la biblioteca CMUSphinx :

  1. Funcionará en modo fuera de línea
  2. Puedes ponerle un nombre
  3. Comenzará a escuchar cuando llames a su nombre

Tuve los mismos requisitos hace un par de meses y decidí escribir mi propia biblioteca .

Creo que debería ajustarse también a tus requisitos;)