Contêineres de conversão de texto em fala com o Docker

O contêiner neural de conversão de texto em fala converte o texto em fala com som natural usando a tecnologia de rede neural profunda, que permite uma fala sintetizada mais natural. Neste artigo, você aprenderá a baixar, instalar e executar um contêiner de conversão de texto em fala.

Para obter mais informações sobre os pré-requisitos, validar se um contêiner está sendo executado, executar vários contêineres no mesmo host e executar contêineres desconectados, consulte Instalar e executar contêineres de Fala com o Docker.

Imagens de contêiner

A imagem do contêiner de conversão de texto em fala neural para todas as versões e localidades suportadas pode ser encontrada na agregação Registro de Contêiner da Microsoft (MCR). Ela reside no repositório azure-cognitive-services/speechservices/ e é chamada neural-text-to-speech.

A screenshot of the search connectors and triggers dialog.

O nome da imagem de contêiner totalmente qualificado é mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech. Acrescente uma versão específica ou acrescente :latest para obter a versão mais recente.

Versão Caminho
Mais recente mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

A marca latest vai extrair a localidade en-US e a 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 as marcas, exceto latest, estão disponíveis no seguinte formato e diferenciam maiúsculas de minúsculas:

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

As marcas também estão disponíveis no formato JSON para sua conveniência. O corpo inclui o caminho do contêiner e a lista de marcas. As marcas não são classificadas por versão, mas "latest" é sempre incluída no final da lista, conforme mostrado neste trecho:

{
  "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

Removemos as vozes de síntese de fala padrão e o contêiner padrão de conversão de texto em fala em 31 de agosto de 2021. Você deve usar vozes neurais com o contêiner neural-text-to-speech versão 3.0 e superior.

A partir de 29 de fevereiro de 2024, as versões 2.19 e anteriores do contêiner de texto em fala e de texto neural em fala não serão mais suportadas. Para obter mais informações sobre como atualizar seu aplicativo, confira Migrar da voz padrão para a sintetização de voz predefinida.

Obtenha a imagem de contêiner com o docker pull

Você precisa dos pré-requisitos, incluindo o hardware necessário. Veja também a alocação recomendada de recursos para cada contêiner de Fala.

Use o comando docker pull para baixar uma imagem de contêiner do Microsoft Container Registry:

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

Importante

A marca latest vai extrair a localidade en-US e a voz en-us-arianeural. Para localidades e vozes adicionais, confira as imagens do contêiner conversão de texto em fala.

Executar o contêiner com a execução do Docker

Use o comando docker run para executar o contêiner.

A seguinte tabela mostrará vários parâmetros de docker run e as descrições correspondentes:

Parâmetro Descrição
{ENDPOINT_URI} O ponto de extremidade é necessário para obter a medição e a cobrança. Para obter mais informações, consulte os argumentos de cobrança.
{API_KEY} A chave de API é obrigatória. Para obter mais informações, consulte os argumentos de cobrança.

Ao executar o contêiner de conversão de texto em fala, configure a porta, a memória e a CPU de acordo com os requisitos e recomendações do contêiner de conversão de texto em fala.

Aqui está um exemplo de comando docker run com valores de espaço reservado. Você deve especificar os valores para ENDPOINT_URI e 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}

Esse comando:

  • Executa um contêiner de conversão de texto em fala neural a partir da imagem do contêiner.
  • Aloca seis núcleos de CPU e 12 GB de memória.
  • Expõe a porta TCP 5000 e aloca um pseudo-TTY para o contêiner.
  • Remove automaticamente o contêiner depois que ele sai. A imagem de contêiner ainda fica disponível no computador host.

Para obter mais informações sobre docker run com contêineres de Fala, confira Instalar e executar contêineres de Fala com o Docker.

Usar o contêiner

Os contêineres de Fala fornecem APIs de ponto de extremidade de consulta baseadas em websocket que são acessadas através do SDK de Fala e da CLI de Fala. Por padrão, o SDK de Fala e a CLI de Fala usam o serviço público de Fala. Para usar o contêiner, você precisa alterar o método de inicialização.

Importante

Ao usar o serviço de Fala com contêineres, certifique-se de usar a autenticação de host. Se você configurar a chave e a região, as solicitações irão para o serviço público de Fala. Os resultados do serviço de Fala podem não ser os que você espera. As solicitações de contêineres desconectados falharão.

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o host do contêiner:

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

Em vez de usar essa configuração de inicialização da Nuvem do Azure:

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

Use essa configuração com o ponto de extremidade do contêiner:

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

Ao usar a CLI de Fala em um contêiner, inclua a opção--host http://localhost:5000/. Você também deve especificar --key none para garantir que a CLI não tente usar uma chave de Fala para autenticação. Para obter informações sobre como configurar a CLI de Fala, confira Introdução à CLI de Fala de IA do Azure.

Experimente o início rápido da conversão de texto em fala usando a autenticação do host em vez de chave e região.

Elemento de voz SSML

Quando você constrói um HTTP POST de conversão de texto em fala neural, a mensagem SSML requer um elemento voice com um atributo name. A localidade da voz deve corresponder à localidade do modelo de contêiner.

Por exemplo, um modelo que foi baixado por meio da marca latest (padrão para "en-US") teria um nome 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>

Próximas etapas