martes, 4 de mayo de 2021

Control por voz del coche robot mediante IA

Hola a tod@s.

En este tema vamos a ver todos los pasos a seguir para añadir la Inteligencia Artificial al control de VOZ del coche robot.

Antes de hacer esta tarea es conveniente haber hecho las tareas de creación de una app de detección de sentimientos con IA. Entradas:

https://iespalti.blogspot.com/2021/04/aplicacion-de-deteccion-de-sentimientos_8.html

https://iespalti.blogspot.com/2021/04/aplicacion-de-deteccion-de-sentimientos.html

Y haber añadido el control de voz con programación clásica, sin IA:

https://iespalti.blogspot.com/2021/02/control-por-voz-del-coche-robot.html

Con todo lo anterior bien trabajado no tendremos problema en añadir el control por voz añadiendo la opción de que las frases sean analizadas mediante la IA de Machine Learning for Kids, ML4K, para detectar la instrucción que el usuario quiere mandar al coche.

Lo primero que haremos es entrar a ML4K https://machinelearningforkids.co.uk/ y crear un nuevo modelo o utilizar el modelo compartido (puede verse que es compartido por el pequeño icono de la parte derecha) de la imagen siguiente. 

Este modelo tiene 2 etiquetas: "adelante" y "parar" que permitirán a ML4K averiguar cuál de estas dos instrucciones se le ha dado al coche en base a las palabras con las que alimentemos el modelo. Por ejemplo:


Tal y como hacíamos con el detector de sentimientos, el siguiente paso será conseguir la URL del modelo para después añadirla una extensión en App Inventor:


El app inventor he optado por añadir un nuevo botón "VOZ con IA" manteniendo el anterior botón de VOZ que no usará IA y así poder comprobar la diferencia de comportamiento del coche con una opción u otra:


Añadimos la extensión de ML4K utilizando la URL que hemos copiado antes:


Y algo importante es que, como vamos a usar dos formas diferentes de reconocer la voz, añadimos otro elemento de reconocimiento de voz "ReconocimientoDeVoz2".


En la parte de bloques añadiremos estos tres bloques, para crearlos podremos utilizar bastantes de los bloques ya existentes para el reconocimiento de voz sin IA. En la siguiente imagen vemos todos los bloques juntos y después entraremos en detalle de cada uno en imágenes ampliadas.


El primer bloque "cuando VOZ_CON_IA.Clic" ejecuta dos acciones: Lanzar el reconocimiento de voz, en este caso "ReconocimientoDeVoz2" y por otro lado Entrenar el modelo por si el modelo se ha borrado de ML4K.

El siguiente bloque son las acciones a realizar tras el obtener el texto por voz. Como vemos esta primera parte es similar a la ya vista de control por voz del coche. Simplemente comprobamos si el resultado coincide exactamente con algunas palabras y "si no, si" coincide con otras. 
Un par de detalles es que solo hace esto si el bluetooth está conectado ya que si no lo está y enviamos algún mensaje tendremos un mensaje de error. Y por otro lado pasamos la variable resultado a minúsculas antes de compararla y luego ponemos todas las palabras en minúsculas para evitar que por algún motivo la función de reconocimiento de voz añada alguna mayúscula que evita que coincida el resultado.


Como decía, hasta aquí la programación clásica, es en la parte final donde entrará la parte de IA. Como podemos ver en el bloque "DespuésDeObtenerTexto", si los comparadores han llegado al final sin haber encontrado ninguna coincidencia exacta con las palabras anteriores llegamos a un "sino" que envía el resultado del reconocimiento de voz a clasificar por parte de la ML4K.

Y un último bloque de ML4K "GotClassification" en el que si la confianza es mayor del 20% en base a la clasificación envía por bluetooth una letra A si es "adelante" la etiqueta o una letra B si es "parar".



Como veis no es muy difícil de programar y el resultado es realmente espectacular, ya que con esos sencillos bloques habremos incorporado el trabajo de la red neuronal creada en ML4K a la programación de nuestra aplicación. Añadiendo nuevas palabras a las etiquetas o incluso diferentes etiquetas podremos incorporar más instrucciones al coche robot que sumadas a los otros modos de control: botones, sigue líneas... dan como resultado una aplicación realmente completa de control.

Un saludo,

Raúl.


No hay comentarios:

Publicar un comentario