El subsistema ASR es el encargado de procesar la voz del usuario y obtener el texto que será procesado por el módulo NLP con el fin de “comprender” la orden dada por el usuario y ejecutarla.
El reconocimiento de voz todavía es una tecnología imprecisa, por lo que es un campo de investigación en la actualidad con mucha actividad y donde se está avanzando enormemente en los últimos años.
No es el objeto de esta tesis investigar acerca de este tipo de tecnología, sino usarla para conseguir los mejores resultados en el sistema final. Para tal fin, se han tenido que llevar a cabo diferentes acciones que han ido desde la selección del tipo de reconocimiento de voz requerido para esta tesis doctoral a la configuración de los recursos necesarios para obtener los mejores resultados.
III.2.1. TIPO DE RECONOCIMIENTO DE VOZ EMPLEADO
En función del tipo de salida que ofrece el sistema de reconocimiento de voz podríamos clasificar los mismos como sistemas de dictado automático, sistemas de reconocimiento de comandos y sistemas de word spotting.
En el caso de los sistemas de dictado automático, el reconocedor de voz tiene la misión de transcribir todo lo que dice el usuario con la mayor precisión posible. Este tipo
de sistemas están pensados para escribir lo que dice el usuario por lo que por general son sistemas que trabajan con grandes vocabularios (decenas de miles de palabras).
Los sistemas de reconocimiento de comandos trabajan con gramáticas predefinidas donde se definen todas las utterances que el usuario puede decir. Aunque estas gramáticas pueden ser bastante complejas, en este caso el tamaño del vocabulario que se maneja por lo general suele ser pequeño (varios centenares de palabras). Estos sistemas están pensados para detectar pequeñas frases previamente definidas. Si el usuario dice algo que no se encuentra definido en la gramática, el reconocedor de voz simplemente no lo detectará.
Por último, los sistemas de word spotting permiten reconocer palabras previamente definidas en un stream de audio. Estos sistemas se usan principalmente en aplicaciones telefónicas de call center para detectar palabras clave y llevar al usuario al lugar donde puede encontrar la información que necesita.
En el caso de este trabajo, aunque los comandos son fácilmente identificables, y por tanto definibles, existen comandos que permiten al usuario dictar mensajes completos, o simplemente órdenes como las relacionadas con la agenda que tienen parámetros que pueden contener cualquier valor (como el lugar de una reunión). Por esa razón se ha decidido adoptar una solución mixta donde principalmente se usará un sistema de reconocimiento de voz para dictado pero que contendrá la definición de algunos comandos más sencillos que se puedan representar con gramáticas. De esta forma, si el usuario dice un comando sencillo que encaja con una entrada de alguna gramática, el sistema se decantará por esa opción. Mientras que si el reconocedor de voz no detecta ninguna correspondencia de lo dicho por el usuario con lo definido en una gramática entonces se limitará a transcribirlo. En el caso de los comandos que encajan con la definición en una gramática el propio reconocedor de voz puede hacer de motor NLP ya que al ser la gramática una representación estructurada, se puede devolver el comando ya formado con su significado sin necesidad de motor NLP. Sin embargo, en la mayoría de los casos el sistema se limitará a transcribir la orden del usuario y será el motor NLP el que se encargará obtener su significado, por lo que este subapartado se centrará en la descripción de estos.
Durante el desarrollo de este trabajo el reconocimiento de voz todavía no estaba disponible en los dispositivos móviles como ocurre en la actualidad. Mientras se trabajaba en el mismo no existían sistemas como Apple Siri o Google Now por lo que el reconocimiento de voz tenía que hacerse a través de otro proveedor, por lo que se estudiaron diferentes opciones que se detallan a continuación.
III.2.2.1. SpinVox
SpinVox era un sistema de reconocimiento de voz lanzado para transformar mensajes de voz en SMS. El usuario podía dictar una nota de voz para otra persona y esta última recibiría la transcripción en un mensaje de texto (SMS).
La calidad del servicio era muy buena puesto que el equipo de SpinVox había desarrollado un modelo lingüístico y acústico tras procesar millones de notas de voz que transcribieron transcriptores humanos. Eso les permitió tener un sistema muy precio para el dominio donde se empleaba.
SpinVox era un sistema puramente de transcripción y no permitía definir gramáticas, comandos o enriquecer el vocabulario de ninguna manera.
La compañía fue fundada en Reino Unido en el año 2003 y fue vendida en el año 2009 a la multinacional y gran gigante del sector del reconocimiento de voz: Nuance Communications.
III.2.2.2. Loquendo
Loquendo era un sistema de reconocimiento de voz muy popular en el uso en sistemas telefónicos para call centers. Debido a esto, su fuerte estaba en los sistemas orientados a comandos mediante el uso de gramáticas, y en los sistemas de word spotting, aunque disponía también de un sistema de transcripción para vocabularios pequeños (< 5000 palabras).
Por estas razones Loquendo no ofrecía un modelo lingüístico por defecto y tenía que definirse por el integrador.
Esta empresa italiana fue adquirida al igual que en el caso de SpinVox por la empresa Nuance Communication.
Se trata del producto estrella de Nuance Communication. Es un sistema de transcripción muy popular y con un rico vocabulario disponible para distintos idiomas. Además, dispone de funcionalidad para enriquecer el vocabulario existente y para entrenar el perfil de voz del usuario y mejorar la precisión, lo que podía ser útil en un momento determinado.
Sin embargo, no es un sistema pensado para funciona como un servicio, sino como una aplicación y hacía que el despliegue de este producto en un entorno de nube para dar servicio fuese demasiado complicado.
III.2.2.4. CMU Sphinx
Las soluciones comentadas anteriormente son comerciales y por tanto tienen un coste económico en el caso de emplearse en un sistema como el desarrollado en esta tesis.
CMU Sphinx es un sistema de reconocimiento de voz muy popular y potente desarrollado por la Universidad de Carnegie Mellon. Este sistema ofrece todos los tipos de funcionamiento: comandos definidos con gramáticas, word spotting o dictado, aunque no permite que el sistema pueda funcionar en varios modos simultáneamente. Sphinx es un sistema muy versátil y dispone de una tecnología en el estado del arte actual. El único problema que tiene es que, a diferencia de los sistemas comerciales, no incluye modelos acústicos ni lingüísticos, de forma que tienen que ser desarrollados por el integrador. Desarrollar un modelo lingüístico es bastante complicado pero es algo al alcance de esta tesis puesto que es relativamente sencillo construir un corpus del español para generar ese modelo, aunque es muy complicado que ese corpus se adapte a las necesidades del dominio planteadas en este trabajo. Por otro lado, desarrollar un modelo acústico es bastante complejo porque se necesitan centenares de audio (y su correspondiente transcripción) para entrenar al sistema. Además, para que ese modelo acústico sea bueno, es necesario que las grabaciones de voz de voz sean de una muestra poblacional diversa (sexo, edad, regiones, acentos,…).
Aunque existen modelos acústicos y lingüísticos gratuitos, al menos para el español están muy lejos de llegar a las necesidades de tasa de acierto necesarios para el correcto funcionamiento del sistema.
Finalmente la solución seleccionada fue SpinVox porque cumplía las necesidades mínimas (conversión voz a texto o transcripción) y por razones comerciales, que se explican a continuación.
SpinVox firmó un contrato con Vodafone en España en el año 2009 para crear un servicio que en España se llamó DictaSMS. Se consideró por tanto que los resultados de este trabajo podían interesar comercialmente a Vodafone para incrementar el uso de este servicio DictaSMS. La idea era la siguiente: cada vez que el usuario cliente de Vodafone empleaba el servicio DictaSMS, Vodafone le cobraba el coste del SMS más otra cantidad (similar al coste de otro SMS) por el uso del servicio de transcripción. Este servicio era poco utilizado y la idea que se le planteó al departamento de I+D de Vodafone fue que la aplicación resultante de este trabajo podría emplear el mismo servicio DictaSMS para capturar la voz del usuario y procesarla, de forma que por cada uso de la aplicación Vodafone tendría un beneficio directo.
III.2.4. CONSIDERACIONES DE LA SOLUCIÓN SELECCIONADA
El servicio DictaSMS ofrecido por Vodafone tenía lo necesario para poder realizar el sistema pero contaba también con importantes limitaciones que se tuiveron que salvar. La principal limitación consistía en que el servicio DictaSMS era un servicio asíncrono, es decir, no era un sistema en tiempo real y Vodafone no podía garantizar el tiempo que tardaría el servicio en devolver la transcripción. De esta forma el usuario podía decir una orden y podía pasar un tiempo elevado hasta obtener la respuesta.
Las pruebas que se hicieron indicaban que el servicio DictaSMS podía tardar hasta 5 minutos en devolver el resultado de la transcripción. De esta forma, la app para
smartphone desarrollada tenía que poder funcionar en segundo plano y esperar a
obtener el SMS enviado por el servicio DictaSMS para procesarlo y ejecutar el comando, como se describe en el apartado III.4. Aplicación móvil.
Otra limitación que tenía SpinVox es que no permitía enriquecer el diccionario. Puesto que era un servicio ofrecido por Vodafone, todo el servicio residía en sus instalaciones y no permitían modificaciones particulares del servicio. Esta limitación no se pudo salvar aunque los resultados obtenidos con el servicio genérico de DictaSMS eran suficientemente buenos para que no supusies una limitación que hiciese inviable el resultado final de la tesis doctoral.