Permite la traducción de voz entre humanos en tiempo real con ConversationRelay de Twilio
Time to read:
Imagina un mundo en el que las barreras de idioma se disuelven en tiempo real, como el traductor universal de Star Trek que hacía posible la diplomacia intergaláctica. Es posible que aún no estemos viajando por las estrellas, pero el producto Conversation Relay de Twilio nos acerca un paso más a esa visión.
Con esta publicación de blog, aprende a configurar un servicio de traducción simultánea en tiempo real con Conversation Relay de Twilio, que permite que cualquier persona se comunique en una llamada utilizando su idioma principal, o el que mejor le acomode, sin perder el ritmo. De igual importancia, el humano del otro lado de la llamada también puede utilizar su idioma preferido. Ya sea que estés ayudando a los clientes a resolver problemas complejos o conectando a los pacientes con la atención que necesitan, esta tecnología hace que las conversaciones fluyan de forma natural y auténtica entre idiomas.
¿Y cómo logra Conversation Relay de Twilio esta magia? ¿Y cómo puede revolucionar la forma en que las empresas y organizaciones se conectan con el mundo? Analicemos los detalles.
Cómo funciona la aplicación
Conversation Relay se lanzó como versión beta pública en noviembre de 2024 y se centró en conectar a seres humanos con los agentes de IA. Conversation Relay elimina la complejidad de crear aplicaciones de voz mediante la abstracción de los componentes de voz a texto y de texto a voz y la provisión de un sistema de orquestación sencillo y basado en websocket para conectarse a tu aplicación.
No es de sorprender que el caso de uso de los agentes de IA haya recibido mucha atención. Sin embargo, los humanos aún necesitan comunicarse entre sí y Conversation Relay también puede ayudar a potenciar estas conversaciones. Además de conectarse a la IA generativa, Conversation Relay puede conectarse a otros tipos de servicios de procesamiento de texto para permitir más casos de uso. Un caso de uso obvio es la traducción entre humanos.
A continuación, presentaremos una prueba de concepto para mostrar la traducción entre humanos mediante Twilio Conversation Relay. La aplicación de referencia se crea con AWS y sus productos sin servidor, pero la arquitectura proporciona una estructura para crear soluciones en otros proveedores de nube. Los servicios de traducción se basan en la tecnología de AWS Translate.
Comencemos.
Aplicación de prueba de concepto
Centrémonos en crear una aplicación de prueba de concepto mediante Conversation Relay. Esta es la arquitectura de referencia:
Repasemos el diagrama con las notas que se señalan con los números del 1 al 6.
- Llamada de voz entrante: la persona que llama realiza una llamada a un número de Twilio y el controlador de llamadas entrantes dirige la llamada a tu aplicación. Tu aplicación utilizará el número de teléfono de la persona que llama para determinar las preferencias de idioma y establecer una sesión de Conversation Relay.
- Establecer el estado de la persona que llama y el destinatario: dado que la persona que llama necesita hablar con otro humano en directo, configura y guarda el estado para ese otro humano (“destinatario”) y vincula ambas llamadas en la gestión de estados. Por último, inicia un evento para hacer una llamada al otro humano.
- Realizar una llamada saliente: utiliza la plataforma de Twilio para realizar la segunda llamada y establecer una segunda sesión independiente de Conversation Relay.
- La persona que llama dice algo: con ambas llamadas separadas y activas, la persona que llama dice algo y la sesión de Conversation Relay utiliza la función de voz a texto para convertir las palabras habladas en texto y envía el resultado a través de mensajes websocket a tu aplicación.
- Paso de traducción: tu aplicación recibe el texto de la persona que llama y mantiene el estado de ambas llamadas. Utiliza el servicio de traducción para convertir el texto que dijo la persona que llama al idioma del destinatario.
- Pronunciar las palabras traducidas: tu aplicación publica el texto traducido en la otra conexión de websocket, la que pertenece al destinatario. Conversation Relay toma ese texto y pronuncia las palabras en el idioma del destinatario. El destinatario puede entonces, a su vez, hablar en su idioma para iniciar el proceso en dirección contraria.
Todo esto suena genial, pero ¿funciona?
¡Claro que sí! Mira el siguiente video que contiene una descripción general de la arquitectura y una demostración.
Video introductorio con demostración
¿Quieres ver también un video de la instalación?
Requisitos previos
¡Esta no es una creación para el nivel de principiante! Debes tener cierto conocimiento de AWS, computación sin servidor y programación antes de continuar.
- Una cuenta de Twilio. Si aún no tienes una, puedes registrarte aquí para obtener una gratuita.
- Un número de teléfono compatible con voz y proporcionado en tu cuenta de Twilio. Puedes obtener más información aquí.
- Una cuenta de AWS con permisos para aprovisionar puertas de enlace de API, Lambdas, AWS Translate, DynamoDB, roles y políticas de IAM y temas de SNS. Puedes registrarte para obtener una cuenta aquí.
- CLI de AWS instalada con credenciales de AWS configuradas.
- CLI de SAM de AWS instalada.
- Node.js instalado en tu computadora (versión 18 o posterior).
¡Vamos a crearlo!
1. Descarga el código para esta aplicación
Descarga el código de este repositorio y luego abre la carpeta en tu entorno de desarrollo preferido.
El repositorio contiene todo lo necesario para implementar esta solución.
En primer lugar, debemos instalar un par de paquetes de nodos. Desde una ventana de terminal en el directorio principal, ejecuta los siguientes comandos para instalar el SDK de Twilio:
2. Actualiza template.yaml con tus variables
Para realizar llamadas a la API y ejecutar esta solución, deberás ingresar tus credenciales. Para los fines de esta publicación de blog y para ponerlo en marcha rápidamente, puedes ingresar tus credenciales directamente en el archivo yaml, pero para seguir las prácticas recomendadas (y, ciertamente, para el uso en producción), guarda tus credenciales utilizando los métodos aprobados por tu organización (AWS Secrets Manager funcionaría bien para esta solución).
Abre el archivo template.yaml en el directorio principal. Este archivo yaml contiene las instrucciones necesarias para aprovisionar los recursos de AWS.
En el archivo template.yaml, utiliza FIND e ingresa TWILIO_ (esto se encuentra bajo el recurso TwilioInitiateCallFunction).
Elimina el carácter de comentario de las líneas que se ven así:
…y sustituye los valores de cada una de ellas con el SID de tu cuenta de Twilio, el token de autenticación, un número de teléfono predeterminado para tu destinatario (la persona con la que deseas conectarte) y un número de Twilio predeterminado que se utiliza para llamar al destinatario.
Utiliza nuevamente FIND TWILIO_ en el archivo template.yaml para encontrar un segundo lugar en el que debes actualizar el SID de la cuenta de Twilio y el token de autenticación (esto se encuentra en el recurso OnDisconnectLambdaFunction).
Elimina el carácter de comentario de las líneas que se ven así:
…y reemplaza los valores de cada una de ellas con el SID de tu cuenta de Twilio y el token de autenticación.
3. Actualiza tu perfil de AWS
Para implementar la aplicación SAM en tu cuenta de AWS, debes asegurarte de tener configuradas las credenciales de AWS adecuadas. Sigue estas instrucciones. Esta aplicación utiliza tu perfil de AWS guardado localmente para implementarlo en tu cuenta de AWS.
Copia aws-profile.profile.sample a aws-profile.profile y, en el nuevo archivo, ingresa el nombre de tu perfil local de AWS. Esto te permitirá ejecutar los comandos de AWS localmente para implementarlos en tu cuenta de AWS.
Una vez que te hayas autenticado en tu cuenta de AWS, puedes continuar con el siguiente paso.
4. Implementa el código
Con esos ajustes implementados, ¡estamos listos para implementarlos! Desde una ventana de terminal, asegúrate de estar en el directorio principal y ejecuta lo siguiente:
Este comando pasa por el archivo yaml template.yaml y prepara la infraestructura para su implementación.
Ten en cuenta que el comando hace referencia a aws-profile.profile para autenticar e implementar en tu cuenta de AWS.
Esto iniciará una sesión interactiva de comandos para establecer las configuraciones básicas y luego implementará todos tus recursos a través de una infraestructura en CloudFormation. Estas son las respuestas que debes ingresar después de ejecutar ese comando (pero sustituye el valor de AWS Region con la región que hayas elegido):
Después de responder las últimas preguntas, SAM creará un conjunto de cambios que enumera todos los recursos que se van a implementar. Responde “y” (Sí) a la última pregunta para que AWS comience a crear los recursos.
El símbolo del sistema de SAM te informará cuando haya terminado de implementar todos los recursos. Luego, puedes ir a tu consola de AWS y CloudFormation y dirigirte a la nueva infraestructura que acabas de crear. Todos los Lambdas, capas de Lambda, puertas de enlace de API, roles de IAM y temas de SNS se crean automáticamente. (La IaC —Infraestructura como código— ¡es increíble!)
Deberás ver una nueva infraestructura con el nombre CR-TRANSLATOR:
Haz clic en esa infraestructura y luego ve a la pestaña Outputs (Salidas) y copia el valor de TwimlAPI, ya que lo necesitarás en el siguiente paso. Debe verse así:
4. Conecta tu número de teléfono de Twilio
Con el valor que copiaste en el paso anterior, dirígete a tu Twilio Console y navega hasta el número de teléfono que quieres usar para esta aplicación. En la sección Voice Handler (Controlador de voz) en A call comes in (Cuando entra una llamada), selecciona webhook y luego pega el valor que copiaste anteriormente para conectar tu número de teléfono de Twilio a la aplicación que acabas de generar.
La sección correcta de la página de Twilio se verá así:
5. Carga los detalles de configuración
Ahora, debemos cargar un perfil en la nueva tabla DynamoDB que está vinculada al número de teléfono de la persona que llama. Este perfil se utilizará para configurar las sesiones de Conversation Relay tanto para la persona que llama como para el destinatario.
En primer lugar, abre el archivo profile-caller-example.js en la carpeta configuration/dynamo-loaders.
En ese archivo, revisa los comentarios en la parte superior y edita las propiedades del objeto JSON para configurar la persona que llama y el destinatario, así como los idiomas y las voces que utilizarán ambos.
Cuando hayas terminado de editar ese archivo, ejecuta este comando desde el directorio principal:
Esto creará un elemento en tu instancia de DynamoDB que se utilizará para configurar cada sesión de llamada. Vale la pena echar un vistazo a este elemento en tu consola DynamoDB.
En tu consola de AWS, navega a DynamoDB y luego selecciona TABLES (TABLAS) y luego la tabla denominada CR-TRANSLATORAppDatabase. Por último, haz clic en EXPLORE TABLE ITEMS (EXPLORAR ELEMENTOS DE LA TABLA).
Una vez allí, debes encontrar y hacer clic en un elemento con una clave principal que coincida con el número de teléfono de la persona que llama. El elemento se verá de la siguiente manera:
Haz una llamada
Para que esto funcione, necesitarás dos teléfonos. Un teléfono llamará al número de teléfono de Twilio y el otro teléfono recibirá la segunda llamada de la segunda sesión de Conversation Relay.
Ahora deberás poder llamar a tu número de teléfono de Twilio y comenzar a hablar con tu nueva aplicación de traducción de voz en tiempo real. En la configuración de muestra que se ofrece en el repositorio, la persona que llama habla inglés y el destinatario habla español. Por supuesto, puedes cambiar cualquiera de estos valores por cualquier idioma compatible.
Para cambiar los idiomas y las voces tanto de la persona que llama como del destinatario, intenta cambiar los parámetros de configuración directamente desde la consola de DynamoDB. Inspecciona los elementos de la sesión generados por tus llamadas para ver cómo esta aplicación integra las conversaciones.
Limpieza
Para evitar cualquier costo no deseado, puedes eliminar la infraestructura de CloudFormation de la aplicación desde la consola de AWS. Selecciona la infraestructura y haz clic en la opción DELETE (ELIMINAR) como se muestra a continuación:
Implementación en producción
Aunque puedes hacer que este sistema funcione bastante rápido, no está listo para tu entorno de producción. Esta publicación de blog y repositorio tienen como objetivo ofrecerte inspiración y ayudarte a comenzar a crear increíbles aplicaciones de voz con traducción en tiempo real con Twilio y Conversation Relay.
Conclusión
En esta publicación de blog, te mostramos cómo crear rápidamente un sistema de traducción de prueba de concepto mediante Twilio Voice y Twilio Conversation Relay. Nuevamente, quiero hacer énfasis en que esta es una prueba de concepto. Sin embargo, espero que estés de acuerdo en que la latencia y la funcionalidad básica son muy prometedoras para una PoC. ¡Twilio Conversation Relay está haciendo que los casos de uso como este sean mucho más fáciles de obtener!
A continuación te presento algunos casos de uso que podrías hacer posibles con la traducción entre humanos que se demostró en esta prueba de concepto:
- Educación y aprendizaje en línea: los maestros podrían conectarse con estudiantes que hablen distintos idiomas, lo que promovería la creación de aulas globales e inclusivas. Las escuelas también pueden comunicarse eficazmente con los padres durante las conferencias, independientemente de las barreras de idioma.
- Viajes y hotelería: los hoteles, las aerolíneas y las agencias de viajes podrían brindar asistencia en tiempo real para los turistas en su propio idioma, lo que mejoraría su experiencia.
- Comercio electrónico y retail: las empresas en línea podrían escalar a nivel mundial mediante la oferta de servicio al cliente multilingüe en tiempo real, aumentando la confianza y las conversiones. Los centros de ayuda pueden ayudar a los clientes a navegar por los productos técnicos en sus idiomas nativos.
- Servicios públicos y gubernamentales: las líneas directas de emergencia y las organizaciones de servicios públicos pueden comunicarse con comunidades multilingües, lo que garantiza accesibilidad y tiempos de respuesta más cortos.
- Ayuda humanitaria y ayuda ante desastres: las organizaciones de ayuda pueden coordinar sus esfuerzos con mayor eficacia en zonas de crisis y apoyar a los refugiados en el acceso a los servicios esenciales.
Con Conversation Relay, Twilio se hace cargo de gestionar las complejidades de la telefonía y la orquestación de voz a texto y de texto a voz. Así, tu empresa puede enfocarse en tu aplicación. (En este caso, la traducción).
La latencia requerida para traducir texto de un idioma a otro es mínima, y este repositorio sirve bien para las conversaciones que utilizan fases cortas. Cuando una persona dice varias oraciones a la vez, se agrega latencia adicional debido al tiempo que se necesita para pronunciar las palabras en el otro idioma. Esto constituye una latencia “percibida”, porque en realidad no proviene de la lentitud del sistema, sino que se debe a que las palabras deben pronunciarse dos veces. Sería sencillo mejorar esta situación: agrega algunos efectos de sonido mientras se pronuncia el texto traducido, o incluso permite que ambas partes escuchen el texto traducido para que cada parte sepa en qué momento terminan las palabras traducidas. Hay varias soluciones posibles para este problema y la que elijas dependerá de tus requisitos específicos.
Una cosa segura es que la traducción en tiempo real tiene un potencial masivo, y estamos ansiosos por ver y escuchar lo que puedes crear con estas increíbles herramientas de Twilio.
Material adicional
Algunos de mis compañeros Twilions se reunieron recientemente para un evento interno a fin de mostrar cómo esta solución, específicamente, Twilio Flex, podría utilizarse en un centro de contacto.
Pudimos conectar la segunda sesión de Conversation Relay de “destinatario” a un agente con el apoyo de Flex. Esta solución utiliza un proxy para vincular las dos llamadas. Parte del código para una solución con proxy se encuentra en este repositorio.
Esta es nuestra presentación:
Dan Bartlett ha estado creando aplicaciones web desde la primera ola de las punto-com. Los principios fundamentales de aquel entonces siguen siendo los mismos, pero en la actualidad puedes crear cosas más geniales y más rápido. Puedes comunicarte con él en dbartlett [arroba] twilio.com.
Publicaciones relacionadas
Recursos relacionados
Twilio Docs
Desde API hasta SDK y aplicaciones de muestra
Documentación de referencia de API, SDK, bibliotecas auxiliares, inicios rápidos y tutoriales para su idioma y plataforma.
Centro de Recursos
Los últimos libros electrónicos, informes de la industria y seminarios web
Aprenda de los expertos en participación del cliente para mejorar su propia comunicación.
Ahoy
Centro de la comunidad de desarrolladores de Twilio
Mejores prácticas, ejemplos de códigos e inspiración para crear comunicaciones y experiencias de participación digital.