Transcripción de audio multilingüe rentable a escala con Parakeet-TDT y AWS Batch

Muchas organizaciones archivan grandes bibliotecas multimedia, analizan grabaciones de centros de contacto, preparan datos de capacitación para IA o procesan videos bajo demanda para subtítulos. Cuando los volúmenes de datos crecen significativamente, los costos del servicio de reconocimiento automático de voz (ASR) administrado pueden convertirse rápidamente en la principal limitación de la escalabilidad.

Para abordar este desafío de escalabilidad de costos, utilizamos el modelo NVIDIA Parakeet-TDT-0.6B-v3, implementado a través de AWS Batch en instancias aceleradas por GPU. La arquitectura del transductor de token y duración de Parakeet-TDT predice simultáneamente tokens de texto y su duración para omitir de manera inteligente el silencio y el procesamiento redundante. Esto ayuda a lograr velocidades de inferencia de órdenes de magnitud más rápidas que en tiempo real. Al pagar solo por breves ráfagas de computación en lugar de la duración completa de su audio, puede transcribir a escala por fracciones de centavo por hora de audio según los puntos de referencia descritos en esta publicación.

En esta publicación, explicamos la creación de un canal de transcripción escalable basado en eventos que procesa automáticamente archivos de audio cargados en Amazon Simple Storage Service (Amazon S3) y le mostramos cómo utilizar instancias puntuales de Amazon EC2 y la inferencia de transmisión en búfer para reducir aún más los costos.

Capacidades del modelo

Parakeet-TDT-0.6B-v3, lanzado en agosto de 2025, es un modelo ASR multilingüe de código abierto que ofrece alta precisión en 25 idiomas europeos con detección automática de idioma y licencias flexibles según CC-BY-4.0. Según las métricas publicadas por NVIDIA, el modelo mantiene una tasa de error de palabra (WER) del 6,34% en condiciones limpias y un WER del 11,66% a 0 dB SNR, y admite audio hasta tres horas usando el modo de atención local.

Los 25 idiomas admitidos incluyen búlgaro, croata, checo, danés, holandés, inglés, estonio, finlandés, francés, alemán, griego, húngaro, italiano, letón, lituano, maltés, polaco, portugués, rumano, eslovaco, esloveno, español, sueco, ruso y ucraniano. Esto puede ayudar a aliviar la necesidad de modelos separados o configuraciones específicas de idioma cuando se presta servicio a economías europeas internacionales. Para la implementación en AWS, el modelo requiere instancias habilitadas para GPU con un mínimo de 4 GB de VRAM, aunque 8 GB proporcionan un mejor rendimiento. Las instancias G6 (GPU NVIDIA L4) proporcionan la mejor relación costo-rendimiento para cargas de trabajo de inferencia según nuestras pruebas. El modelo también funciona bien en instancias G5 (A10G), G4dn (T4) y, para un rendimiento máximo, P5 (H100) o P4 (A100).

Arquitectura de la solución

El proceso comienza cuando carga un archivo de audio en un depósito de S3. Esto activa una regla de Amazon EventBridge que envía un trabajo a AWS Batch. AWS Batch aprovisiona recursos informáticos acelerados por GPU y las instancias aprovisionadas extraen nuestra imagen de contenedor con un modelo almacenado previamente en caché de Amazon Elastic Container Registry (Amazon ECR). El script de inferencia descarga y procesa el archivo, luego carga la transcripción JSON con marca de tiempo en un depósito S3 de salida. La arquitectura escala a cero cuando está inactiva, por lo que solo se incurre en costos durante la computación activa.

Para profundizar en los componentes arquitectónicos generales, consulte nuestra publicación anterior, Transcripción de audio Whisper impulsada por AWS Batch y AWS Inferentia.

Figura 1. Canal de transcripción de audio basado en eventos con Amazon EventBridge y AWS Batch

Requisitos previos

Cree una cuenta de AWS si aún no tiene una e inicie sesión. Cree un usuario utilizando AWS IAM Identity Center con permisos completos de administrador como se describe en Agregar usuarios. Instale la interfaz de línea de comandos de AWS (AWS CLI) en su máquina de desarrollo local y cree un perfil para el usuario administrador como se describe en Configurar la AWS CLI. Instale Docker en su máquina local. Clona el repositorio de GitHub en tu máquina local.

Construyendo la imagen del contenedor

