Adicionar um conjunto de dados de treinamento de voz profissional

Quando você estiver pronto para criar uma voz personalizada de conversão de texto em fala para seu aplicativo, a primeira etapa é reunir gravações de áudio e scripts associados para começar a treinar o modelo de voz. Para obter detalhes sobre como gravar amostras de voz, consulte o tutorial. O serviço de Fala usa esses dados para criar uma voz exclusiva ajustada para corresponder à voz nas gravações. Depois de treinar a voz, você poderá começar a sintetizar a fala em seus aplicativos.

Todos os dado carregado deve atender aos requisitos do tipo de dados escolhido. É importante formatar corretamente os dados antes de carregá-los, o que garante que eles serão processados com precisão pelo serviço de Fala. Para confirmar se os dados estão formatados corretamente, consulte Tipos de dados de treinamento.

Observação

  • Os usuários da assinatura padrão (S0) podem fazer upload de cinco arquivos de dados simultaneamente. Ao atingir o limite, espere até que pelo menos uma importação dos seus arquivos de dados seja concluída. Em seguida, tente novamente.
  • O número máximo de arquivos de dados que podem ser importados por assinatura é de 500 arquivos .zip para usuários de assinatura standard (S0). Veja as cotas e limites do serviço de Fala para obter mais detalhes.

Upload de dados

Quando você estiver pronto para carregar os dados, vá para a guia Preparar dados de treinamento para adicionar o primeiro conjunto de treinamento e carregar os dados. Um conjunto de treinamento é um conjunto de enunciados de áudio e seus respectivos scripts de mapeamento usados para treinar um modelo de voz. Você pode usar um conjunto de treinamento para organizar os seus dados de treinamento. O serviço verifica a prontidão dos dados de acordo com cada conjunto de treinamento. É possível importar diversos dados para um conjunto de treinamento.

Para carregar os dados de treinamento, siga estas etapas:

  1. Entre no Speech Studio.
  2. Selecione Voz personalizada> Nome do projeto >Preparar dados de treinamento>Carregar dados.
  3. No assistente Carregar dados, escolha um tipo de dados e, em seguida, selecione Avançar.
  4. Selecione os arquivos locais do computador ou insira a URL de armazenamento de Blobs do Azure para carregar os dados.
  5. Em Especificar o conjunto de treinamento de destino, selecione um conjunto de treinamento existente ou crie um novo. Se você criou um novo conjunto de treinamento, verifique se ele está selecionado na lista suspensa antes de continuar.
  6. Selecione Avançar.
  7. Insira um nome e uma descrição para os dados e selecione Avançar.
  8. Examine os detalhes de carregamento e selecione Enviar.

Observação

IDs duplicadas não são aceitas. Os enunciados com a mesma ID serão removidos.

Nomes de áudio duplicados são removidos do treinamento. Verifique se os dados selecionados não contêm os mesmos nomes de áudio no arquivo .zip ou em diversos arquivos .zip. Se as IDs de enunciado (em arquivos de áudio ou de script) forem duplicadas, elas serão rejeitadas.

Os arquivos de dados são validados automaticamente quando você seleciona Enviar. A validação de dados inclui uma série de verificações nos arquivos de áudio para verificar o formato, o tamanho e a taxa de amostragem do arquivo. Se houver erros, corrija-os e envie novamente.

Após carregar os dados, você pode verificar os detalhes na exibição de detalhes do conjunto de treinamento. Na página de detalhes, é possível verificar problemas de pronúncia e o nível de ruídos para cada um dos seus dados. A pontuação de pronúncia no nível da frase varia de 0 a 100. Uma pontuação abaixo de 70 normalmente indica um erro de fala ou uma incompatibilidade com o script. Enunciados com uma pontuação geral inferior a 70 serão rejeitados. Um sotaque bem marcado pode reduzir a pontuação de pronúncia e afetar a voz digital gerada.

Resolva problemas de dados online

Após concluir o carregamento, você poderá verificar os detalhes dos dados do conjunto de treinamento. Antes de continuar a treinar o modelo de voz, tente resolver todos os problemas de dados.

