Blog de Amazon Web Services (AWS)

Conociendo más a tus clientes a través de conversaciones – Transcripción de Audio y Análisis de Texto

Por Horacio Ferro, Arquitecto de Soluciones, AWS México

 

Ahora más que nunca las empresas están convencidas que trabajar con un enfoque centrado en sus clientes (Customer Centric) es la única manera de diferenciarse de sus competidores y con ello, mejorar el índice de satisfacción para traducirlo en mejores resultados de negocio tales como: Ingreso por cliente (Share of wallet),  Clientes activos (Loyalty & Churn reduction) y Nuevos clientes (Positive References).

Nuestros clientes muchas veces cuentan con conversaciones grabadas con fines de auditoría, ya sean llamadas a sus centros de contacto, video conferencias con sus clientes o alguna otra fuente, con las herramientas y servicios de AWS, es posible de forma sencilla obtener información valiosa de estas grabaciones al transcribirlas para obtener frases clave, análisis de sentimientos, detección de entidades y clasificación automática. De esta forma nuestros clientes pueden mejorar la satisfacción de sus clientes y entender sus áreas de oportunidad al poder entender cuales son los temas más recurrentes en dichas conversaciones.

El servicio de Amazon Transcribe facilita la transcripción de audio sin necesidad de conocimiento previo de AI/ML, basta con enviar la ubicación del archivo de audio en un bucket de Amazon Simple Storage Service a Transcribe y después de algunos minutos obtendremos la transcripción del mismo.

El servicio de Amazon Comprehend al igual que Amazon Transcribe permite realizar de texto sin conocimientos extensos de AI/ML, basta con enviar el texto o la ubicación del mismo dentro de un bucket de S3 para realizar el análisis que necesitemos y después de algunos minutos obtendremos los resultados.

Con la siguiente arquitectura automatizamos este proceso de forma simple, escalable, y manteniendo una eficiencia en costos y operación, al utilizar servicios serverless con los cuales mantendremos los costos al mínimo al incurrir en costos al momento de realizar la ejecución y eliminando la necesidad de administrar infraestructura. Para obtener dicho comportamiento utilizaremos el patrón de microservicios “Event Sourcing”.

 

 

Adicionalmente a los servicios de Amazon Transcribe y Amazon Comprehend, utilizaremos Amazon Simple Storage Service para almacenar el audio, las transcripciones y archivos de resultado y finalmente poder ser visualizados con Amazon QuickSight. Utilizaremos AWS Lambda para realizar las invocaciones a los servicios de Transcribe y Comprehend, así como mantener el estado del proceso en una tabla de Amazon DynamoDB y generar archivos para análisis al finalizar el proceso.

Utilizando AWS SAM (Serverless Application Model) es posible generar la mayor parte de la solución de forma automática. El único componente que no será generado es el dashboard de QuickSight.

A continuación se muestran fragmentos del documento en YAML para definir los eventos que iniciaran el procesamiento de las funciones Lambda.

  AnalyticsFunction:
    Type: AWS::Serverless::Function
    Properties:
      ..
      Events:
        KeyPhrasesFinish:
          Type: S3
           Properties:
             Bucket: !Ref ProcessBucket
             Events: s3:ObjectCreated:*
             Filter:
               S3Key:
                Rules:
                   - Name: prefix
                    Value: keyPhrases/
          SentimentFinish:
            Type: S3
            Properties:
              Bucket: !Ref ProcessBucket
              Events: s3:ObjectCreated:*
              Filter:
                S3Key:
                  Rules:
                    - Name: prefix
                     Value: sentiment/
         EntitiesFinish:
            Type: S3
            Properties:
              Bucket: !Ref ProcessBucket
              Events: s3:ObjectCreated:*
              Filter:
                S3Key:
                  Rules:
                    - Name: prefix
                     Value: entities/
  ComprehendFunction:
    Type: AWS::Serverless::Function
    Properties:
      ..
      Events:
        TranscribeFinished:
          Type: EventBridgeRule
          Properties:
            Pattern:
              source:
                - aws.transcribe
              detail-type:
                - Transcribe Job State Change
              detail:
                TranscriptionJobStatus:
                  - COMPLETED
                  - FAILED
  TranscribeFunction:
    Type: AWS::Serverless::Function
    Properties:
      ..
      Events:
        AudioUpload:
          Type: S3
          Properties:
            Bucket: !Ref ProcessBucket
            Events: s3:ObjectCreated:*
            Filter:
              S3Key:
                Rules:
                  - Name: prefix
                    Value: audio/

En el fragmento anterior  se configura la ejecución de las diferentes funciones lambda a partir de ciertos eventos de S3 y EventBridge, en el caso de AnalyticsFunction esta función se ejecuta en la creación de objetos con el prefijo “keyPhrases/”, “entities/” y “sentiment/”. En el caso de la función ComprehendFunction su ejecución es iniciada por un evento de EventBridge generado por AmazonTranscribe y en el caso de TranscribeFunction su ejecución es iniciada al crear objetos con el prefijo “audio/”.

Recuerda que puedes descargar el código completo y las instrucciones de implementación de la solución para hacer tus propias pruebas desde este repositorio de git, en el repositorio podrás encontrar más instrucciones.

Basta con instalar AWS SAM CLI y ejecutar los siguientes comandos para desplegar la solución:

$ sam build
$ sam package --output-template-file package.yaml --s3-bucket [ARTIFACTS_BUCKET_NAME] --s3-prefix transcribe-sentiment
$ sam deploy --template-file package.yaml --stack-name transcribe-sentiment --capabilities

