Instalación y ejecución de contenedores de voz con Docker

Mediante el uso de contenedores, puede usar un subconjunto de características de servicio de voz en su propio entorno. En este artículo, aprenderá a descargar, instalar y ejecutar un contenedor de Voz.

Nota:

Los niveles de compromiso y precios de contenedor desconectados varían de los contenedores estándar. Para más información, consulte Precios del servicio de voz.

Prerrequisitos

Para poder usar los contenedores del servicio de Voz debe cumplir los siguientes requisitos previos. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar. Necesita:

  • Docker instalado en un equipo host. Docker debe configurarse para permitir que los contenedores se conecten con Azure y envíen datos de facturación a dicho servicio.
    • En Windows, Docker también debe estar configurado de forma que admita los contenedores de Linux.
    • Debe estar familiarizado con los conceptos de Docker.
  • Un recurso del servicio de Voz con el plan de tarifa gratis (F0) o estándar (S).

Argumentos de facturación

Los contenedores de voz no tienen licencia para ejecutarse sin estar conectados a Azure para realizar mediciones. Debe configurar su contenedor para comunicar la información de facturación con el servicio de medición en todo momento.

Se requieren tres parámetros principales para todos los contenedores Azure AI. Los Términos de licencia del software de Microsoft deben estar presentes con el valor Acepto. También se necesitan un URI de punto de conexión y una clave de API.

Las consultas en el contenedor se facturan con el plan de tarifa del recurso de Azure que se usa para el parámetro ApiKey.

El comando docker run inicia el contenedor cuando se especifican las tres opciones siguientes con valores válidos:

Opción Descripción
ApiKey La clave de API del recurso de voz que se usa para realizar un seguimiento de la información de facturación.
El valor ApiKey se usa para iniciar el contenedor y está disponible en la página Claves de Azure Portal del recurso de voz correspondiente. Vaya a la página Claves y seleccione el icono Copiar en el Portapapeles.
Billing El punto de conexión del recurso de voz que se usa para realizar un seguimiento de la información de facturación.
El punto de conexión está disponible en la página Información general de Azure Portal del recurso de voz correspondiente. Vaya a la página Información general, mantenga el puntero sobre el punto de conexión y aparecerá un icono Copiar en el Portapapeles. Copie y use el punto de conexión cuando sea necesario.
Eula Indica que ha aceptado la licencia del contenedor.
El valor de esta opción debe establecerse en accept.

Importante

Estas claves de suscripción se usan para acceder a la API de servicios de Azure AI. No comparta sus claves. Almacénelas de forma segura. Por ejemplo, use Azure Key Vault. También se recomienda volver a generar estas claves con regularidad. Solo se necesita una clave para realizar una llamada API. Al volver a generar la primera clave, puede usar la segunda para seguir teniendo acceso al servicio.

El contenedor necesita que se ejecuten los valores del argumento de facturación. Estos valores permiten al contenedor conectarse al punto de conexión de facturación. El contenedor informa sobre el uso cada 10 a 15 minutos. Si el contenedor no se conecta a Azure en la ventana de tiempo permitida, continuará ejecutándose pero no atenderá las consultas hasta que se restaure el punto de conexión de facturación. Se intenta 10 veces la conexión en el mismo intervalo de tiempo de 10 a 15 minutos. Si no se puede conectar con el punto de conexión de facturación en esos 10 intentos, el contenedor deja de atender solicitudes. Para ver un ejemplo de la información enviada a Microsoft para la facturación, consulte las preguntas frecuentes sobre el contenedor Azure AI en la documentación de los servicios Azure AI.

Para obtener más información acerca de estas opciones, consulte Configure containers (Configuración de contenedores).

Recomendaciones y requisitos del contenedor

En la tabla siguiente se describe la asignación de recursos mínima y recomendada para cada contenedor de Voz:

Contenedor Mínima Recomendado Modelo de voz
Conversión de voz en texto 4 núcleos, 4 GB de memoria 8 núcleos, 8 GB de memoria De más de 4 a 8 GB de memoria
Conversión de voz en texto personalizada 4 núcleos, 4 GB de memoria 8 núcleos, 8 GB de memoria De más de 4 a 8 GB de memoria
Identificación del idioma de la voz 1 núcleo, 1 GB de memoria 1 núcleo, 1 GB de memoria N/D
Texto a voz neuronal 6 núcleos, 12 GB de memoria 8 núcleos, 16 GB de memoria N/D

Cada núcleo debe ser de 2,6 gigahercios (GHz) como mínimo.

El núcleo y la memoria se corresponden con los valores de --cpus y --memory que se usan como parte del comando docker run.

Nota

Las asignaciones mínima y recomendada se basan en los límites de Docker, no en los recursos de la máquina host. Por ejemplo, las partes del mapa de memoria de los contenedores de conversión de voz en texto de un modelo de lenguaje grande. Se recomienda que todo el archivo se ajuste a la memoria. Debe agregar de 4 a 8 GB adicionales para cargar los modelos de voz (consulte la tabla anterior). Además, la primera ejecución de cualquier contenedor puede tardar más, ya que los modelos se van a paginar en la memoria.

Recomendaciones y requisitos del equipo host

El host es un equipo basado en x64 que ejecuta el contenedor de Docker. Puede ser un equipo del entorno local o un servicio de hospedaje de Docker incluido en Azure, como:

Nota

Los contenedores admiten la entrada de audio comprimido al SDK de Voz mediante GStreamer. Para instalar GStreamer en un contenedor, siga las instrucciones de Linux para GStreamer en Uso de entradas de audio comprimido con códec con el SDK de voz.

Compatibilidad con la extensión avanzada de vector

