Bienvenidos a esta entrada en la que intentaremos mostrar como se incluye en un ejemplo real, reconocimiento de voz en nuestras aplicaciones o cualquier otro software que desarrollemos por nuestra parte.
Para utilizar este tutorial, vamos a utilizar la API de Wit.ia una start-up de éxito, que hasta hace pocos días solo había llamado la atención al sector de los desarrolladores y a Facebook, quién la acaba de comprar.
Tabla de contenidos
Como funciona Wit.ia
Este servicio intenta, llevar el reconocimiento de voz de forma sencilla a cualquier plataforma y software que desarrollemos, ahora mismo soportan todos los dispositivos móviles, clientes webs, aplicaciones programas en C, nuestras Raspberry Pi etc.
Pero no sólo buscan reconocer las palabras que decimos y formar un frase, como otros muchos servicios, sino que intentan analizar esa frase y extraer datos de la misma. Por ejemplo, si nosotros le decimos “hay 50º en Madrid” el nos devolverá:
{
"msg_id": "0b9d437c-cb85-4871-a1d6-993e51de6f26",
"_text": "hay 50 grados en Madrid",
"outcomes": [
{
"_text": "hay 50 grados en Madrid",
"intent": "wit_location",
"entities": {
"temperature": [
{
"type": "value",
"value": 50
}
],
"location": [
{
"value": "Madrid"
}
]
},
"confidence": 0.58
}
]
}
Como se puede ver, nos devuelve el texto, que le hemos dicho, como cualquier software de reconocimiento de voz. Pero luego también nos informa en “entities” de que hay dos entidades:
- temperatura, de la cual sabemos el valor, que es 50.
- localización de la cual sabemos el valor que es Madrid.
- Con una confianza en su predicción del 58% (esto es debido, a que casi no he entrenado el software).
Si queréis ver otro ejemplo, podéis ver el propio que ofrecen los autores del servicio.
Empezando con Wit.ai
Lo primero que debemos hacer es registrarnos en GitHub, si aún no tenemos cuenta allí, porque es la manera de acceder a Wit.ai
Una vez dentro, deberemos crear una instancia y lo mejor es que sigamos el tutorial que nos ofrecen:
Aunque toda la página y la documentación está en inglés, reconoce bastante bien el idioma Español (por lo menos el acento de España)
Cómo funciona el sistema
La parte que he podido probar, que no es todo el sistema, sino las entidades predefinidas, funciona de la siguiente manera:
Introducimos una frase, por ejemplo: “Hace calor en Sevilla” y obtenemos lo siguiente:
Ahora debemos marcar, las entidades, es decir, la parte de la frase que tiene datos que queremos extraer:
En entidades, nos salen las predefinidas de Wit o podemos crear nuevas nosotros, pero por el momento, yo he usado las suyas. Ahora marcamos wit/temperature y de la misma manera, marcamos Sevilla como localización:
Ahora le damos a validar. El servicio nos va a decir que está entrenando nuestro reconocimiento de voz, porque el objetivo es que cuando digamos: “que calor hace en Madrid” detecte como localidad Madrid y como temperatura, calor.
Llegados a este punto, las entidades de Wit que tiene por defecto, se nos quedan pequeñas, ya que wit/temperatura, solo acepta un valor numérico, así que vamos a Add entity y escribimos un nombre, que denotará nuestra nueva entidad, yo lo he llamado temperatura:
Probando el reconocimiento de voz de Wit
Después de un par de segundos, que tarda en entrenarlo, podemos ver como si realizamos el programa de prueba del manual y decimos la frase “que calor hace en Madrid” tenemos:
Desde su propia página, podemos ver tanto las frases que hemos introducido para probar el servicio, como las que ha reconocido el programa, de nuestros comandos de voz:
Claro este sistema, como todos los de reconocimiento de voz tienen el problema, de que hay que enseñarle los patrones y entrenarlo durante bastante tiempo y con ejemplos de todo tipo, para obtener precisión. En el siguiente ejemplo vemos como le falta precisión, porque no le hemos enseñado lo suficiente:
En resumen creo que es un servicio que va a dar un gran impulso al IoT (“Internet de las cosas”), y en poco tiempo vamos a ver una pequeña revolución en las aplicaciones móviles, donde la mayoría van a incorporar reconocimiento de voz.
Espero que os animéis a probar esta tecnología y nos contéis los resultados que obtenéis. Si queréis empezar a hacer algo más complejo, podéis consultar la documentación oficial, ya que esta entrada, no pretende ser un manual completo y riguroso, sino mostrar un ejemplo y las posibilidades del sistema.