Corrección de errores de un sistema automático de reconocimiento del habla

Share on facebook
Share on twitter
Share on linkedin

Introducción

El reconocimiento automático del habla (RAH) es el proceso de transformar una señal de audio (la voz humana) a su representación escrita. El RAH es un procedimiento complejo, pues tiene que adaptarse a diferentes variaciones de acentos y entonaciones con las que se pronuncian las palabras además de posibles degradaciones de la señal en el canal de comunicación utilizado.

Por los motivos arriba expuestos es común que la transcripción escrita de la señal hablada no sea exacta, sobre todo cuando nos encontramos en un dominio de aplicación que tiene un vocabulario muy específico. Los sistemas de RAH normalmente son desarrollados y probados utilizando un modelo general del idioma, lo cual conduce a la mejora en el reconocimiento de las palabras y frases más frecuentes, pero que puede desfavorecer a aquellas que son poco comunes en el lenguaje.

Esta situación representa un problema cuando se usa un sistema entrenado de forma general para aplicaciones donde se requiere el reconocimiento de una jerga particular que suele contener frases que en otro contexto carecerían de sentido o que contienen palabras en otros idiomas, como por ejemplo los platillos en el menú de un restaurante.

Una posible solución es entrenar un sistema de reconocimiento propio ad hoc al dominio de la aplicación en la cual se quiera utilizar, sin embargo esto no es tarea fácil, además de que sería deseable el poder usar todas las capacidades de un sistema de uso general pero adaptado al dominio propio.

Con esta motivación en mente y debido a que esta problemática es frecuente al utilizar diferentes sistemas de RAH en aplicaciones de la industria, nos dimos a la tarea de experimentar con el desarrollo de un método de pos-procesamiento que permita adaptar el reconocimiento y corregir los errores encontrados al transcribir señales de voz con un servicio comercial de uso general, como por ejemplo el proporcionado por Google.

El servicio de reconocimiento del habla Cloud Speech-to-Text (STT) de Google es consumido a través de una API como se muestra en la figura 1.

Figura 1.  Servicio STT de Google

La transcripción en forma de texto puede entonces ser usada como corresponda de acuerdo al tipo de aplicación que utilice el servicio de reconocimiento.

Experimentación

La experimentación fue realizada en el contexto de la recepción de órdenes por teléfono de una pizzería. Es común que este tipo de establecimientos utilice un menú de platillos, paquetes y promociones con nombres llamativos o muy particulares, que difícilmente son reconocibles por un sistema automático con un modelo de lenguaje general.

Para tener ejemplos de audio que sirvan para probar el funcionamiento del reconocimiento de voz, se utilizó una aplicación sobre la plataforma de comunicación Asterisk que nos permitió almacenar el audio de las llamadas telefónicas.

Se generaron 451 archivos de audio de frases emitidas por 9 usuarios diferentes, tomando como base conversaciones ocurridas en el contexto del levantamiento de órdenes de una pizzería real. El menú de dicha pizzería contiene ingredientes, paquetes y especialidades con nombres compuestos por palabras poco comunes o en otros idiomas.

Los archivos de audio generados fueron enviados al servicio de Google como se describió en la sección anterior, registrándose el resultado de la transcripción en una base de datos conjuntamente con la frase real pronunciada por el usuario.

Figura 2.  Generación y almacenamiento de ejemplos de transcripción de audio

La API del servicio STT permite enviar un archivo de audio para su conversión a texto siempre y cuando no sobrepase el minuto. Esto no representó un problema, pues los ejemplos generados consistieron generalmente en frases cortas. El servicio de transcripción también ofrece varias alternativas que permiten tunear el reconocimiento (cabe destacar que no todas ellas están disponibles para el idioma español).

En particular, una opción permite enviar un diccionario de frases contextuales que se espera sean pronunciadas con mayor frecuencia dentro del ámbito de aplicación, con la esperanza de mejorar el reconocimiento de dichas frases. Esta última alternativa se ajusta a nuestra problemática, por lo que probamos enviando una segunda vez los 451 archivos de audio al servicio de reconocimiento incluyendo ahora 34 frases propias de nuestro contexto y registrando las transcripciones resultantes.

