Imagine un cirujano que realiza videollamadas con pacientes de todo el mundo sin necesidad de un traductor humano. ¿Qué pasaría si una nueva empresa pudiera expandir fácilmente su producto a través de las fronteras y hacia nuevos mercados geográficos al ofrecer soporte al cliente y ventas fluidos, precisos y multilingües, todo sin la necesidad de un traductor humano en vivo? ¿Qué sucede con su negocio cuando ya no está atado por el idioma?
Hoy en día es común tener reuniones virtuales con equipos y clientes internacionales que hablan muchos idiomas diferentes. Ya sean reuniones internas o externas, el significado a menudo se pierde en discusiones complejas y es posible que encuentre barreras idiomáticas que le impidan ser tan efectivo como podría ser.
En esta publicación, aprenderá a utilizar tres servicios de AWS completamente administrados (Amazon Transcribe, Traductor de Amazony Amazon Polly) para producir una solución de traductor de voz a voz casi en tiempo real que puede traducir rápidamente la entrada de voz en vivo de un orador de origen a un idioma de destino traducido, preciso y hablado, todo sin experiencia de aprendizaje automático (ML).
Resumen de la solución
Nuestro traductor consta de tres servicios AWS ML completamente administrados que trabajan juntos en un único script de Python mediante el uso de AWS SDK para Python (Boto3) para nuestra traducción de texto y partes de texto a voz, y un SDK de transmisión asincrónica para la transcripción de entrada de audio.
Amazon Transcribe: transmisión de voz a texto
El primer servicio que usa en nuestra pila es Amazon Transcribe, un servicio de voz a texto completamente administrado que toma el habla de entrada y la transcribe a texto. Amazon Transcribe tiene métodos de ingesta flexibles, por lotes o de transmisión, ya que acepta archivos de audio almacenados o transmisión de datos de audio. En esta publicación, utilizas el SDK de streaming asíncrono de Amazon Transcribe para Python, que utiliza el protocolo de transmisión HTTP/2 para transmitir audio en vivo y recibir transcripciones en vivo.
Cuando construimos este prototipo por primera vez, la ingestión de transmisión de Amazon Transcribe no admitía la detección automática de idioma, pero este ya no es el caso a partir de noviembre de 2021. Tanto la ingestión por lotes como la de transmisión ahora admiten la detección automática de idioma para todos idiomas admitidos. En esta publicación, mostramos cómo es posible una solución basada en parámetros a través de un diseño continuo sin parámetros en varios idiomas mediante el uso de la detección automática de idioma de transmisión. Después de que nuestro segmento de voz transcrito se devuelva como texto, envía una solicitud a Amazon Translate para traducir y devolver los resultados en nuestro Amazon Transcribe EventHandler
método.
Amazon Translate: API de traducción totalmente administrada y de última generación
El siguiente en nuestra pila es Amazon Translate, un servicio de traducción automática neuronal que ofrece una traducción de idiomas rápida, de alta calidad, asequible y personalizable. A partir de junio de 2022, Amazon Translate admite la traducción en 75 idiomas, con nuevos pares de idiomas y mejoras constantemente. Amazon Translate utiliza modelos de aprendizaje profundo alojados en una arquitectura en la nube de AWS altamente escalable y resistente para entregar rápidamente traducciones precisas en tiempo real o por lotes, según su caso de uso. El uso de Amazon Translate es sencillo y no requiere la gestión de la arquitectura subyacente ni las habilidades de aprendizaje automático. Amazon Translate tiene varias características, como crear y usar un terminología personalizada para manejar el mapeo entre términos específicos de la industria. Para obtener más información sobre los límites del servicio de Amazon Translate, consulte Directrices y límites. Una vez que la aplicación recibe el texto traducido en nuestro idioma de destino, envía el texto traducido a Amazon Polly para la reproducción inmediata del audio traducido.
Amazon Polly: API de texto a voz completamente administrada
Finalmente, envía el texto traducido a Amazon Polly, un servicio de conversión de texto a voz totalmente administrado que puede enviar respuestas de clips de audio realistas para reproducción de transmisión inmediata o agruparlos y guardarlos en Servicio de almacenamiento simple de Amazon (Amazon S3) para su uso posterior. Puede controlar varios aspectos del habla, como la pronunciación, el volumen, el tono, la velocidad del habla y más usando estandarizados Lenguaje de marcado de síntesis de voz (SSML).
Puede sintetizar el habla para ciertos Amazon Polly voces neuronales usando el estilo Newscaster para que suenen como un presentador de noticias de TV o radio. También puede detectar cuándo se pronuncian palabras u oraciones específicas en el texto según los metadatos incluidos en la transmisión de audio. Esto permite al desarrollador sincronizar el resaltado gráfico y las animaciones, como los movimientos de los labios de un avatar, con el habla sintetizada.
Puede modificar la pronunciación de determinadas palabras, como nombres de empresas, acrónimos, palabras extranjeras o neologismos, por ejemplo, "P!nk", "ROTFL" o "C'est la vie" (cuando se habla en un idioma que no sea francés). voz), utilizando léxicos personalizados.
Descripción de la arquitectura
El siguiente diagrama ilustra la arquitectura de nuestra solución.
El flujo de trabajo es el siguiente:
- El SDK de Python ingiere el audio.
- Amazon Polly convierte la voz en texto, en 39 idiomas posibles.
- Amazon Translate convierte los idiomas.
- Amazon Live Transcribe convierte texto a voz.
- El audio se emite a los altavoces.
Requisitos previos
Necesita una máquina host configurada con un micrófono, parlantes y una conexión a Internet confiable. Una computadora portátil moderna debería funcionar bien para esto porque no se necesita hardware adicional. A continuación, debe configurar la máquina con algunas herramientas de software.
Debe tener Python 3.7+ instalado para usar el SDK de transmisión asincrónica de Amazon Transcribe y para un módulo de Python llamado pyaudio
, que utiliza para controlar el micrófono y los altavoces de la máquina. Este módulo depende de una biblioteca C llamada portaudio.h
. Si encuentra problemas con pyaudio
errores, sugerimos verificar su sistema operativo para ver si tiene el portaudio.h
biblioteca instalada.
Para la autorización y autenticación de las llamadas de servicio, cree un Gestión de identidades y accesos de AWS (IAM) rol de servicio con permisos para llamar a los servicios de AWS necesarios. Al configurar el Interfaz de línea de comandos de AWS (AWS CLI) con este rol de servicio de IAM, puede ejecutar nuestro script en su máquina sin tener que pasar claves o contraseñas, porque las bibliotecas de AWS están escritas para usar las credenciales de usuario de la AWS CLI configuradas. Este es un método conveniente para la creación rápida de prototipos y garantiza que una identidad autorizada llame a nuestros servicios. Como siempre, siga el principio de privilegio mínimo cuando asigne políticas de IAM al crear un usuario o rol de IAM.
Para resumir, necesita los siguientes requisitos previos:
- Una máquina PC, Mac o Linux con micrófono, parlantes y conexión a Internet
- El
portaudio.h
Biblioteca C para su sistema operativo (brew, apt get, wget), que se necesita para que pyaudio funcione - AWS CLI 2.0 con un usuario de IAM debidamente autorizado configurado mediante la ejecución de aws configure en la AWS CLI
- Python 3.7 +
- El SDK asincrónico de Python de Amazon Transcribe
- Las siguientes bibliotecas de Python:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
Implementar la solución
Dependerá en gran medida del SDK de streaming asíncrono de Amazon Transcribe para Python como punto de partida y se basará en ese SDK específico. Después de experimentar con el SDK de streaming para Python, agrega micrófono de transmisión entrada usando pyaudio
, una biblioteca de código abierto de Python comúnmente utilizada para manipular datos de audio. Luego, agrega llamadas Boto3 a Amazon Translate y Amazon Polly para nuestra funcionalidad de traducción y texto a voz. Finalmente, transmite el habla traducida a través de los parlantes de la computadora nuevamente con pyaudio
. El módulo Python concurrent
le brinda la capacidad de ejecutar código de bloqueo en su propio subproceso asíncrono para reproducir su discurso de Amazon Polly devuelto de manera fluida y sin bloqueo.
Importemos todos nuestros módulos necesarios, transcribamos clases de transmisión e instanciamos algunos globales:
Primero, usa pyaudio
para obtener la frecuencia de muestreo, el índice del dispositivo y el recuento de canales del dispositivo de entrada:
Si esto no funciona, también puede recorrer e imprimir sus dispositivos como se muestra en el siguiente código, y luego usar el índice del dispositivo para recuperar la información del dispositivo con pyaudio
:
Tu usas channel_count
, sample_rate
y dev_index
como parámetros en un flujo de micrófono. En la función de devolución de llamada de esa secuencia, utiliza un asyncio
devolución de llamada segura para subprocesos sin bloqueo para poner los bytes de entrada del flujo de micrófono en un asyncio
cola de entrada. Tome nota de los objetos loop y input_queue creados con asyncio
y cómo se usan en el siguiente código:
Ahora cuando la función del generador mic_stream()
se llama, continuamente produce bytes de entrada siempre que haya datos de entrada de micrófono en la cola de entrada.
Ahora que sabe cómo obtener bytes de entrada del micrófono, veamos cómo escribir bytes de audio de salida de Amazon Polly en un flujo de salida de altavoz:
Ahora ampliemos lo que creaste en la publicación. SDK de streaming asíncrono de Amazon Transcribe para Python. En el siguiente código, crea un objeto ejecutor usando el ThreadPoolExecutor
subclase con tres trabajadores concurrentes. Luego agrega una llamada de Amazon Translate en la transcripción devuelta finalizada en EventHandler y pasa ese texto traducido, el objeto ejecutor y nuestro aws_polly_tts()
funcionar en un asyncio
bucle con loop.run_in_executor()
, que ejecuta nuestra función Amazon Polly (con texto de entrada traducido) de forma asincrónica al comienzo de la siguiente iteración del asyncio
lazo.
Finalmente, tenemos el loop_me()
función. En él, usted define write_chunks()
, que toma una transmisión de Amazon Transcribe como argumento y escribe asincrónicamente fragmentos de entrada de micrófono de transmisión en ella. entonces usas MyEventHandler()
con el flujo de transcripción de salida como argumento y cree un objeto controlador. Entonces usas await con asyncio.gather()
y pase write_chunks() y el controlador con el método handle_events() para manejar el futuro eventual de estas corrutinas. Por último, reúne todos los bucles de eventos y repite el loop_me()
funcionar con run_until_complete()
. Ver el siguiente código:
Cuando el código anterior se ejecuta sin errores, puede hablar al micrófono y escuchar rápidamente su voz traducida al chino mandarín. La función de detección automática de idioma para Amazon Transcribe y Amazon Translate traduce cualquier idioma de entrada compatible al idioma de destino. Puede hablar durante bastante tiempo y, debido a la naturaleza sin bloqueo de las llamadas de función, todas sus entradas de voz se traducen y hablan, lo que hace de esta una excelente herramienta para traducir discursos en vivo.
Conclusión
Si bien esta publicación demostró cómo estas tres API de AWS totalmente administradas pueden funcionar juntas sin problemas, lo alentamos a pensar en cómo podría usar estos servicios de otras maneras para brindar soporte multilingüe para servicios o medios como subtítulos multilingües por una fracción del costo actual. . La medicina, los negocios e incluso las relaciones diplomáticas podrían beneficiarse de un servicio de traducción en constante mejora, de bajo costo y bajo mantenimiento.
Para obtener más información sobre la base de código de prueba de concepto para este caso de uso, consulte nuestro Github.
Acerca de los autores
Michael Tran es arquitecto de soluciones del equipo de ingeniería de Envision en Amazon Web Services. Brinda orientación técnica y ayuda a los clientes a acelerar su capacidad de innovar mostrando el arte de lo posible en AWS. Ha creado múltiples prototipos en torno a AI/ML e IoT para nuestros clientes. Puedes contactarme @Mike_Trann en Twitter.
cameron wilkes es arquitecto de creación de prototipos en el equipo de AWS Industry Accelerator. Mientras estuvo en el equipo, entregó varios prototipos basados en ML a los clientes para demostrar el "Arte de lo posible" de ML en AWS. Le gusta la producción musical, los todoterrenos y el diseño.
- AI
- arte ai
- generador de arte ai
- robot ai
- Amazon Polly
- Amazon Transcribe
- Traductor de Amazon
- inteligencia artificial
- certificación de inteligencia artificial
- inteligencia artificial en banca
- robots de inteligencia artificial
- robots de inteligencia artificial
- software de inteligencia artificial
- Aprendizaje automático de AWS
- blockchain
- conferencia blockchain ai
- Coingenius
- inteligencia artificial conversacional
- criptoconferencia ai
- de dall
- deep learning
- google ai
- máquina de aprendizaje
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- escala ia
- sintaxis
- Procedimientos técnicos
- zephyrnet