lunes, 24 de marzo de 2014

Utilizando el Reconocedor de Audio y paso a Texto de Google (Speech to Text)


¡Hola a todos! En este tutorial explicaré cómo utilizar el reconocedor de voz hecho por Google para reconocer nuestra voz y hacer que lo que hayamos dicho sea convertido a texto.

Básicamente, se trata de un "intent" que se lanza con unos determinados parámetros y de una determinada forma.


Antes de nada, necesitaremos añadir un nuevo permiso a nuestro manifest:
<uses-permission android:name="android.permission.INTERNET" />

Primero tenemos que crear un nuevo "intent", pero sin hacer lo que hacíamos siempre para cargar otra activity. Esta vez es diferente.



Las 3 primeras líneas de código son las que se encargan de hacer posible que se active el reconocedor de voz:

Pero con esto no está todo resuelto. Si nos fijamos bien en el código anterior, y en especial en el trozo donde se lanza la activity, vemos que la hemos lanzado de forma diferente a como solemos hacerlo cuando queremos cambiar simplemente de pantalla.

Aquí utilizamos "startActivityForResutl". Inicia la activity de forma que primero realiza unas operaciones y al acabar dichas operaciones, cierra la activity (this.finish()) y devuelve los resultados a la activity anterior.



Ahora bien, ¿dónde podemos recoger esa información devuelta?



Para ello existe el método (que hay que sobrescribir con "@Override") "onActivityResult". Podemos ver un ejemplo de su uso en el enlace anterior.


Bien, ahora que sabemos dónde tenemos que realizar la recogida de la información que queremos, tenemos que saber como tratar esa información para poder operar con ella (a ser posible a nivel de String).

"onActivityResult" tiene como tercer parámetro un objeto data del tipo Intent. Es en la información extra de este intent donde está contenida la información que hayamos dictado por voz.


Para obtener la información es necesario escribir las dos líneas de código siguientes:


1#    ArrayList<String> text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

2#    String texto = text.get(0);

Lo que hacemos con estas dos líneas es extraer cualquier tipo de información extra en forma de Array de String. El reconocedor de voz traduce todo lo que le digamos a un simple string que es el que se guarda en el Array.

 Como la única información extra que tenemos en este caso es ese string, accedemos a él con la segunda línea de código.

Y listo, ya hemos pasado a texto (String) lo que hemos dicho mediante nuestra voz y podemos empezar a operar con nuestro "texto".


Para hacer este tutorial, he investigado un poco y he encontrado este otro tutorial, donde viene todo lo que he comentado aquí, además de un pequeño y simple ejemplo subido en un paquete ".zip".

No hay comentarios:

Publicar un comentario