Você pode identificar e resolver problemas de dados por enunciado no Speech Studio.

  1. Na página de detalhes, vá para a página Dados aceitos ou Dados rejeitados. Selecione enunciados individuais que você deseja alterar e clique em Editar.

    Screenshot of selecting edit button on the accepted data or rejected data details page.

    Você pode escolher quais problemas de dados serão exibidos com base em seus critérios.

    Screenshot of choosing which data issues to be displayed.

  2. A janela Editar será exibida.

    Screenshot of displaying Edit transcript and recording file window.

  3. Atualize a transcrição ou o arquivo de gravação de acordo com a descrição do problema na janela de edição.

    Você pode editar a transcrição na caixa de texto e, em seguida, clicar em Concluído

    Screenshot of selecting Done button on the Edit transcript and recording file window.

    Se você precisar atualizar o arquivo de gravação, selecione Atualizar arquivo de gravação e carregue o arquivo de gravação fixo (.wav).

    Screenshot that shows how to upload recording file on the Edit transcript and recording file window.

  4. Após fazer alterações em seus dados, é necessário verificar a qualidade dos dados clicando em Analisar dados antes de usar esse conjunto de dados para treinamento.

    Você não pode selecionar esse conjunto de treinamento para o modelo de treinamento antes da conclusão da análise.

    Screenshot of selecting Analyze data on Data details page.

    Você também pode excluir enunciados com problemas selecionando-os e clicando em Excluir.

Problemas de dados típicos

Os problemas são divididos em três tipos. Consulte as tabelas a seguir para verificar os respectivos tipos de erros.

Rejeitado automaticamente

Os dados com esses erros não serão usados para treinamento. Os dados importados com erros serão ignorados, portanto, você não precisa excluí-los. Você pode corrigir esses erros de dados online ou carregar os dados corrigidos novamente para treinamento.

Categoria Nome Descrição
Script Separador inválido Separe a ID do enunciado e o conteúdo do script com um caractere Tab.
Script ID de script inválida A ID da linha do script deve ser numérica.
Script Script duplicado Cada linha do conteúdo do script deve ser exclusiva. A linha é duplicada com {}.
Script Script muito longo O script deve ter menos de 1.000 caracteres.
Script Sem áudio correspondente A ID de cada expressão (cada linha do arquivo de script) deve corresponder à ID de áudio.
Script Sem script válido Nenhum script válido é encontrado neste conjunto de dados. Corrija as linhas do script que aparecem na lista detalhada de problemas.
Áudio Nenhum script correspondente Nenhum arquivo de áudio corresponde à ID do script. O nome dos arquivos .wav deve corresponder às IDs no arquivo de script.
Áudio Formato de áudio inválido O formato de áudio dos arquivos .wav é inválido. Verifique o formato do arquivo .wav usando uma ferramenta de áudio como o SoX.
Áudio Taxa de amostragem baixa A taxa de amostragem dos arquivos .wav não pode ser inferior a 16 KHz.
Áudio Áudio muito longo A duração do áudio é maior que 30 segundos. Divida o áudio longo em mais arquivos. É uma boa ideia tornar declarações menor que 15 segundos.
Áudio Sem áudio válido Nenhum áudio válido foi encontrado neste conjunto de dados. Verifique os dados de seu áudio e carregue novamente.
Incompatibilidade Enunciado de baixa pontuação A pontuação de pronúncia no nível da sentença é inferior a 70. Revise o script e o conteúdo de áudio para verificar se eles correspondem.

Corrigido automaticamente

Os erros a seguir são corrigidos automaticamente, mas você deve examiná-los e confirmar que as correções foram feitas do jeito certo.

Categoria Nome Descrição
Incompatibilidade Silêncio corrigido automaticamente O silêncio inicial foi detectado como sendo inferior a 100 ms e foi estendido para 100 ms automaticamente. Baixe o conjunto de dados normalizado para revisão.
Incompatibilidade Silêncio corrigido automaticamente O silêncio final foi detectado como sendo inferior a 100 ms e foi estendido para 100 ms automaticamente. Baixe o conjunto de dados normalizado para revisão.
Script Texto normalizado automaticamente O texto é normalizado automaticamente para dígitos, símbolos e abreviações. Revise o script e o áudio para certificar-se de que eles correspondam.

Verificação manual necessária

Os erros não resolvidos listados na tabela a seguir afetam a qualidade do treinamento, mas os dados com esses erros não serão excluídos durante o treinamento. Para um treinamento de qualidade superior, é uma boa ideia corrigir esses erros manualmente.

