mentor-asistente-ai-para-habla-en-público
Puede encontrar la publicación de blog relacionada con este repositorio aquí: Mejore las habilidades para hablar en público utilizando un asistente virtual generativo basado en inteligencia artificial con Amazon Bedrock
Advertencia
Este ejemplo es solo para fines experimentales y no está listo para producción. La implementación de esta muestra puede generar costos . Asegúrese de eliminar la infraestructura siguiendo las instrucciones proporcionadas al final cuando ya no la necesite.
Mejore sus habilidades para hablar en público utilizando un asistente virtual basado en GenAI con Amazon Bedrock
Hablar en público es una habilidad fundamental en el mundo actual, ya sea para presentaciones profesionales, entornos académicos o crecimiento personal. Sin embargo, muchas personas luchan contra la ansiedad, la falta de confianza y la comunicación ineficaz durante las charlas en público. Contratar a un entrenador para hablar en público es costoso y su disponibilidad es limitada. Ahora, con la llegada de los modelos de lenguaje grande (LLM), personas de diversos orígenes y ubicaciones, así como organizaciones de cualquier tamaño, pueden utilizar un asistente virtual impulsado por IA generativa para beneficiarse del análisis del habla en tiempo real y la identificación de áreas. para mejorar y sugerencias para mejorar la presentación del discurso.
En este repositorio, presentamos un asistente virtual impulsado por Amazon Bedrock que puede transcribir el audio del discurso de presentación, examinarlo en busca de uso del lenguaje, errores gramaticales, palabras de relleno, repetición de palabras y oraciones, etc., y brindar recomendaciones, así como sugerir una versión seleccionada. del discurso del usuario para mejorar la presentación. Esta solución ayuda a perfeccionar las habilidades de comunicación, aumentar la confianza y, en última instancia, capacitar a las personas para que se conviertan en oradores públicos más eficaces e impactantes. Las organizaciones de diversos sectores, incluidas corporaciones, instituciones educativas, entidades gubernamentales y personalidades de las redes sociales, pueden aprovechar esta solución para brindar capacitación automatizada a sus empleados, estudiantes y oradores en público.
Esta solución está escrita únicamente en Python y utiliza una plantilla CDK para implementar la infraestructura requerida en AWS.
Descripción general de la solución
La solución consta de 4 componentes principales:
- Grupo de usuarios de Amazon Cognito para la autenticación de usuarios: los usuarios autenticados tienen acceso al portal web Public Speaking Mentor AI Assistant para cargar grabaciones de audio/vídeo.
- Un portal web sencillo creado con Streamlit para cargar grabaciones de audio/vídeo: los archivos cargados se almacenan en un depósito de Amazon Simple Storage Service (Amazon S3) para su posterior procesamiento, recuperación y análisis.
- Un flujo de trabajo de AWS Step Functions para orquestar la conversión del audio a texto mediante Amazon Transcribe y luego invocar Amazon Bedrock con encadenamiento de indicaciones de IA para generar recomendaciones de voz y sugerencias de reescritura.
- Amazon Simple Notification Service (Amazon SNS) para enviar una notificación por correo electrónico al usuario con recomendaciones generadas por Amazon Bedrock.
Esta solución aprovecha Amazon Transcribe para la conversión de voz a texto mediante el reconocimiento automático de voz. Cuando el usuario carga un archivo de audio o video, Amazon Transcribe transcribe el discurso en texto, que luego se pasa como datos de entrada al modelo Anthropic Claude 3.5 Sonnet alojado en Amazon Bedrock. La solución envía dos mensajes a Amazon Bedrock junto con el texto transcrito. El primer mensaje es para generar comentarios y recomendaciones sobre el uso del lenguaje, errores gramaticales, palabras de relleno, repetición de palabras y oraciones y otros aspectos del discurso. El segundo mensaje es para obtener una versión seleccionada del discurso original del usuario. El encadenamiento de mensajes de IA se realiza con Amazon Bedrock para que estos dos mensajes brinden una respuesta altamente seleccionada. En última instancia, la solución consolida los resultados de ambas indicaciones, muestra las recomendaciones integrales derivadas de Amazon Bedrock en la página web del usuario y envía un correo electrónico al usuario con los resultados. Actualmente, esta solución admite la voz del usuario únicamente en inglés.
Arquitectura
El siguiente diagrama muestra la arquitectura de nuestra solución.
Exploremos la arquitectura paso a paso:
- El usuario se autentica en el portal web Public Speaking Mentor AI Assistant (una aplicación Streamlit alojada en el escritorio local del usuario) utilizando el mecanismo de autenticación del grupo de usuarios de Amazon Cognito.
- El usuario carga un archivo de audio/vídeo en el portal web, que se almacena en un depósito cifrado de Amazon S3.
- El servicio S3 desencadena un evento s3:ObjectCreated para cada archivo que se guarda en el depósito.
- Amazon EventBridge invoca el flujo de trabajo de AWS Step Functions en función de este evento.
- El flujo de trabajo de AWS Step Functions utiliza integraciones del SDK de AWS para invocar Amazon Transcribe e inicia un StartTranscriptionJob, pasando el depósito S3, la ruta del prefijo y el nombre del objeto en el parámetro MediaFileUri. El flujo de trabajo espera a que se complete el trabajo de transcripción y guarda la transcripción en otra ruta de prefijo de depósito de S3.
- Luego, el flujo de trabajo de AWS Step Functions utiliza las integraciones optimizadas para invocar la API InvokeModel de Amazon Bedrock, que especifica el modelo Anthropic Claude 3.5 Sonnet, el mensaje del sistema, los tokens máximos y el texto de voz transcrito como entradas a la API. El mensaje del sistema le indica a Claude que brinde sugerencias sobre cómo mejorar el discurso identificando gramática incorrecta, repeticiones de palabras o contenido, uso de palabras de relleno y otras recomendaciones.
Importante
Para evitar encontrarnos con la limitación de tamaño de carga útil de StepFunctions de 256 KB, utilizamos integraciones optimizadas de AWS Lambda en Step Functions para guardar la carga útil para los parámetros de inferencia de Bedrock en un depósito de S3. La función AWS Lambda crea las cargas útiles necesarias y las guarda en un depósito S3 determinado. Luego, Step Functions utiliza la ruta del depósito S3 en el parámetro input
de la API Bedrock InvokeModel; este campo opcional es específico de la integración optimizada de Amazon Bedrock con Step Functions. Esto nos permite pasar cargas útiles superiores a 256 KB.
- Después de recibir una respuesta de Amazon Bedrock, el flujo de trabajo de AWS Step Functions utiliza el encadenamiento de mensajes para crear otra entrada para Amazon Bedrock, incorporando el discurso transcrito anteriormente, la respuesta anterior del modelo y solicitando al modelo que proporcione sugerencias para reescribir el discurso.
- Finalmente, el flujo de trabajo combina estos resultados de Amazon Bedrock y crea un mensaje que se muestra en la página web del usuario que ha iniciado sesión.
- Al final, el flujo de trabajo de Step Functions invoca la integración optimizada de SNS Publish para enviar un correo electrónico al usuario con el mensaje generado por Bedrock.
- La aplicación Streamlit consulta las funciones de paso para mostrar los resultados de salida en la página web del usuario de Cognito.
Máquina de estados de funciones de paso
El siguiente diagrama muestra el flujo de trabajo de la máquina de estado de Step Functions. También puede acceder al equivalente en lenguaje de estados de Amazon (ASL) de la definición de máquina de estados aquí: PublicSpeakingMentorAIAssistantStateMachine ASL
Instalación
Requisitos previos
Para implementar la solución Public Speaking Mentor AI Assistant, debe tener los siguientes requisitos previos:
Una cuenta de AWS con suficientes permisos de AWS Identity and Access Management (IAM) para los siguientes servicios de AWS para implementar la solución y ejecutar el portal web de aplicaciones Streamlit.
- Roca Amazónica
- Amazon Transcribe
- Funciones de paso de AWS
- AWS Lambda
- Puente de eventos de Amazon
- Cognito Amazonas
- redes sociales de amazon
- amazon s3
- Amazon CloudWatch
- Formación en la nube de AWS
Acceso al modelo habilitado para Claude 3.5 Sonnet de Anthropic en Amazon Bedrock en la región de AWS que desee
Entorno de escritorio local con AWS CLI (interfaz de línea de comandos), la última versión de AWS CDK (2.159.0 o superior), Python 3.8 o superior y Git instalado.
Configuración de AWS CLI con las credenciales de AWS necesarias y la región de AWS deseada.
Importante
Asegúrese de tener instalado el último CDK (v2.159.0 o superior), ya que la compatibilidad con la construcción Anthropic Claude 3.5 Sonnet CDK no está disponible en versiones anteriores.
Implementar la solución Asistente de IA de Mentor para hablar en público
Complete los siguientes pasos para implementar la infraestructura de AWS del Asistente de IA de Public Speaking Mentor:
- Clona el repositorio en tu entorno de disco local con el siguiente comando:
git clone https://github.com/aws-samples/improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock.git
- Cambie el directorio al repositorio clonado y al directorio
app
que contiene.
cd improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock/app
- Cree un entorno virtual de Python para infraestructura:
- Activa tu entorno virtual:
source .venv/bin/activate
- Instalar las dependencias requeridas
pip install -r requirements.txt
- (Opcional) Sintetice la plantilla de AWS CloudFormation utilizando AWS CDK (Cloud Development Kit) para Python.
Consejo
Es posible que deba realizar un arranque de cdk por única vez usando el siguiente comando. Consulte Arranque de CDK para obtener más detalles.
cdk bootstrap aws:// < ACCOUNT-NUMBER- 1> / < REGION- 1>
- Implemente la plantilla de AWS CloudFormation en su cuenta de AWS y en la región seleccionada
Una vez que el CDK se haya implementado correctamente, siga los pasos a continuación para crear un usuario de Cognito.
Cree un usuario de Amazon Cognito para la autenticación
Complete los siguientes pasos para crear usuarios en el grupo de usuarios de Amazon Cognito para acceder al portal web. Los usuarios creados no necesitan ningún permiso de AWS:
- Inicie sesión en la consola de AWS de su cuenta y seleccione la región de AWS de su implementación.
- En Amazon Cognito, en Grupos de usuarios, haga clic en el grupo de usuarios creado por la plantilla de CloudFormation. El nombre del grupo de usuarios tendría un prefijo PSMBUserPool seguido de una cadena de caracteres aleatorios como una palabra.
- Haga clic en el botón Crear usuario e ingrese un nombre de usuario y contraseña.
- Finalmente haga clic en el botón crear usuario en la parte inferior derecha.
Suscríbase al tema SNS para recibir notificaciones por correo electrónico
Complete los siguientes pasos para suscribirse al tema de SNS y recibir notificaciones por correo electrónico de recomendaciones de voz:
- Inicie sesión en la consola de AWS de su cuenta y seleccione la región de AWS de su implementación.
- En Amazon SNS, en Temas, haga clic en el tema creado por la plantilla de CloudFormation. El nombre del tema debe verse como InfraStack-PublicSpeakingMentorAIAssistantTopic seguido de una cadena de caracteres aleatorios como una palabra.
- Haga clic en el botón Crear suscripción, seleccione Protocolo como correo electrónico en el menú desplegable e ingrese su dirección de correo electrónico en el cuadro Punto final.
- Finalmente haga clic en el botón Crear suscripción en la parte inferior derecha.
Ejecute la aplicación Streamlit para acceder al Portal Web
Complete los siguientes pasos para ejecutar la aplicación Streamlit para acceder al portal web Public Speaking Mentor AI Assistant:
- Cambie el directorio a
webapp
dentro del directorio app
.
- Inicie el servidor Streamlit en el puerto 8080.
streamlit run webapp.py --server.port 8080
- Tome nota de la URL de la aplicación Streamlit para su uso posterior. Dependiendo de la configuración de su entorno, puede elegir una de las tres URL (local, de red o externa) proporcionadas por el proceso en ejecución del servidor Streamlit.
Note: Allow inbound traffic on port 8080
Asegúrese de que el tráfico entrante en el puerto 8080 esté permitido en su máquina local.
Uso
Siga los pasos a continuación para utilizar Public Speaking Mentor AI Assistant para mejorar su discurso:
- Abra la URL de la aplicación Streamlit en su navegador (preferiblemente Google Chrome) que anotó en los pasos anteriores.
- Inicie sesión en el portal web con el nombre de usuario y la contraseña de Amazon Cognito creados anteriormente para la autenticación.
- Cargue su grabación de audio/vídeo para obtener recomendaciones de voz y resultados de reescritura de voz.
- Haga clic en Examinar archivos para localizar y seleccionar su grabación.
- Haga clic en el botón Cargar archivo para cargar su archivo en el depósito de Amazon S3.
- Tan pronto como finaliza la carga del archivo, el Asistente de IA del Mentor de Oratoria procesa la transcripción de audio y solicita los pasos de ingeniería para generar recomendaciones de discurso y reescribir los resultados.
- Una vez que se complete el procesamiento, podrá ver las recomendaciones de voz y los resultados de reescritura de voz en la página web, así como recibirlas en su correo electrónico a través de notificaciones de Amazon SNS.
- En el lado derecho de la página web, puede revisar todos los pasos de procesamiento realizados por la solución Public Speaking Mentor AI Assistant para obtener los resultados de su discurso.
Limpiar
Complete los siguientes pasos para limpiar sus recursos:
- Termine el proceso del servidor de aplicaciones Streamlit que se ejecuta en su entorno mediante la operación Ctrl+C.
- Cambie al directorio
app
en su repositorio. - Destruya AWS CloudFormation utilizando AWS CDK para Python.
Algunas limitaciones
- El código proporcionado está pensado como una demostración y un punto de partida, no listo para producción. La aplicación Python se basa en bibliotecas de terceros como Streamlit y streamlit-cognito-auth. Como desarrollador, es su responsabilidad examinar, mantener y probar adecuadamente todas las dependencias de terceros. En particular, deberían evaluarse exhaustivamente los mecanismos de autenticación y autorización. En términos más generales, debe realizar revisiones y pruebas de seguridad antes de incorporar este código de demostración en una aplicación de producción o con datos confidenciales.
- En esta demostración, Amazon Cognito tiene una configuración sencilla. Tenga en cuenta que los grupos de usuarios de Amazon Cognito se pueden configurar para aplicar políticas de contraseñas seguras, habilitar la autenticación multifactor y configurar AdvancedSecurityMode en ENFORCED para permitir que el sistema detecte y actúe ante intentos de inicio de sesión maliciosos.
- AWS proporciona varios servicios, no implementados en esta demostración, que pueden mejorar la seguridad de esta aplicación. Los servicios de seguridad de red, como las ACL de red y AWS WAF, pueden controlar el acceso a los recursos. También puede utilizar AWS Shield para protección DDoS y Amazon GuardDuty para detección de amenazas. Amazon Inspector realiza evaluaciones de seguridad. Hay muchos más servicios y mejores prácticas de AWS que pueden mejorar la seguridad; consulte el modelo de responsabilidad compartida de AWS y la guía de mejores prácticas de seguridad para obtener recomendaciones adicionales. El desarrollador es responsable de implementar y configurar adecuadamente estos servicios para cumplir con sus requisitos de seguridad específicos.
- Se recomienda la rotación regular de secretos, pero no se implementa en esta demostración.
Reconocimiento
La mayor parte del código de la aplicación web optimizada de AWS Step Functions está inspirada en el siguiente repositorio de github de ejemplos de AWS: implementar-streamlit-app
Seguridad
Consulte CONTRIBUCIÓN para obtener más información.
Licencia
Esta biblioteca tiene la licencia MIT-0. Ver el archivo de LICENCIA.