Ahora es necesario poder explotar la información obtenida desde Amazon QuickSight, para eso crearemos un dashboard sencillo en el cual podamos ver la tendencia del sentimiento en las conversaciones, frases clave mayormente utilizadas y entidades detectadas dentro de las conversaciones.

Primero es necesario verificar que QuickSight tiene permisos para leer el contenido del bucket de S3 con los resultados del análisis, dentro de QuickSight en la sección de Administrar QuickSight (Manage QuickSight) se encuentra la sección de Seguridad y Permisos (Security and Permissions) en el menu de administración, en esta sección se localizan los permisos a otros servicios de AWS (QuickSight access to AWS services).

 

 

Seleccionar Add or remove para agregar el acceso al bucket de S3. Es necesario seleccionar detalles (Details) en Amazon S3 para realizar modificaciones a los buckets seleccionados, dar click en Select S3 buckets para agregar el bucket de análisis. Una vez seleccionado no olvidar dar clic en Finish y Update.

 

 

Ahora es necesario registrar la fuente de datos, para esta actividad es necesario regresar al dashboard principal de QuickSight y seleccionar sets de datos (Datasets) en el menu. En esta pantalla generaremos un nuevo set de datos (New Dataset) y seleccionaremos S3 de las opciones disponibles.

 

 

Para poder utilizar los archivos generados por el proceso, es necesario crear tres archivos manifiesto para S3, el cual será incluido al momento de generar las fuentes de datos, a continuación se muestran los ejemplos:

{
    "fileLocations": [
        {
            "URIPrefixes": [
                "s3://NOMBRE_BUCKET/analytics/entities/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CSV"
    }
}

{
    "fileLocations": [
        {
            "URIPrefixes": [
                "s3://NOMBRE_BUCKET/analytics/keyPhrases/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CSV"
    }
}

{
    "fileLocations": [
        {
            "URIPrefixes": [
                "s3://NOMBRE_BUCKET/analytics/sentiment/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CSV"
    }
}

Regresando a QuickSight en la pantalla de creación de la fuente de datos crearemos tres fuentes de datos utilizando cada uno de los archivos generados anteriormente. Es necesario crear nuevas fuentes de datos de S3, a continuación veremos paso a paso como crear dicha fuente.

1. Seleccionar nueva fuente S3.

 

 

2. Si el archivo es correcto podremos ver la siguiente ventana de confirmación, si damos clic en Edit/Preview podemos ver los datos cargados a QuickSight.

 

 

Repetir los pasos anteriores para las otras dos fuentes de datos.

Una vez completada la importación de las tres fuentes de datos crearemos un nuevo análisis. En la pantalla home de QuickSight seleccionamos Analyses y después haremos clic en New analysis.

 

 

Ahora es necesario importar un conjunto de datos para poder iniciar con la creación del análisis, seleccionemos el conjunto de datos de Entidades:

 

 

Posteriormente damos clic en “Create analysis“ e importaremos los dos conjuntos de datos restantes:

 

 

Para importar los conjuntos de datos restantes daremos clic en el icono de edición junto a Data set, el cuál podemos encontrar en la parte superior izquierda sobre el nombre del conjunto de datos (Entidades):

 

 

Seleccionamos el conjunto de datos de FrasesClave y hacemos clic en Select:

 

 

Repetimos el paso anterior ahora para Sentimiento.

 

En este ejemplo crearemos tres gráficas para entender de que se habla en las conversaciones:

1. Seleccionando el conjunto de datos Entidades crearemos una gráfica de barras para entender la distribución de las entidades, adicionalmente agregaremos un nivel de drill down con el texto de las entidades, de esta forma podemos entender aún mejor como se distribuyen estas entidades. Seleccionamos la gráfica existente y en la parte inferior izquierda seleccionamos la gráfica de barras, en la sección superior en X axis arrastramos el campo type y posteriormente arrastramos text debajo de type. Debemos obtener un resultado similar a la imagen siguiente.

 

 

2. Para entender el sentimiento detectado en las transcripciones seleccionamos el conjunto de datos Sentimiento, agregamos un nuevo elemento visual haciendo clic en Add y seleccionando Add visual. En la sección de tipo de gráfica seleccionamos pie y arrastramos el campo “sentiment” en GroupColor. Al finalizar tendremos una gráfica similar a la de la imagen.

 

 

3. Ahora visualizaremos las frases claves más recurrentes, seleccionaremos ahora FrasesClave, agregaremos un elemento visual y en la sección de tipo de gráfica seleccionamos Word Cloud, arrastramos Phrase a la sección Group By. De esta forma obtendremos una gráfica similar a la de la siguiente imagen.

 

 

Conclusión

Utilizando esta arquitectura, es posible integrar esta funcionalidad a cualquier fuente de audio como puede ser un contact center, reuniones por chime o cualquier otro medio que permita la grabación de conversaciones. De esta forma nuestros clientes ahora pueden obtener más información de la interacción con sus clientes y crear estrategias de una forma rápida y certera.

Siguientes pasos:

En este post se creo un flujo de trabajo para poder hacer transcripción y análisis de sentimiento, es posible también entrenar clasificadores para poder segmentar el análisis por área de interes, por ejemplo, productos, área de atención, tópicos de interes, etc.

Más información:

https://docs.aws.amazon.com/transcribe/latest/dg/what-is-transcribe.html

https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html

https://docs.aws.amazon.com/quicksight/latest/user/creating-an-analysis.html

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html

https://github.com/aws-samples/transcribe-comprehend-quicksight-demo

 


Sobre el autor

Horacio Ferro es Arquitecto de Soluciones de AWS México.

 

 

 

 

Sobre los revisores

Enrique Valladares es Arquitecto de Soluciones Sr. de AWS México.

 

 

 

 

Enrique Compañ es Arquitecto de Soluciones de AWS México.