Categoria Nome Descrição
Script Texto não normalizado Esse script contém símbolos. Normalize os símbolos para corresponder ao áudio. Por exemplo, normalize / para barrar.
Script Enunciados de perguntas insuficientes Pelo menos 10 por cento do total de enunciados devem ser frases interrogativas. Isso ajuda o modelo de voz a expressar adequadamente um tom questionador.
Script Enunciados de exclamação insuficientes Pelo menos 10 por cento do total de declarações devem ser frases de exclamação. Isso ajuda o modelo de voz a expressar adequadamente um tom animado.
Script Sem pontuação final válida Adicione um dos seguintes itens no final da linha: parada completa (meia largura '.' ou largura total '。'), ponto de exclamação (meia largura '!' ou largura total '!' ) ou ponto de interrogação (meia largura '?' ou largura total '?').
Áudio Taxa de amostragem baixa para voz neural Recomenda-se que a taxa de amostragem de seus arquivos .wav seja de 24 KHz ou mais para a criação de vozes neurais. Se for inferior, ele será automaticamente gerado para 24 KHz.
Volume Volume geral muito baixo O volume não deve ser inferior a -18 dB (10 por cento do volume máximo). Controle o nível médio do volume dentro da faixa adequada durante o registro da amostra ou a preparação de dados.
Volume Estouro de volume O estouro do volume é detectado em {}s. Ajuste o equipamento de gravação para evitar o estouro de volume em seu valor de pico.
Volume Problema de silêncio inicial O primeiro silêncio de 100 ms não é limpo. Reduza o nível de ruído da gravação e deixe os primeiros 100 ms no início em silêncio.
Volume Problema de silêncio final O último silêncio de 100 ms não é limpo. Reduza o nível de ruído da gravação e deixe os últimos 100 ms no final em silêncio.
Incompatibilidade Palavras com pontuação baixa Revise o script e o conteúdo de áudio para verificar se eles correspondem e controle o nível de ruído de fundo. Reduza a duração do silêncio longo ou divida o áudio em vários enunciados se ele for muito longo.
Incompatibilidade Problema de silêncio inicial Áudio ouvido antes da primeira palavra. Revise o script e o conteúdo de áudio para verificar se eles correspondem, controle o nível de ruído de fundo e deixe os primeiros 100 ms em silêncio.
Incompatibilidade Problema de silêncio final Áudio extra ouvido após a última palavra. Revise o script e o conteúdo de áudio para verificar se eles correspondem, controle o nível de ruído de fundo e deixe os últimos 100 ms em silêncio.
Incompatibilidade Baixa taxa de ruídos de sinal O nível de SNR de áudio é inferior a 20 dB. É recomendável pelo menos 35 dB.
Incompatibilidade Nenhuma pontuação disponível Falha ao reconhecer o conteúdo de fala neste áudio. Verifique o áudio e o conteúdo do script para certificar-se de que o áudio seja válido e correspondente ao script.

Próximas etapas

Você precisa de um conjunto de dados de treinamento para criar uma voz profissional. Um conjunto de dados de treinamento inclui arquivos de áudio e script. Os arquivos de áudio são gravações do talento de voz lendo os arquivos de script. Os arquivos de script são o texto dos arquivos de áudio.

Neste artigo, você criará um conjunto de treinamento e obterá sua ID do recurso. Em seguida, usando a ID do recurso, você pode carregar um conjunto de arquivos de áudio e script.

Criar um conjunto de treinamento

Para criar um conjunto de treinamento, use a operação TrainingSets_Create da API de voz personalizada. Construa o corpo da solicitação de acordo com as seguintes instruções:

  • Defina a propriedade projectId necessária. Consulte criar um projeto.
  • Defina a propriedade voiceKind obrigatória como Male ou Female. O tipo não pode ser alterado mais tarde.
  • Defina a propriedade locale obrigatória. Essa deve ser a localidade dos dados do conjunto de treinamento. A localidade do conjunto de treinamento deve ser a mesma que a localidade da instrução de consentimento. Ela não poderá ser alterada posteriormente. Você pode encontrar a lista de localidades de conversão de texto em fala aqui.
  • Opcionalmente, defina a propriedade description para a descrição do conjunto de treinamento. A descrição do conjunto de treinamento pode ser alterada posteriormente.

