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

A fala personalizada para o contêiner de texto transcreve gravações de áudio em tempo real ou de áudio em lote com resultados intermediários. Você pode usar um modelo personalizado criado no portal de fala personalizada. Neste artigo, você aprenderá a baixar, instalar e executar uma fala personalizada no contêiner de conversão de fala em texto.

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 de contêiner de fala personalizada para texto para todas as versões e localidades com suporte pode ser encontrada no sindicato do Registro de Contêiner da Microsoft (MCR). Ela reside no repositório azure-cognitive-services/speechservices/ e é chamada custom-speech-to-text.

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/custom-speech-to-text. 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/custom-speech-to-text:latest
4.6.0 mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text:4.6.0-amd64

Todas as marcas, exceto latest, estão disponíveis no seguinte formato e diferenciam maiúsculas de minúsculas:

<major>.<minor>.<patch>-<platform>-<prerelease>

Observação

O locale e voice para contêineres de conversão de fala em texto personalizados são determinados pelo modelo personalizado ingerido pelo contêiner.

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/custom-speech-to-text",
  "tags": [
    "2.10.0-amd64",
    "2.11.0-amd64",
    "2.12.0-amd64",
    "2.12.1-amd64",
    <--redacted for brevity-->
    "latest"
  ]
}

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/custom-speech-to-text:latest

Observação

A locale e a voice de contêineres de Fala Personalizada são determinadas pelo modelo personalizado ingerido pelo contêiner.

Obter a ID do modelo

Antes de executar o contêiner, você precisa saber a ID do modelo do modelo personalizado ou uma ID de modelo base. Ao executar o contêiner, você especifica uma das IDs de modelo a serem baixadas e usadas.

O modelo personalizado tem que passar pelo treinamento no Speech Studio. Para obter informações sobre como obter a ID do modelo, confira o ciclo de vida do modelo de fala personalizada.

Screenshot that shows the custom speech training page.

Obtenha a ID do modelo a fim de usá-la como argumento para o parâmetro ModelId do comando docker run.

Screenshot that shows custom speech model details.

Exibir download do modelo

Antes de executar o contêiner, você pode, opcionalmente, obter as informações dos modelos de exibição disponíveis e optar por baixar esses modelos no seu contêiner de conversão de fala em texto para obter uma saída de exibição final altamente aprimorada. O download do modelo de exibição está disponível com o contêiner personalizado de conversão de fala em texto versão 3.1.0 e posterior.

Observação

Embora você use o comando docker run, o contêiner não é iniciado para o serviço.

Você pode consultar ou baixar qualquer um desse tipos de modelo de exibição ou todos eles: Repontuação (Rescore), Pontuação (Punct), ressegmentação (Resegment) e wfstitn (Wfstitn). Caso contrário, você poderá usar a opção FullDisplay (com ou sem os outros tipos) para consultar ou baixar todos os tipos de modelos de exibição.

Defina o BaseModelLocale para consultar o modelo de exibição mais recente disponível na localidade de destino. Se você incluir vários tipos de modelo de exibição, o comando retornará os modelos de exibição mais recentes disponíveis para cada tipo. Por exemplo:

docker run --rm -it \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
Punct Rescore Resegment Wfstitn \   # Specify `FullDisplay` or a space-separated subset of display models
BaseModelLocale={LOCALE} \           
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Defina o DisplayLocale para baixar o modelo de exibição mais recente disponível na localidade de destino. Ao definir DisplayLocale, você também deve especificar FullDisplay ou um subconjunto separado por espaços de modelos de exibição. O comando baixa o modelo de exibição mais recente disponível para cada tipo especificado. Por exemplo:

docker run --rm -it \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
Punct Rescore Resegment Wfstitn \   # Specify `FullDisplay` or a space-separated subset of display models
DisplayLocale={LOCALE} \           
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Defina um parâmetro de ID de modelo para baixar um modelo de exibição específico: Repontuação (RescoreId), Pontuação (PunctId), ressegmentação (ResegmentId) ou wfstitn (WfstitnId). Isso é semelhante a como você baixaria um modelo base por meio do parâmetro ModelId. Por exemplo, para baixar um modelo de exibição de repontuação, você pode usar o seguinte comando com o parâmetro RescoreId:

docker run --rm -it \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
RescoreId={RESCORE_MODEL_ID} \         
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Observação

Se você definir mais de um parâmetro de consulta ou de download, o comando será priorizado nesta ordem: BaseModelLocale, ID do modelo e DisplayLocale (aplicável somente para modelos de exibição).

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

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

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

Parâmetro Descrição
{VOLUME_MOUNT} A montagem de volume do computador host, usada pelo Docker para persistir o modelo personalizado. Um exemplo é c:\CustomSpeech, em que a unidade c:\ está localizada no computador host.
{MODEL_ID} A ID do modelo de fala personalizada ou modelo base. Para obter mais informações, consulte Obter a ID do modelo.
{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 personalizado de conversão de fala em texto, configure a porta, a memória e a CPU de acordo com os requisitos e recomendações do contêiner personalizado de conversão de fala em texto.

Aqui está um exemplo de comando docker run com valores de espaço reservado. Você deve especificar os valores VOLUME_MOUNT, MODEL_ID, ENDPOINT_URI e API_KEY:

docker run --rm -it -p 5000:5000 --memory 8g --cpus 4 \
-v {VOLUME_MOUNT}:/usr/local/models \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
ModelId={MODEL_ID} \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Esse comando:

  • Executa um contêiner personalizado de conversão de fala em texto a partir da imagem do contêiner.
  • Aloca quatro núcleos de CPU e 8 GB de memória.
  • Carrega o modelo personalizado de conversão de fala em texto a partir do suporte de entrada do volume, por exemplo, C:\CustomSpeech.
  • Expõe a porta TCP 5000 e aloca um pseudo-TTY para o contêiner.
  • Baixa o modelo de acordo com o ModelId (caso ele não seja encontrado na montagem de volume).
  • Caso o modelo personalizado tenha sido baixado anteriormente, o ModelId será ignorado.
  • 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("ws://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("ws://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("ws://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("ws://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("ws://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:"ws://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: "ws://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="ws://localhost:5000")

Ao usar a CLI de Fala em um contêiner, inclua a opção--host ws://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, consulte Introdução à CLI de Fala de IA do Azure.

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

Próximas etapas