El repositorio incluye un archivo Docker que crea una imagen de contenedor optimizada para el rendimiento de inferencia. La imagen utiliza Amazon Linux 2023 como base, instala Python 3.12 y almacena en caché previamente el modelo Parakeet-TDT-0.6B-v3 durante la compilación para aliviar la latencia de descarga en tiempo de ejecución:

FROM public.ecr.aws/amazonlinux/amazonlinux:2023 WORKDIR /app # Instalar dependencias del sistema, Python 3.12 y ffmpeg EJECUTAR dnf update -y && dnf install -y gcc-c++ python3.12-devel tar xz && ln -sf /usr/bin/python3.12 /usr/local/bin/python3 && python3 -m surepip && python3 -m pip install –no-cache-dir –upgrade pip && dnf clean all && rm -rf /var/cache/dnf # Instalar las dependencias de Python y almacenar en caché previamente el modelo COPY ./requirements.txt requisitos.txt EJECUTAR pip install -U –no-cache-dir -r requisitos.txt && rm -rf ~/.cache/pip /tmp/pip* && python3 -m compileall -q /usr/local/lib/python3.12/site-packages COPY ./parakeet_transcribe.py parakeet_transcribe.py # Modelo de caché durante la compilación para eliminar la descarga del tiempo de ejecución RUN python3 -c "from nemo.collections.asr.models import ASRModel; ASRModel.from_pretrained('nvidia/parakeet-tdt-0.6b-v3')" CMD ["python3", "parakeet_transcribe.py"]

Impulsando a Amazon ECR

El repositorio incluye un script updateImage.sh que maneja la detección del entorno (CodeBuild o EC2), crea la imagen del contenedor, crea un repositorio ECR si es necesario, habilita el escaneo de vulnerabilidades y envía la imagen. Ejecútelo con:./updateImage.sh

Implementando la solución

La solución utiliza una plantilla de AWS CloudFormation (deployment.yaml) para aprovisionar la infraestructura. El script buildArch.sh automatiza la implementación detectando su región de AWS, recopilando información de VPC, subred y grupo de seguridad e implementando la pila de CloudFormation:

./buildArch.shBajo el capó, esto se ejecuta:

implementación de aws cloudformation –stack-name lote-gpu-audio-transcription –template-file ./deployment.yaml –capabilities CAPABILITY_IAM –region ${AWS_REGION} –parameter-overrides VPCId=${VPC_ID} SubnetIds="${SUBNET_IDS}" SGIds="${SecurityGroup_IDS}" RTIds="${RouteTable_IDS}"

La plantilla de CloudFormation crea el entorno informático de AWS Batch con instancias de GPU G6 y G5, una cola de trabajos, una definición de trabajo que hace referencia a su imagen ECR, depósitos S3 de entrada y salida con notificaciones de EventBridge habilitadas. También crea una regla de EventBridge que activa un trabajo por lotes en la carga de S3, una configuración de agente de Amazon CloudWatch para monitoreo de GPU/CPU/memoria y roles de IAM con políticas de privilegios mínimos. AWS Batch permite la selección de imágenes de GPU de Amazon Linux 2023 especificando ImageType: ECS_AL2023_NVIDIA en la configuración del entorno informático.

Alternativamente, puede implementar directamente desde la consola de AWS CloudFormation utilizando el enlace de inicio proporcionado en el archivo README del repositorio.

Configurar instancias de spot

Las instancias puntuales de Amazon EC2 pueden ayudar a reducir aún más los costos al ejecutar sus cargas de trabajo con capacidad EC2 no utilizada con un descuento de hasta el 90 % según el tipo de instancia. Para habilitar instancias de spot, modificamos el entorno informático en implementación.yaml:

DefaultComputeEnv: Tipo: AWS::Batch::ComputeEnvironment Propiedades: Tipo: ADMINISTRADO Estado: HABILITADO ComputeResources: AllocationStrategy: SPOT_PRICE_CAPACITY_OPTIMIZED Tipo: SPOT BidPercentage: 100 InstanceTypes: – "g6.xlarge" – "g6.2xlarge" – "g5.xlarge" MinvCpus: !Ref DefaultCEMinvCpus MaxvCpus: !Ref DefaultCEMaxvCpus # … configuración restante sin cambios