Faça uma solicitação HTTP PUT usando o URI, conforme mostrado no exemplo de TrainingSets_Create a seguir.

  • Substitua YourResourceKey pela chave do recurso de Fala.
  • Substitua YourResourceRegion por sua região de recurso de Fala.
  • Substitua JessicaTrainingSetId por uma ID de conjunto de treinamento de sua escolha. A ID diferenciada de maiúsculas e minúsculas será usada no URI do conjunto de treinamento e não poderá ser alterada posteriormente.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourResourceKey" -H "Content-Type: application/json" -d '{
  "description": "300 sentences Jessica data in general style.",
  "projectId": "ProjectId",
  "locale": "en-US",
  "voiceKind": "Female"
} '  "https://YourResourceRegion.api.cognitive.microsoft.com/customvoice/trainingsets/JessicaTrainingSetId?api-version=2023-12-01-preview"

Você deve receber um corpo de resposta no seguinte formato:

{
  "id": "JessicaTrainingSetId",
  "description": "300 sentences Jessica data in general style.",
  "projectId": "ProjectId",
  "locale": "en-US",
  "voiceKind": "Female",
  "status": "Succeeded",
  "createdDateTime": "2023-04-01T05:30:00.000Z",
  "lastActionDateTime": "2023-04-02T10:15:30.000Z"
}

Carregar dados do conjunto de treinamento

Para carregar um conjunto de treinamento de áudio e scripts, use a operação TrainingSets_UploadData da API de voz personalizada.

Antes de chamar essa API, armazene arquivos de gravação e script no Blob do Azure. No exemplo abaixo, os arquivos de gravação são https://contoso.blob.core.windows.net/voicecontainer/jessica300/*.wav e os arquivos de script são https://contoso.blob.core.windows.net/voicecontainer/jessica300/*.txt.

Crie o corpo da solicitação de acordo com as seguintes instruções:

  • Defina a propriedade kind obrigatória como AudioAndScript. O tipo determina o tipo de conjunto de treinamento.
  • Defina a propriedade audios obrigatória. Dentro da propriedade audios, defina as seguintes propriedades:
    • Defina a propriedade containerUrl obrigatória para a URL do contêiner do Armazenamento de Blobs do Azure que contém os arquivos de áudio. Use SAS (assinaturas de acesso compartilhado) para um contêiner com permissões de leitura e listagem.
    • Defina a propriedade extensions obrigatória para as extensões dos arquivos de áudio.
    • Opcionalmente, defina a propriedade prefix para definir um prefixo para o nome do blob.
  • Defina a propriedade scripts obrigatória. Dentro da propriedade scripts, defina as seguintes propriedades:
    • Defina a propriedade containerUrl obrigatória para a URL do contêiner do Armazenamento de Blobs do Azure que contém os arquivos de script. Use SAS (assinaturas de acesso compartilhado) para um contêiner com permissões de leitura e listagem.
    • Defina a propriedade extensions obrigatória para as extensões dos arquivos de script.
    • Opcionalmente, defina a propriedade prefix para definir um prefixo para o nome do blob.

Faça uma solicitação HTTP POST usando o URI, conforme mostrado no exemplo de TrainingSets_UploadData a seguir.

  • Substitua YourResourceKey pela chave do recurso de Fala.
  • Substitua YourResourceRegion por sua região de recurso de Fala.
  • Substitua JessicaTrainingSetId se você especificou uma ID de conjunto de treinamento diferente na etapa anterior.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourResourceKey" -H "Content-Type: application/json" -d '{
  "kind": "AudioAndScript",
  "audios": {
    "containerUrl": "https://contoso.blob.core.windows.net/voicecontainer?mySasToken",
    "prefix": "jessica300/",
    "extensions": [
      ".wav"
    ]
  },
  "scripts": {
    "containerUrl": "https://contoso.blob.core.windows.net/voicecontainer?mySasToken",
    "prefix": "jessica300/",
    "extensions": [
      ".txt"
    ]
  }
} '  "https://YourResourceRegion.api.cognitive.microsoft.com/customvoice/trainingsets/JessicaTrainingSetId:upload?api-version=2023-12-01-preview"

O cabeçalho de resposta contém a propriedade Operation-Location. Use esse URI para obter detalhes sobre a operação de TrainingSets_UploadData. Aqui está um exemplo do cabeçalho da resposta:

Operation-Location: https://eastus.api.cognitive.microsoft.com/customvoice/operations/284b7e37-f42d-4054-8fa9-08523c3de345?api-version=2023-12-01-preview
Operation-Id: 284b7e37-f42d-4054-8fa9-08523c3de345

Próximas etapas