Evaluación de transcripciones

En este punto contamos con 451 ejemplos de frases reales pronunciadas con dos transcripciones diferentes proporcionadas por el servicio de Google, una del modo general y la otra con el diccionario contextual de frases. La tabla 1 muestra algunos ejemplos.

FRASE REALTRANSCRIPCIÓN SIMPLETRANSCRIPCIÓN CON CONTEXTO
Dame una pizza grande de champiñones, tocino y piernaDame una pizza grande de champiñones y piernasDame una pizza grande de champiñones y piernas
Una pizza de camarón con palitos de jamón serranoUna pija de camarón con palitos de jamón serranoUna pizza de camarón con palitos de jamón serrano
Dame un paquete de jueves mozzarelosoDame un paquete de joda como para el otroDame un paquete de joda mozzareloso

Tabla 1.  Ejemplos de frases con las transcripciones del servicio de reconocimiento de habla de Google

En el primer ejemplo vemos que ambas transcripciones coinciden y cometen el mismo error al omitir la palabra “tocino”. El segundo ejemplo muestra el fallo en el reconocimiento de la palabra “pizza” a pesar de que esta fue proporcionada en el contexto. Finalmente, el tercer ejemplo muestra que el proporcionar la frase “jueves mozzareloso” como parte del contexto ayuda al reconocimiento de la frase, aunque no en su totalidad.

Para evaluar el desempeño del sistema de reconocimiento se usó la métrica WER (Word Error Rate), que es una medida del error resultante al comparar la transcripción hipotética con la frase objetivo mediante la siguiente fórmula:

WER=S+D+IN

donde S, D, I son las sustituciones, borrados e inserciones de palabras necesarias para convertir la frase hipotética en la frase objetivo y N es el número de palabras de la frase objetivo. Estos valores fueron acumulados entre todos los ejemplos y al final se obtuvo un resultado global. El WER obtenido con la transcripción básica fue del 33.7% y con la transcripción ayudada con el contexto se redujo a 31.1%.

Estos resultados muestran que el usar el diccionario contextual mejora de manera moderada el reconocimiento, sin embargo se considera que es posible reducir aún más los errores si se explota de forma más agresiva el conocimiento que se tiene del dominio de aplicación aún a costa de arriesgar la identificación del lenguaje de uso general.

Corrector de transcripciones

Para tratar de mejorar el reconocimiento y hacerlo más adaptable al dominio de aplicación desarrollamos un método de pos-procesamiento que utiliza métricas de distancia fonética sobre un conjunto de frases predefinidas (por ejemplo las mismas 34 frases que fueron utilizadas en las llamadas al modo contextual de la API de Google).

El algoritmo toma la frase hipotética obtenida por el servicio de STT y la convierte a su representación fonética con el estándar del International Phonetic Alphabet (IPA). El IPA es un sistema de notación fonética que usa un conjunto de símbolos para representar cada sonido distinto que existe en el lenguaje hablado. Por ejemplo, la transcripción IPA de la frase “Vero ya ve la llave en su llavero” se representa como “ˈbɛ.ɾo ʝa ˈβe la ˈʝa.βɛ ɛ̃n su ʝa.ˈβɛ.ɾo” (Puedes ver y generar ejemplos de transcripción fonética en español en el siguiente enlace).

El proceso continúa realizando una búsqueda sobre la versión fonética de la frase hipótesis, tratando de encontrar secciones de la frase que tengan similitud con alguna de las 34 frases contextuales que previamente fueron convertidas a su transcripción fonética.

Para determinar que tan similares son las frases contextuales con algún segmento de la frase hipotética se utiliza la distancia de Levenshtein estándar sobre sus representaciones fonéticas. La distancia es normalizada para obtener valores entre 0 y 1 y así poder aplicar un umbral de decisión. Este umbral sirve como un filtro para determinar que segmentos de la frase son candidatos a ser sustituidos por una frase específica del contexto.