Puede habilitar esto configurando –parameter-overrides UseSpotInstances=Yes cuando ejecuta aws cloudformation implementar. La estrategia de asignación SPOT_PRICE_CAPACITY_OPTIMIZED selecciona grupos de instancias de spot que tienen menos probabilidades de ser interrumpidos y tienen el precio más bajo posible. La diversificación de los tipos de instancias (G6 xlarge, G6 2xlarge, G5 xlarge) puede mejorar la disponibilidad de Spot. Configurar MinvCpus: 0 garantiza que el entorno escale a cero cuando esté inactivo, de modo que evite incurrir en costos entre cargas de trabajo. Dado que los trabajos ASR no tienen estado y son idempotentes, son muy adecuados para Spot. Si se reclama una instancia, AWS Batch reintenta automáticamente el trabajo (configurado con hasta 2 reintentos en la definición del trabajo).

Administrar la memoria para audio largo

El consumo de memoria del modelo Parakeet-TDT aumenta linealmente con la duración del audio. El codificador Fast Conformer debe generar y almacenar representaciones de características para la señal de audio completa, creando una dependencia directa en la que duplicar la longitud del audio duplica aproximadamente el uso de VRAM. Según el modelo de tarjeta, con toda la atención el modelo puede procesar hasta 24 minutos con 80 GB de VRAM.

NVIDIA soluciona esto con un modo de atención local que admite hasta 3 horas de audio en un A100 de 80 GB:

# Habilitar la atención local para audio largo
asr_model.change_attention_model("rel_pos_local_attn", [128, 128])
asr_model.change_subsampling_conv_chunking_factor(1) # selección automática
asr_model.transcribe(["input_audio.wav"])

Esto puede tener un ligero impacto en la precisión; recomendamos realizar pruebas en su caso de uso.

Inferencia de transmisión almacenada en búfer

Para audio que supera las 3 horas, o para procesar audio largo de manera rentable en hardware estándar como g6.xlarge, utilizamos inferencia de transmisión en búfer. Adaptada del ejemplo de inferencia de transmisión de NVIDIA NeMo, esta técnica procesa el audio en fragmentos superpuestos en lugar de cargar el contexto completo en la memoria.

Configuramos fragmentos de 20 segundos con un contexto izquierdo de 5 segundos y un contexto derecho de 3 segundos para mantener la calidad de la transcripción en los límites de los fragmentos (tenga en cuenta que la precisión puede degradarse al cambiar estos parámetros, así que experimente para encontrar la configuración óptima. La disminución de chunk_secs aumenta el tiempo de procesamiento):

# Bucle de inferencia de transmisión mientras left_sample < audio_batch.shape[1]: # agregar muestras al búfer chunk_length = min(right_sample, audio_batch.shape[1]) – left_sample # [Lógica para administrar el búfer y los indicadores omitidos por razones de brevedad] buffer.add_audio_batch_(…) # Codificar usando el búfer completo [left-chunk-right] encoder_output, encoder_output_len = asr_model( input_signal=buffer.samples, input_signal_length=buffer.context_size_batch.total(), ) # Decodificar solo fragmentos de fotogramas (uso constante de memoria) chunk_batched_hyps, _, state = decoding_computer(…) # Ventana deslizante avanzada left_sample = right_sample right_sample = min(right_sample + context_samples.chunk, audio_batch.shape[1])

El procesamiento de audio en tamaños de fragmentos fijos desacopla el uso de VRAM de la duración total del audio, lo que permite que una sola instancia de g6.xlarge procese un archivo de 10 horas con el mismo consumo de memoria que uno de 10 minutos.

Diagrama de flujo de proceso que muestra la fragmentación de audio con arquitectura codificador-decodificador para transcripción de voz con ventanas contextuales

Figura 2. La inferencia de transmisión en búfer procesa el audio en fragmentos superpuestos con un uso de memoria constante.

Para implementar con la transmisión en búfer habilitada, establezca el parámetro EnableStreaming=Yes.

aws cloudformation implementar –stack-name lote-gpu-audio-transcription –template-file ./deployment.yaml –capabilities CAPABILITY_IAM –parameter-overrides EnableStreaming=Yes VPCId=your-vpc-id SubnetIds=your-subnet-ids SGIds=your-sg-ids RTIds=your-rt-ids

Pruebas y seguimiento

Para validar la solución a escala, realizamos un experimento con 1000 archivos de audio idénticos de 50 minutos de una conferencia de prensa de la tripulación de verificación previa al vuelo de la NASA, distribuidos en 100 instancias g6.xlarge que procesan 10 archivos cada una.

