Contenedores de texto a voz con Docker

Este contenedor neuronal convierte el texto a voz con un sonido natural mediante la tecnología de red neuronal profunda, lo que permite obtener una voz sintetizada más natural. En este artículo, aprenderá a descargar, instalar y ejecutar un contenedor de texto a voz.

Para obtener más información sobre los requisitos previos, validar que el contenedor se esté ejecutando, ejecutar varios contenedores en el mismo host y ejecutar contenedores desconectados, consulte Instalación y ejecución de contenedores de Voz con Docker.

Imágenes del contenedor

La imagen de contenedor neuronal de texto a voz para todas las versiones y configuraciones regionales compatibles se puede encontrar en el sindicato de Microsoft Container Registry (MCR). Reside en el repositorio azure-cognitive-services/speechservices/ y se denomina neural-text-to-speech.

A screenshot of the search connectors and triggers dialog.

El nombre completo de la imagen de contenedor es mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech. Anexa una versión específica o :latest para obtener la versión más reciente.

Versión Path
Más reciente mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

La etiqueta latest extrae la configuración regional en-US y la voz en-us-arianeural.
3.1.0 mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:3.1.0-amd64-en-us-arianeural

Todas las etiquetas, salvo latest, tienen el formato siguiente y distinguen mayúsculas de minúsculas:

<major>.<minor>.<patch>-<platform>-<voice>-<preview>

Las etiquetas también están disponibles en formato JSON para tu comodidad. El cuerpo incluye la ruta de acceso del contenedor y la lista de etiquetas. Las etiquetas no están ordenadas por versión, pero "latest" siempre se incluye al final de la lista, como se muestra en este fragmento de código:

{
  "name": "azure-cognitive-services/speechservices/neural-text-to-speech",
  "tags": [
    <--redacted for brevity-->
    "3.1.0-amd64-en-us-arianeural",
    "3.1.0-amd64-en-us-guyneural",
    "3.1.0-amd64-en-us-jennymultilingualneural",
    "3.1.0-amd64-en-us-jennyneural",
    "3.1.0-amd64-en-us-michelleneural",
    "3.1.0-amd64-es-es-alvaroneural",
    "3.1.0-amd64-es-es-elviraneural",
    "3.1.0-amd64-es-mx-candelaneural",
    "3.1.0-amd64-es-mx-dalianeural",
    "3.1.0-amd64-es-mx-jorgeneural",
    <--redacted for brevity-->
    "latest"
  ]
}

Importante

El 31 de agosto de 2021 se retiraron las voces de síntesis de voz estándar y el contenedor de texto a voz estándar. En su lugar, debe usar las voces neuronales con el contenedor texto a voz neuronal, versión 3.0 o superior.

A partir del 29 de febrero de 2024, las versiones 2.19 y anteriores del contenedor de texto a voz y de texto neural a voz no serán compatibles. Para más información sobre cómo actualizar cualquier aplicación, consulte Migración de la voz estándar a la voz neuronal pregenerada.

Obtención de la imagen de contenedor con el comando docker pull

Son necesarios los requisitos previos, incluido el hardware necesario. Consulte también la asignación recomendada de recursos para cada contenedor de voz.

Use el comando docker pull para descargar una imagen de contenedor de Microsoft Container Registry:

docker pull mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

Importante

La etiqueta latest extrae la configuración regional en-US y la voz en-us-arianeural. Para obtener configuraciones regionales y voces adicionales, consulte imágenes de contenedor de texto a voz.

Ejecute el contenedor con docker run

Utilice el comando docker run para ejecutar el contenedor.

En la tabla siguiente se representan los diversos parámetros de docker run y las descripciones correspondientes:

Parámetro Descripción
{ENDPOINT_URI} El punto de conexión es necesario para la medición y la facturación. Para más información, consulte los argumentos de facturación.
{API_KEY} Se necesita la clave de API. Para más información, consulta los argumentos de facturación.

Al ejecutar el contenedor de texto a voz, configure el puerto, la memoria y la CPU según los requisitos y recomendaciones del contenedor de texto a voz.

Este es un ejemplo del comando docker run con valores de marcador de posición. Debes especificar los valores ENDPOINT_URI y API_KEY:

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}

