Creación de una canalización de transcripción para la conversión de voz en texto con Azure Cognitive Services

API Management
Blob Storage
Cognitive Services
Event Grid
Functions

Los centros de atención al cliente son una parte integral del éxito de muchas empresas. Puede mejorar la eficacia de los centros de llamadas mediante la IA de voz. El reconocimiento de voz y el análisis de grandes volúmenes de llamadas de clientes grabados pueden proporcionar a su empresa información valiosa sobre las tendencias actuales, las deficiencias de productos y los éxitos. Las soluciones empresariales que usan Speech API de Azure Cognitive Services pueden implementarse para consumir y procesar los grandes volúmenes de datos discretos.

La arquitectura de referencia que se describe en este artículo muestra cómo compilar una canalización de ingesta de audio y transcripción de voz a texto para los centros de atención al cliente. Esta canalización procesa los lotes de archivos de audio grabados y almacena los archivos de texto transcritos en Azure Blob Storage. Esta arquitectura no implementa el procesamiento de voz en tiempo real.

Esta canalización puede alimentarse posteriormente en la siguiente fase de la implementación de IA de voz. En esa fase, puede procesar el texto transcrito para reconocer y quitar información confidencial, realizar análisis de opiniones, etc.

La implementación de referencia de esta arquitectura está disponible en GitHub.

Architecture

Diagrama de arquitectura: ingesta y conversión de voz en texto mediante Azure Cognitive Services

Puede implementar esta arquitectura mediante su cuenta de Azure y permitir que las aplicaciones cliente accedan a la canalización a través de las API REST. La aplicación pasa por un proceso de tres pasos para cargar un archivo de audio:

  1. Se autentica mediante Azure Active Directory (Azure AD). Este paso es necesario para la primera carga de archivos.
  2. Llama a la API REST para obtener el token de firma de acceso compartido (SAS) necesario para acceder a Azure Blob Storage.
  3. Carga los archivos de audio en un contenedor de blobs.

La aplicación cliente de referencia utiliza JavaScript para cargar los archivos, tal y como se muestra en este ejemplo de carga de blobs. Una vez cargado el archivo, se genera un desencadenador de Azure Event Grid que invoca una función de Azure. La función procesa el archivo mediante las Speech API de Azure Cognitive Services. El texto transcrito se almacena en un contenedor de blobs independiente, listo para su consumo en la siguiente fase de la canalización: análisis de voz y almacenamiento en una base de datos.

La arquitectura usa estos servicios de Azure:

Azure Blob Storage almacena objetos en la nube. Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados, como texto o datos binarios. Dado que la información confidencial se puede guardar en el blob, debe proteger su acceso mediante métodos de autenticación como las claves SAS.

Azure Event Grid proporciona compatibilidad integrada para arquitecturas eficaces orientadas a eventos en Azure. Una vez completada la carga del archivo de audio, Event Grid desencadena un evento BlobCreated para la función de transcripción.

Azure Functions proporciona capacidades de proceso orientadas a eventos sin necesidad de compilar la infraestructura. La función de esta arquitectura de referencia transcribe los archivos de audio de voz a texto. El modelo es un modelo sin servidor, lo que significa que el plan de consumo se usa para hospedar la función.

Azure Cognitive Services es una colección de API que puede ayudar a los desarrolladores a crear aplicaciones inteligentes sin amplios conocimientos de inteligencia artificial o de ciencia de datos. La función de transcripción llama a las API de Speech-to-Text de Cognitive Services. La salida de una transcripción de archivos de audio de ejemplo podría ser similar a la de los siguientes metadatos:

ResultId:19e70bee8b5348a6afb67817825a9586 Reason:RecognizedSpeech Recognized text:<Text for sample audio.>. Json:{"DisplayText":"Text for sample audio.","Duration":53700000,"Id":"28526a6304da4af1922fedd4edcdddbb","Offset":3900000,"RecognitionStatus":"Success"}.