El host es el equipo que ejecuta el contenedor de Docker. El host debe ser compatible con las extensiones avanzadas de vector (AVX2). Puede comprobar la compatibilidad con AVX2 en los hosts de Linux con el comando siguiente:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

Advertencia

El equipo host es necesario para admitir AVX2. El contenedor no funcionará correctamente sin compatibilidad con AVX2.

Ejecución del contenedor

Utilice el comando docker run para ejecutar el contenedor. Una vez que se está ejecutando, el contenedor continúa ejecutándose hasta que detenga el contenedor.

Tome nota de los siguientes procedimientos recomendados con el comando docker run:

  • Carácter de continuación de línea: Los comandos de Docker de las secciones siguientes usan la barra diagonal inversa (\) como un carácter de continuación de línea. Puede quitarla o reemplazarla en función de los requisitos del sistema operativo del host.
  • Orden de los argumentos: no cambie el orden de los argumentos a menos que esté familiarizado con los contenedores de Docker.

Puede usar el comando docker images para enumerar las imágenes de contenedor descargadas. El comando siguiente muestra el id., el repositorio y la etiqueta de cada imagen de contenedor descargada, con formato de tabla:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

Este es un resultado de ejemplo:

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Comprobación de que un contenedor está en ejecución

Hay varias maneras de comprobar que el contenedor está en ejecución. Busque la dirección IP externa y el puerto expuesto del contenedor en cuestión y abra el explorador web que prefiera. Use las distintas direcciones URL de solicitud que se indican a continuación para validar que el contenedor se está ejecutando.

Las direcciones URL de solicitud de ejemplo que se enumeran aquí son http://localhost:5000, pero el contenedor específico puede variar. Asegúrese de confiar en la dirección IP externa y el puerto expuesto del contenedor.

URL de la solicitud Propósito
http://localhost:5000/ El contenedor ofrece una página principal.
http://localhost:5000/ready Esta URL, solicitada con GET, proporciona una comprobación de que el contenedor está listo para aceptar una consulta para el modelo. Esta solicitud se puede usar con los sondeos de ejecución y preparación de Kubernetes.
http://localhost:5000/status Esta URL, también solicitada con GET, comprueba si el valor de api-key usado para iniciar el contenedor es válido sin generar una consulta de punto de conexión. Esta solicitud se puede usar con los sondeos de ejecución y preparación de Kubernetes.
http://localhost:5000/swagger El contenedor cuenta con un completo conjunto de documentación sobre los puntos de conexión y una característica de prueba. Esta característica le permite especificar la configuración en un formulario HTML basado en web y realizar la consulta sin necesidad de escribir código. Una vez que la consulta devuelve resultados, se proporciona un ejemplo del comando CURL para mostrar los encabezados HTTP y el formato de cuerpo requeridos.

Detención del contenedor

Para apagar el contenedor, en el entorno de la línea de comandos donde se ejecuta el contenedor, seleccione Ctrl + C.

Ejecución de varios contenedores en el mismo host

Si tiene pensado ejecutar varios contenedores con puertos expuestos, asegúrese de que ejecuta cada contenedor con un puerto expuesto diferente. Por ejemplo, ejecute el primer contenedor en el puerto 5000 y el segundo en el puerto 5001.

Puede tener este contenedor y un contenedor Azure AI diferente ejecutándose en el HOST juntos. También puede tener varios contenedores del mismo contenedor Azure AI en ejecución.

Direcciones URL de host

Nota

Use un número de puerto único si ejecuta varios contenedores.

Protocolo URL del host Contenedores
WS ws://localhost:5000 Speech to Text

Conversión de voz en texto personalizada
HTTP http://localhost:5000 Texto a voz neuronal

Identificación del idioma de la voz

Para obtener más información sobre el uso de protocolos WSS y HTTPS, consulte Seguridad de contenedores en la documentación de servicios de Azure AI.

Solución de problemas

Al iniciar o ejecutar el contenedor, puede aparecer problemas. Use un montaje de salida y habilite el registro. Si lo hace, permite que el contenedor genere archivos de registro que son útiles para solucionar problemas.

Sugerencia

Para obtener más información y orientación sobre la solución de problemas, consulte las preguntas más frecuentes (FAQ) sobre los contenedores Azure AI en la documentación de los servicios Azure AI.

Opción de configuración Logging

Los contenedores de voz incluyen compatibilidad con el registro de ASP.NET Core. Aquí hay un ejemplo de neural-text-to-speech container que se inicia con el registro predeterminado en la consola:

docker run --rm -it -p 5000:5000 --memory 12g --cpus 6 \
mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} \
Logging:Console:LogLevel:Default=Information

Para obtener más información sobre el registro, consulte Configurar contenedores de voz y registros de uso en la documentación de los servicios de Azure AI.

Contenedor de diagnósticos de Microsoft

Si tiene problemas para ejecutar un contenedor Azure AI, puede intentar utilizar el contenedor de diagnóstico de Microsoft. Utilice este contenedor para diagnosticar errores comunes en su entorno de implementación que podrían impedir que los contenedores de Azure AI funcionen como se espera.

Para obtener el contenedor, use el comando docker pull siguiente:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

A continuación, ejecute el contenedor. Reemplace {ENDPOINT_URI} por el punto de conexión y {API_KEY} por la clave del recurso:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

El contenedor prueba la conectividad de red con el punto de conexión de facturación.

Ejecutar contenedores desconectados

Para ejecutar contenedores desconectados (no conectados a Internet), debe enviar este formulario de solicitud y esperar la aprobación. Para más información sobre cómo aplicar y comprar un plan de compromiso para usar contenedores en entornos desconectados, consulte Uso de contenedores en entornos desconectados en la documentación de servicios de Azure AI.

Pasos siguientes