Desarrollo de aplicaciones similares a "Google ahora" – ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?

Estoy tratando de desarrollar una aplicación interesante que utiliza el motor TTS y reconocimiento de voz. Hasta ahora está bien, pero quiero más. Me gustaría crear un servicio (creo que un servicio es el camino correcto), que siempre está "escuchando" y cuando alguien dice "ok google" o algo más, comienza el reconocimiento de voz, como google ahora. Por ejemplo, si usted dice "ok google" google ahora comienza. No sé por dónde empezar, así que pregunto directamente aquí si es posible. He intentado mirar este hilo [aquí] ( escuchando para las palabras clave en todo momento, como "Ok google" en 4.4 ) y la última respuesta habló de un servicio, como yo pensaba. ¿Puede alguien ayudarme con mi código?

Por ejemplo, este es el código para iniciar el reconocimiento de voz pulsando un botón:

 /** * Instruct the app to listen for user speech input */ private void listenToSpeech() { //start the speech recognition intent passing required data Intent listenIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //indicate package listenIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName()); //message to display while listening listenIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say a word!"); //set speech model listenIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //specify number of results to retrieve listenIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10); //start listening startActivityForResult(listenIntent, VR_REQUEST); } 

¿Crees que es posible iniciar ese listenIntent solo con voz y sin pulsar ningún botón? Esto es lo que quiero decir.

Usted puede tener referencia con Utter

Esta aplicación utiliza la detección de palabras activas como "Google Now".

Y no existe tal API proporcionada por Android para realizar dicha operación.

No olvide publicar sus hallazgos.

Nota- es muy cpu intensivo y batería consumiendo para escuchar todo el tiempo en segundo plano.

No es java, pero ¿has visto a Jasper? Parece prometedor: http://jasperproject.github.io

Bueno, con Jform, no android, y creas un botón, puedes llamar a button.doClick (). Así que lo que usé fue un Timer, Timer.scheduleAtFixedRate (nueva tarea (), int delay, int iterval); Para que lo hiciera de manera independiente y repitiera. Así que lo que estoy tratando de conseguir es, estoy seguro theres una manera en android para hacer.acción / botón / clave, y así sucesivamente y puede utilizar un temporizador para activarlo de forma independiente. Viendo como si fuera un vacío solo intenta

 listenToSpeech(); 

En cuanto al temporizador;

 Timer listenTimer = new Timer(); //listenTimer.schedualAtFixedRate(new listeningTask(),0,1);//place this where your program starts as this starts the timer class listeningTask extends TimerTask{ if(condition){ listenToSpeech(); } } 

Lo siento sobre el formato o la sangría, utilizando una tableta.

  • Otras opciones de la biblioteca de Android TextToSpeech
  • TextToSpeech, playEarcon y archivos .wav
  • Obtener locales disponibles para tts
  • Cómo utilizar TTS (TextToSpeech) mientras que la cadena tiene más de 4000 caracteres en Android
  • TTS-UtteranceProgressListener no se llama
  • ¿Cómo puedo guardar el archivo Text to Speech como formato .wav / .mp3 en Almacenamiento externo
  • TTS: El éxito regresó de onInit () pero aún hay retraso para hablar primero
  • TTS android 4.1 jellybean
  • ¿Cómo puedo guardar la salida TTS en un archivo de audio en android?
  • Cómo encuestar los motores TTS disponibles para los idiomas disponibles sin instanciar cada uno y wating para init
  • Hablar con TTS como Hindi
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.