Captura de pantalla de la consola de AWS Batch que muestra 1000 trabajos en la cola Batch-gpu-audio-transcription-jq con 100 trabajos de demostración de inferencia en ejecución Figura 3. Trabajos por lotes ejecutándose simultáneamente en 100 instancias de g6.xlarge.

La implementación incluye una configuración de agente de Amazon CloudWatch que recopila la utilización de GPU, el consumo de energía, el uso de VRAM, la utilización de CPU, el consumo de memoria y el uso de disco en intervalos de 10 segundos. Estas métricas aparecen bajo el espacio de nombres CWAgent, lo que le permite crear paneles para monitoreo en tiempo real.

Análisis de rendimiento y costes.

Para validar la eficiencia de la arquitectura, comparamos el sistema utilizando múltiples archivos de audio de formato largo.

El modelo Parakeet-TDT-0.6B-v3 logró una velocidad de inferencia bruta de 0,24 segundos por minuto de audio. Sin embargo, una canalización completa también incluye gastos generales para cargar el modelo en la memoria, cargar audio, preprocesar la entrada y posprocesar la salida. Debido a esta sobrecarga, la optimización óptima de costos se produce en el audio de formato largo para maximizar el tiempo de procesamiento.

Resultados de referencia (g6.xlarge):

Duración del audio: 3 horas 25 minutos (205 minutos) Duración total del trabajo: 100 segundos Velocidad de procesamiento efectiva: 0,49 segundos por minuto de audio Desglose de costos

Según los precios en la región us-east-1 para la instancia g6.xlarge, podemos estimar el costo por minuto de procesamiento de audio.

Modelo de precios Costo por hora (g6.xlarge)* Costo por minuto de audio bajo demanda ~$0,805 **$0,00011** Instancias puntuales ~$0,374 **$0,00005**

*Los precios son estimaciones basadas en las tarifas de us-east-1 al momento de escribir este artículo. Los precios al contado varían según la zona de disponibilidad y están sujetos a cambios.

Esta comparación resalta la ventaja económica del enfoque autohospedado para cargas de trabajo de gran volumen, ya que ofrece valor para transcripciones a gran escala en comparación con los servicios API administrados.

Limpieza

Para evitar incurrir en cargos futuros, elimine los recursos creados por esta solución:

Vacíe todos los depósitos de S3 (entrada, salida y registros). Elimine la pila de CloudFormation:

aws cloudformation eliminar-pila –nombre-de-pila-transcripción-de-audio-gpu-por lotes

Opcionalmente, elimine el repositorio de ECR y las imágenes del contenedor.

Para obtener instrucciones de limpieza detalladas, consulte la sección de limpieza del archivo README del repositorio.

Conclusión

En esta publicación, demostramos cómo construir un proceso de transcripción de audio que procese audio a escala por fracciones de centavo por hora. Al combinar el modelo Parakeet-TDT-0.6B-v3 de NVIDIA con AWS Batch y EC2 Spot Instances, puede transcribir en 25 idiomas europeos con detección automática de idioma y ayudar a reducir costos en comparación con soluciones alternativas. La técnica de inferencia de transmisión en búfer extiende esta capacidad a audio de duración variable en hardware estándar, y la arquitectura basada en eventos escala automáticamente desde cero para manejar cargas de trabajo variables.

Para comenzar, explore el código de muestra en el repositorio de GitHub.

Sobre los autores

Gleb Geinke

Gleb Geinke es arquitecto de aprendizaje profundo en el Centro de innovación de IA generativa de AWS. Gleb colabora directamente con clientes empresariales para diseñar y escalar soluciones de IA generativa transformacionales para desafíos comerciales complejos.

justin leto

Justin Leto es arquitecto principal de soluciones global del equipo de capital privado de AWS. Justin es el autor de Ingeniería de datos con IA generativa y agente en AWS publicado por APRESS.

Yusong Wang

Yusong Wang es arquitecto principal de soluciones especializado en informática de alto rendimiento (HPC) en AWS con más de 20 años de experiencia en institutos de investigación nacionales y grandes empresas financieras.

Brian Maguire

Brian Maguire es arquitecto principal de soluciones en Amazon Web Services y se centra en ayudar a los clientes a desarrollar sus ideas en la nube. Brian es coautor de Scalable Data Streaming con Amazon Kinesis.