Al final se tiene un conjunto de sustituciones candidatas a realizarse en la frase original. Estas sustituciones son realizadas en orden de acuerdo a su nivel de similitud, pero omitiendo aquellas que pudieran tener traslapes con segmentos previamente sustituidos, lo que da como resultado una transcripción corregida a partir de la transcripción propuesta por el servicio de STT y considerando las frases contextuales particulares.

Resultados

Empleando el proceso descrito en la sección anterior con las transcripciones obtenidas por Google se obtuvieron los resultados que se muestran a continuación:

Figura 3.  WER para diferentes umbrales de similitud fonética (transcripción básica)

Al aplicar el algoritmo corrector a las transcripciones obtenidas con el servicio básico de Google(sin darle frases contextuales) se observa una reducción en el WER hasta un 29.1% (umbral de decisión de 0.4). Este resultado representa una mejora sobre el WER obtenido con Google aún cuando se da el contexto en la llamada a la API.

El siguiente gráfico muestra cuando se aplica el pos-procesamiento usando como entrada la transcripción de Google que incluye las frases contextuales en la llamada a la API. El mejor resultado se obtiene nuevamente con un umbral de 0.4 y reduce el WER hasta un 27.3%

Figura 4.  WER para diferentes umbrales de similitud fonética (transcripción con contexto)

En resumen, la siguiente tabla muestra la reducción en la cantidad de errores de reconocimiento y en WER relativo cuando se aplica el pos-procesamiento corrector a las transcripciones de Google en sus dos modalidades, de un total de 2664 palabras contenidas en los ejemplos de audio.

Modo de reconocimientoErrores TTS       Errores corrector    WER relativo       
Básico89777413.6%
Con contexto82872712.2%

Tabla 2.  Número de errores de edición y WER relativo

En la figura 5 se puede observar que a nivel sentencia el corrector fonético produce mejoras en el reconocimiento en más del 30% de las sentencias erróneas cuando se usa un umbral de 0.4 sin que el algoritmo realice sustituciones falsas de manera significativa. Esto empieza a ocurrir cuando se usa un umbral mayor, lo que provoca que se echen a perder más frases de las que se corrigen.

Figura 5.  Porcentaje de sentencias mejoradas con relación al total de sentencias con errores de reconocimiento

En algunos casos la frase interpretada de manera errónea logra corregirse a su versión original, mientras que en otros casos la transcripción es tan diferente a la frase pronunciada que no es posible de corregir, sin embargo aún en estos casos una corrección parcial resulta de utilidad para poder interpretar de mejor manera la intención del usuario.

Conclusiones y trabajo futuro

En general podemos decir que el pos-procesamiento de las transcripciones con el corrector fonético ayuda a mejorar el reconocimiento cuando se tiene un vocabulario específico del dominio de aplicación y permite ser utilizado como parte de un proceso de comunicación entre un humano y un agente automático. En la práctica dicho esquema ha sido utilizado en aplicaciones en tiempo real sin que el procesamiento extra represente un costo significativo en los tiempos de latencia de la comunicación humano-máquina.

En el futuro se pretende continuar experimentando con diferentes formas de segmentar la frase hipotética para su procesamiento, así como probar el desempeño usando alternativas de representación fonética o de cálculo de la similitud entre frases.

Los detalles del algoritmo pueden encontrarse en el artículo presentado en el 10° Congreso Mexicano de Inteligencia Artificial (COMIA 2018), de próxima publicación en la revista Research in Computing Science.

Share on facebook
Share on twitter
Share on linkedin

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*

*

¡Conozcámonos mejor!

Súmate a nuestra newsletter donde además de ofertas exclusivas y novedades de SoldAI estaremos envíandote noticias y tendencias del mundo de la tecnología e Inteligencia Artificial.

¡Entérate de todo!