Este comando:

  • Ejecuta un contenedor de texto a voz neuronal desde la imagen de contenedor.
  • Asigna 6 núcleos de CPU y 12 GB de memoria.
  • Expone el puerto TCP 5000 y asigna un seudo-TTY para el contenedor.
  • Una vez que se produce la salida, quita automáticamente el contenedor. La imagen del contenedor sigue estando disponible en el equipo host.

Para obtener más información sobre docker run con los contenedores de Voz, consulte Instalación y ejecución de contenedores de Voz con Docker.

Uso del contenedor

Los contenedores de voz proporcionan las API de punto de conexión de consulta basadas en websocket a las que se accede a través del SDK de voz y la CLI de voz. De forma predeterminada, el SDK de Voz y la CLI de Voz usan el servicio de Voz público. Para usar el contenedor, deberá cambiar el método de inicialización.

Importante

Cuando uses el servicio de voz con contenedores, asegúrate de usar la autenticación de host. Si configuras la clave y la región, las solicitudes irán al servicio de voz público. Es posible que los resultados del servicio de voz no sean los esperados. Se producirá un error en las solicitudes de contenedores desconectados.

En lugar de usar esta configuración de inicialización en la nube de Azure:

var config = SpeechConfig.FromSubscription(...);

Usa esta configuración con el host del contenedor:

var config = SpeechConfig.FromHost(
    new Uri("http://localhost:5000"));

En lugar de usar esta configuración de inicialización en la nube de Azure:

auto speechConfig = SpeechConfig::FromSubscription(...);

Usa esta configuración con el host del contenedor:

auto speechConfig = SpeechConfig::FromHost("http://localhost:5000");

En lugar de usar esta configuración de inicialización en la nube de Azure:

speechConfig, err := speech.NewSpeechConfigFromSubscription(...)

Usa esta configuración con el host del contenedor:

speechConfig, err := speech.NewSpeechConfigFromHost("http://localhost:5000")

En lugar de usar esta configuración de inicialización en la nube de Azure:

SpeechConfig speechConfig = SpeechConfig.fromSubscription(...);

Usa esta configuración con el host del contenedor:

SpeechConfig speechConfig = SpeechConfig.fromHost("http://localhost:5000");

En lugar de usar esta configuración de inicialización en la nube de Azure:

const speechConfig = sdk.SpeechConfig.fromSubscription(...);

Usa esta configuración con el host del contenedor:

const speechConfig = sdk.SpeechConfig.fromHost("http://localhost:5000");

En lugar de usar esta configuración de inicialización en la nube de Azure:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:...];

Usa esta configuración con el host del contenedor:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithHost:"http://localhost:5000"];

En lugar de usar esta configuración de inicialización en la nube de Azure:

let speechConfig = SPXSpeechConfiguration(subscription: "", region: "");

Usa esta configuración con el host del contenedor:

let speechConfig = SPXSpeechConfiguration(host: "http://localhost:5000");

En lugar de usar esta configuración de inicialización en la nube de Azure:

speech_config = speechsdk.SpeechConfig(
    subscription=speech_key, region=service_region)

Usa esta configuración con el punto de conexión del contenedor:

speech_config = speechsdk.SpeechConfig(
    host="http://localhost:5000")

Al usar la CLI de Voz en un contenedor, incluya la opción --host http://localhost:5000/. También debes especificar --key none para garantizar que la CLI no intenta usar una clave de Azure Cognitive Service para voz para la autenticación. Para más información sobre cómo configurar la CLI de Voz, consulta Introducción a la CLI de Voz de Azure AI.

Pruebe el inicio rápido de texto a voz mediante la autenticación de host en lugar de la clave y la región.

Elemento de voz SSML

Cuando se construye una solicitud HTTP POST de texto a voz neuronal, el mensaje SSML requiere un elemento voice con un atributo name. La configuración regional de la voz debe corresponder a la configuración regional del modelo de contenedor.

Por ejemplo, un modelo que se descargó a través de la etiqueta latest (el valor predeterminado es "en-US") tendría el nombre de voz de en-US-AriaNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AriaNeural">
        This is the text that is spoken.
    </voice>
</speak>

Pasos siguientes