Azure API Management proporciona acceso seguro a las API REST. Dado que solo los clientes autenticados a través de API Management pueden solicitar un token de SAS, este servicio proporciona otra capa de seguridad.

Azure Active Directory proporciona administración de identidades y acceso seguro a los recursos de la plataforma en la nube de Azure. En primer lugar, el cliente de esta arquitectura debe autenticarse mediante Azure AD para poder acceder a la API REST. La API REST crea el token de acceso para Blob Storage mediante el uso de las credenciales de Azure AD del propietario de la empresa. El control de acceso basado en roles de Azure (RBAC de Azure) proporciona al cliente los privilegios de acceso mínimos necesarios para cargar archivos de audio.

Azure Key Vault proporciona almacenamiento seguro de secretos y claves. Esta arquitectura de referencia almacena las credenciales de la cuenta y otros secretos necesarios para generar los tokens de SAS en el almacén de claves. Las API REST y la función de transcripción de voz tienen acceso a este almacén para recuperar los secretos.

Consideraciones sobre escalabilidad

Azure Blob Storage

Escalabilidad durante la carga: Para crear una solución escalable de alto rendimiento y rentable, esta arquitectura de referencia usa el patrón de diseño de clave de acceso limitado. La aplicación cliente es responsable de la carga de datos real. El token de SAS restringe el acceso a Blob Storage. El cliente debe adquirir primero este token mediante la API REST. La API de la implementación de referencia genera un token de SAS de delegado de usuario que se crea con las credenciales de Azure Active Directory del propietario de la empresa. En la mayoría de los escenarios, este método es más seguro y es preferible a los tokens de SAS creados mediante una clave de cuenta. Para más información sobre los tokens de SAS, consulte Tipos de firmas de acceso compartido.

Escalabilidad para el tamaño de archivo: La arquitectura de referencia permite cargar archivos de audio grandes en la nube dividiéndolos en fragmentos de 4 KB. La fragmentación es una técnica común que se usa para cargar blobs grandes, como se describe en este artículo sobre la carga de blobs grandes. El tamaño de archivo máximo que se puede cargar viene determinado por el límite de tamaño máximo del blob, que puede tener hasta 4,77 TB.

Escalabilidad para el almacenamiento: Azure Blob Storage puede limitar las solicitudes de servicio por blob o por cuenta de almacenamiento. La limitación en el nivel de blob podría no ser un problema en este escenario porque todos los archivos cargados corresponden a un solo blob. Sin embargo, varios clientes que cargan varios archivos en una sola cuenta de almacenamiento pueden superar los límites de la cuenta. Si eso es una posibilidad, considere usar varias cuentas de almacenamiento y crear particiones de los objetos de datos entre ellas. Para obtener una lista detallada de las consideraciones de escalabilidad del blob, consulte Lista de comprobación de escalabilidad y rendimiento para Blob Storage.

Azure Event Grid

La función que transcribe los archivos de audio se desencadena cuando finaliza la carga. Esta arquitectura de referencia utiliza un desencadenador Event Grid en lugar del desencadenador de Blob Storage. Se utiliza un desencadenar de Event Grid porque los eventos de desencadenador de blobs se pueden perder a medida que el número de blobs de un contenedor aumenta significativamente. Los desencadenadores que faltan afectan negativamente al rendimiento y la confiabilidad de la aplicación. Para obtener más información, vea Alternativas de desencadenador de blobs.

Azure Cognitive Services

Cognitive Services APIs puede tener límites de solicitud basados en el nivel de suscripción. Considere la posibilidad de incluir en contenedores estas API para evitar la limitación del procesamiento de grandes volúmenes. Los contenedores proporcionan flexibilidad de implementación, ya sea en la nube o en el entorno local. También puede mitigar los efectos secundarios de los lanzamientos de nueva versión mediante el uso de contenedores. Para más información, consulte Compatibilidad con contenedores en Azure Cognitive Services.

