El otro día me plantearon un caso de uso que me pareció interesante explorar, y debido a que los resultados me fascinaron quiero compartirlo con Uds.
En esta época de anuncios acerca de “…apriete un botón en su computadora y un modelo de Machine Learning o Inteligencia Artificial hará todo lo que Uds. Quiera…” al CMO de un cliente nuestro le pareció súper natural el planteo del siguiente caso:
Transcribir a archivos de texto horas y horas de grabaciones del sistema de atención a clientes.
Ok my friend, desafío aceptado.
Los insumos
Íbamos a utilizar los clips que nuestro amigo menciona, pero como no podíamos acceder todavía a sus archivos, preparé una serie de clips de audio para entrenar los modelos y poder presentar una prueba de concepto completa a nuestro cliente.
Para esto utilicé porciones de video que extraje de algunos webinars que he dictado a través del tiempo y que tenía en el disco de mi laptop. Algunos en español, otros en inglés.
Para el ejemplo que describiré ahora, pueden ver el video completo acá: https://www.decisionscience.bi/2020/09/20/demistifying-price-elasticity/
Subí el video a AWS (específicamente a un bucket de S3), para agilizar el proceso y tenerlo siempre disponible.
Armado del Modelo
Con una simple interface drag and drop, podemos definir el flujo de procesamiento del modelo.
En nuestro primer nodo, debemos definir los datos que utilizaremos, lo que se hace fácilmente con un simple JSON cuya estructura la podemos tomar de la documentación disponible:
En nuestro caso el Id del video, el email a notificar cuando el job se complete y la url conteniendo el activo de datos a utilizar (en este caso nuestro video).
Asignamos las variables definidas en nuestro JSON al payload del modelo, seleccionamos el motor de procesamiento y capturamos los errores (en caso de que surgiera alguno).
Salvamos, hacemos deploy y ya nuestro modelo está listo para utilizar.
Así que pasamos a Alteryx.
Para ejecutar nuestros modelos, existen dos etapas:
- La primera es disparar el job de ejecución al servidor
- La segunda es leer los resultados.
Para ello, tenemos en el Gallery dos herramientas (https://gallery.alteryx.com/#!app/Veritone-aiWARE-Tools/5ff7444e0462d71998d0c4be), una para cada proceso.
Paso 1: Lanzamos el job al servidor:
Seleccionamos desde dónde estaremos alimentando los datos, en este caso desde S3, pero podríamos estar subiendo archivos desde nuestra máquina, tomar datos desde una herramienta conectada al conector de input, o seleccionar archivos subidos anteriormente.
Luego le damos un nombre a nuestro proyecto (en este caso “Webinar Transcription”) y como seleccioné que iba a utilizar un video alojado en S3, debo colocar las credenciales de acceso.
Por último, en la parte inferior de la herramienta, seleccionaremos qué modelo vamos a utilizar. Disponemos de la opción de flujos standard o custom (creados por nosotros, como el que les comenté más arriba)
Y eso es todo lo que necesitamos, así que a ejecutar el workflow.
Paso 2: La segunda parte del ejemplo involucra el acceso a los resultados del modelo de transcripción, donde esperamos leer la transcripción del contenido.
Para eso, en un flujo nuevo, vamos a utilizar la segunda herramienta mencionada más arriba (Query aiWARE Data):
Esta vez, vamos a seleccionar de nuestras opciones “List of Assets”, que corresponde a los resultados de los modelos ejecutados por nosotros previamente.
En caso de que exista algún proceso nuestro, todavía ejecutándose en el servidor, lo veríamos debajo de la sección “Pending AI Jobs”.
Un poco de parsing a los resultados recibidos y podemos acceder a toda la transcripción del audio.
Todo el texto en un campo único, o
Palabra por palabra, con los datos en milisegundos donde aparece en el audio, y el % de confianza de su traducción.
Un caso de uso simple, pero de altísimo valor para las empresas. Pensemos en la aplicación de estas soluciones a transcripción de llamadas de Call Center, testimonios judiciales, generación de manuales en base a dictado, subtitulado de videos, en fin, sus aplicaciones son infinitas.
En breve les estaré compartiendo otros casos de uso (reconocimiento facial en videos, reconocimiento de logotipos en fotos y videos y otros más) en los que estoy trabajando.
Espero que les sea útil y no duden en contactarse si necesitan ayuda/apoyo.
Saludos