Comando de palabra clave de comando de voz en Android

Me gustaría agregar el oyente de comando de voz en mi aplicación. El servicio debe escuchar la palabra clave predefinida y, si se habla la palabra clave, debe llamar a algún método.

El reconocimiento de comandos de voz (comando de activación) debería funcionar sin solicitud de envío a los servidores de voz de Google.

¿Cómo puedo hacerlo en Android?

Gracias por publicar algunos recursos útiles.

Puede usar Pocketsphinx para realizar esta tarea. Compruebe la demostración de Pocketsphinx para Android, por ejemplo, cómo escuchar palabras claves de manera eficiente en línea y reactjs a los comandos específicos como una frase clave “oh poderosa computadora”. El código para hacer eso es simple:

creas un reconocedor y simplemente agregas búsqueda de palabras clave:

recognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(new File(modelsDir, "hmm/en-us-semi")) .setDictionary(new File(modelsDir, "lm/cmu07a.dic")) .setKeywordThreshold(1e-40f) .getRecognizer(); recognizer.addListener(this); recognizer.addKeyphraseSearch("keywordSearch", "oh mighty computer"); recognizer.startListening("keywordSearch); 

y define un oyente:

 @Override public void onPartialResult(Hypothesis hypothesis) { if (hypothesis == null) return; String text = hypothesis.getHypstr(); if (text.equals(KEYPHRASE)) { // do something and restart listening recognizer.cancel(); doSomething(); recognizer.startListening("keywordSearch"); } } 

Puede ajustar el umbral de palabra clave para la mejor coincidencia de detección / falsa alarma. Para la precisión ideal, la palabra clave de detección debe tener al menos 3 sílabas, mejores 4 sílabas.