Consideraciones sobre la seguridad

Muchas de las consideraciones de seguridad para las aplicaciones web sin servidor se aplican a esta arquitectura de referencia. En las secciones siguientes se describen las consideraciones específicas de esta arquitectura.

Azure Active Directory

Los archivos de audio almacenados en el blob pueden contener datos confidenciales de los clientes. Si hay varios clientes que usan esta solución, es importante restringir el acceso a estos archivos. Esta arquitectura de referencia usa tokens de SAS para proteger estos archivos frente a ataques externos. Estos tokens, denominados tokens de SAS de delegación de usuarios, se crean mediante las credenciales de Azure AD del propietario del servicio.

Un token de SAS le permite controlar:

  • A qué recursos pueden tener acceso los clientes, ya que se crea por recurso.
  • Los permisos que tienen los clientes al obtener acceso a los recursos, a través del control de acceso basado en roles de Azure (RBAC de Azure). Se recomienda conceder los permisos mínimos necesarios. Los clientes de esta arquitectura tienen acceso de solo escritura a los blobs. Este nivel de acceso impide que lean los archivos de audio de otros clientes, ya sea de forma accidental o malintencionada.
  • Cuándo expiran los tokens individuales. Este control limita la ventana de exposición al token, lo que limita la posibilidad de acceso no autorizado al recurso. En el caso de los archivos de mayor tamaño, el token de SAS puede expirar antes de que finalice la carga. El cliente puede solicitar varios tokens para el mismo archivo. Dado que solo los clientes autenticados pueden hacerlo, varias solicitudes de estos tokens no afectan a la seguridad global.

Consulte Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido (SAS) para obtener información detallada sobre los tokens de SAS. Para más información sobre los tokens de SAS de delegación de usuarios, consulte Creación de una SAS de delegación de usuario.

API Management

Además de restringir el acceso a los recursos mediante el uso de tokens de SAS, esta arquitectura de referencia proporciona otro nivel de seguridad mediante el uso de API Management. Los clientes deben autenticarse mediante API Management antes de solicitar tokens de SAS. API Management tiene controles de acceso integrados para la API REST. Se recomienda este nivel de seguridad adicional, ya que los datos cargados podrían contener información confidencial.

Cuando varios clientes cargan archivos en paralelo, API Management:

Consideraciones de resistencia

En el caso de un número muy elevado de eventos, Event Grid podría no desencadenar la función. Estos eventos que faltan se suelen agregar a un contenedor de cola de mensajes fallidos. Considere la posibilidad de crear una arquitectura más resistente mediante la adición de una función de supervisor. Esta función se puede activar periódicamente en un desencadenador de temporizador. Después, puede buscar y procesar los eventos que faltan, ya sea desde el contenedor de cola de mensajes fallidos o mediante la comparación de los blobs en los contenedores de carga y transcripción.

Este patrón es similar al patrón de Scheduler Agent Supervisor. Este patrón no se implementa en esta arquitectura de referencia por motivos de simplicidad. Para obtener más información sobre cómo Event Grid gestiona los errores, consulte las directivas de Entrega y reintento de entrega de mensajes de Event Grid.

Otra forma de mejorar la resistencia es usar Azure Service Bus en lugar de Event Grid. Este modelo procesa secuencialmente cargas de archivos. El cliente señala Service Bus cuando finaliza una carga. A continuación, Service Bus invoca la función para transcribir el archivo cargado. Este modelo es más confiable. Sin embargo, tendrá menos rendimiento que una arquitectura basada en eventos. Considere cuidadosamente qué arquitectura se aplica a su escenario y aplicación.

Implementación de la solución

Para obtener más información sobre cómo implementar la solución de referencia de esta arquitectura, consulte el archivo Léame de GitHub.

Pasos siguientes

Revise la documentación clave del producto que se usa en esta arquitectura:

Módulos de Microsoft Learn: