Testar a precisão de um modelo de fala personalizado

Neste artigo, você aprenderá a medir quantitativamente e melhorar a precisão da fala base para o modelo de texto ou seus próprios modelos personalizados. Áudio + dados de transcrição rotulados por humanos são necessários para testar a precisão. Você deve fornecer de 30 minutos a 5 horas de áudio representativo.

Importante

Durante o teste, o sistema realizará uma transcrição. Isso é importante ter em mente, pois os preços variam de acordo com a oferta de serviço e o nível de assinatura. Consulte sempre os preços oficiais dos serviços de IA do Azure para obter os detalhes mais recentes.

Criar um teste

Você pode testar a precisão do seu modelo personalizado criando um teste. Um teste requer uma coleção de arquivos de áudio e suas transcrições correspondentes. Você pode comparar a precisão de um modelo personalizado com um modelo base de fala para texto ou outro modelo personalizado. Depois de obter os resultados do teste, avalie a taxa de erro de palavras (WER) em comparação com os resultados do reconhecimento de fala.

Siga estas etapas para criar um teste:

  1. Inicie sessão no Speech Studio.

  2. Selecione Fala> personalizada Seu nome >de projeto Modelos de teste.

  3. Selecione Criar novo teste.

  4. Selecione Avaliar precisão>em seguida.

  5. Selecione um conjunto de dados de transcrição de áudio + etiquetado por humanos e, em seguida, selecione Avançar. Se não houver conjuntos de dados disponíveis, cancele a configuração e vá para o menu Conjuntos de dados de fala para carregar conjuntos de dados.

    Nota

    É importante selecionar um conjunto de dados acústicos diferente daquele que você usou com seu modelo. Esta abordagem pode fornecer uma noção mais realista do desempenho do modelo.

  6. Selecione até dois modelos para avaliar e, em seguida, selecione Avançar.

  7. Introduza o nome e a descrição do teste e, em seguida, selecione Seguinte.

  8. Reveja os detalhes do teste e, em seguida, selecione Guardar e fechar.

Para criar um teste, use o spx csr evaluation create comando. Construa os parâmetros de solicitação de acordo com as seguintes instruções:

  • Defina o project parâmetro como a ID de um projeto existente. Esse parâmetro é recomendado para que você também possa visualizar o teste no Speech Studio. Você pode executar o spx csr project list comando para obter projetos disponíveis.
  • Defina o parâmetro necessário model1 para a ID de um modelo que você deseja testar.
  • Defina o parâmetro necessário model2 para a ID de outro modelo que você deseja testar. Se você não quiser comparar dois modelos, use o mesmo modelo para ambos model1 e model2.
  • Defina o parâmetro necessário dataset para a ID de um conjunto de dados que você deseja usar para o teste.
  • Defina o language parâmetro, caso contrário, a CLI de fala define "en-US" por padrão. Esse parâmetro deve ser a localidade do conteúdo do conjunto de dados. A localidade não pode ser alterada posteriormente. O parâmetro Speech CLI language corresponde à locale propriedade na solicitação e resposta JSON.
  • Defina o parâmetro necessário name . Este parâmetro é o nome exibido no Speech Studio. O parâmetro Speech CLI name corresponde à displayName propriedade na solicitação e resposta JSON.

Aqui está um exemplo de comando da CLI de fala que cria um teste:

spx csr evaluation create --api-version v3.2 --project 0198f569-cc11-4099-a0e8-9d55bc3d0c52 --dataset 23b6554d-21f9-4df1-89cb-f84510ac8d23 --model1 ff43e922-e3e6-4bf0-8473-55c08fd68048 --model2 13fb305e-09ad-4bce-b3a1-938c9124dda3 --name "My Evaluation" --description "My Evaluation Description"

Deverá receber um corpo de resposta no seguinte formato:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38",
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
  },
  "transcription2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "transcription1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": -1.0,
    "sentenceErrorRate1": -1.0,
    "sentenceCount1": -1,
    "wordCount1": -1,
    "correctWordCount1": -1,
    "wordSubstitutionCount1": -1,
    "wordDeletionCount1": -1,
    "wordInsertionCount1": -1,
    "wordErrorRate2": -1.0,
    "sentenceErrorRate2": -1.0,
    "sentenceCount2": -1,
    "wordCount2": -1,
    "correctWordCount2": -1,
    "wordSubstitutionCount2": -1,
    "wordDeletionCount2": -1,
    "wordInsertionCount2": -1
  },
  "lastActionDateTime": "2024-07-14T21:31:14Z",
  "status": "NotStarted",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

A propriedade de nível self superior no corpo da resposta é o URI da avaliação. Use este URI para obter detalhes sobre o projeto e os resultados do teste. Você também usa esse URI para atualizar ou excluir a avaliação.

Para obter ajuda da CLI de fala com avaliações, execute o seguinte comando:

spx help csr evaluation

Para criar um teste, use a operação Evaluations_Create da API REST de fala para texto. Construa o corpo da solicitação de acordo com as seguintes instruções:

  • Defina a project propriedade como o URI de um projeto existente. Essa propriedade é recomendada para que você também possa exibir o teste no Speech Studio. Você pode fazer uma solicitação de Projects_List para obter projetos disponíveis.
  • Defina a testingKind propriedade como dentro de Evaluation customProperties. Se você não especificar Evaluation, o teste será tratado como um teste de inspeção de qualidade. Quer a testingKind propriedade esteja definida como Evaluation ou Inspectionnão, você pode acessar as pontuações de precisão por meio da API, mas não no Speech Studio.
  • Defina a propriedade required model1 como o URI de um modelo que você deseja testar.
  • Defina a propriedade required model2 para o URI de outro modelo que você deseja testar. Se você não quiser comparar dois modelos, use o mesmo modelo para ambos model1 e model2.
  • Defina a propriedade required dataset para o URI de um conjunto de dados que você deseja usar para o teste.
  • Defina a propriedade necessária locale . Essa propriedade deve ser a localidade do conteúdo do conjunto de dados. A localidade não pode ser alterada posteriormente.
  • Defina a propriedade necessária displayName . Esta propriedade é o nome exibido no Speech Studio.

Faça uma solicitação HTTP POST usando o URI, conforme mostrado no exemplo a seguir. Substitua YourSubscriptionKey pela chave de recurso Fala, substitua YourServiceRegion pela região de recurso Fala e defina as propriedades do corpo da solicitação conforme descrito anteriormente.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  },
  "locale": "en-US"
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations"

Deverá receber um corpo de resposta no seguinte formato:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38",
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
  },
  "transcription2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "transcription1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": -1.0,
    "sentenceErrorRate1": -1.0,
    "sentenceCount1": -1,
    "wordCount1": -1,
    "correctWordCount1": -1,
    "wordSubstitutionCount1": -1,
    "wordDeletionCount1": -1,
    "wordInsertionCount1": -1,
    "wordErrorRate2": -1.0,
    "sentenceErrorRate2": -1.0,
    "sentenceCount2": -1,
    "wordCount2": -1,
    "correctWordCount2": -1,
    "wordSubstitutionCount2": -1,
    "wordDeletionCount2": -1,
    "wordInsertionCount2": -1
  },
  "lastActionDateTime": "2024-07-14T21:31:14Z",
  "status": "NotStarted",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

A propriedade de nível self superior no corpo da resposta é o URI da avaliação. Use este URI para obter detalhes sobre o projeto da avaliação e os resultados do teste. Você também usa esse URI para atualizar ou excluir a avaliação.

Obter resultados de testes

Você deve obter os resultados do teste e avaliar a taxa de erro de palavras (WER) em comparação com os resultados de reconhecimento de fala.

Siga estas etapas para obter os resultados do teste:

  1. Inicie sessão no Speech Studio.
  2. Selecione Fala> personalizada Seu nome >de projeto Modelos de teste.
  3. Selecione o link por nome de teste.
  4. Após a conclusão do teste, conforme indicado pelo status definido como Bem-sucedido, você verá os resultados que incluem o número WER para cada modelo testado.

Esta página lista todos os enunciados em seu conjunto de dados e os resultados de reconhecimento, juntamente com a transcrição do conjunto de dados enviado. Você pode alternar vários tipos de erro, incluindo inserção, exclusão e substituição. Ao ouvir o áudio e comparar os resultados de reconhecimento em cada coluna, você pode decidir qual modelo atende às suas necessidades e determinar onde mais treinamento e melhorias são necessários.

Para obter os resultados do teste, use o spx csr evaluation status comando. Construa os parâmetros de solicitação de acordo com as seguintes instruções:

  • Defina o parâmetro necessário evaluation para o ID da avaliação que você deseja obter os resultados do teste.

Aqui está um exemplo de comando da CLI de fala que obtém resultados de teste:

spx csr evaluation status --api-version v3.2 --evaluation 8bfe6b05-f093-4ab4-be7d-180374b751ca

As taxas de erro da palavra e mais detalhes são retornados no corpo da resposta.

Deverá receber um corpo de resposta no seguinte formato:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38",
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
  },
  "transcription2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "transcription1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": 0.028900000000000002,
    "sentenceErrorRate1": 0.667,
    "tokenErrorRate1": 0.12119999999999999,
    "sentenceCount1": 3,
    "wordCount1": 173,
    "correctWordCount1": 170,
    "wordSubstitutionCount1": 2,
    "wordDeletionCount1": 1,
    "wordInsertionCount1": 2,
    "tokenCount1": 165,
    "correctTokenCount1": 145,
    "tokenSubstitutionCount1": 10,
    "tokenDeletionCount1": 1,
    "tokenInsertionCount1": 9,
    "tokenErrors1": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    },
    "wordErrorRate2": 0.028900000000000002,
    "sentenceErrorRate2": 0.667,
    "tokenErrorRate2": 0.12119999999999999,
    "sentenceCount2": 3,
    "wordCount2": 173,
    "correctWordCount2": 170,
    "wordSubstitutionCount2": 2,
    "wordDeletionCount2": 1,
    "wordInsertionCount2": 2,
    "tokenCount2": 165,
    "correctTokenCount2": 145,
    "tokenSubstitutionCount2": 10,
    "tokenDeletionCount2": 1,
    "tokenInsertionCount2": 9,
    "tokenErrors2": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    }
  },
  "lastActionDateTime": "2024-07-14T21:31:22Z",
  "status": "Succeeded",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

Para obter ajuda da CLI de fala com avaliações, execute o seguinte comando:

spx help csr evaluation

Para obter resultados de teste, comece usando a operação Evaluations_Get da API REST de fala para texto.

Faça uma solicitação HTTP GET usando o URI, conforme mostrado no exemplo a seguir. Substitua YourEvaluationId pelo ID de avaliação, substitua YourSubscriptionKey pela chave de recurso Fala e substitua YourServiceRegion pela região do recurso Fala.

curl -v -X GET "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/YourEvaluationId" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

As taxas de erro da palavra e mais detalhes são retornados no corpo da resposta.

Deverá receber um corpo de resposta no seguinte formato:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38",
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
  },
  "transcription2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "transcription1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/b50642a8-febf-43e1-b9d3-e0c90b82a62a"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": 0.028900000000000002,
    "sentenceErrorRate1": 0.667,
    "tokenErrorRate1": 0.12119999999999999,
    "sentenceCount1": 3,
    "wordCount1": 173,
    "correctWordCount1": 170,
    "wordSubstitutionCount1": 2,
    "wordDeletionCount1": 1,
    "wordInsertionCount1": 2,
    "tokenCount1": 165,
    "correctTokenCount1": 145,
    "tokenSubstitutionCount1": 10,
    "tokenDeletionCount1": 1,
    "tokenInsertionCount1": 9,
    "tokenErrors1": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    },
    "wordErrorRate2": 0.028900000000000002,
    "sentenceErrorRate2": 0.667,
    "tokenErrorRate2": 0.12119999999999999,
    "sentenceCount2": 3,
    "wordCount2": 173,
    "correctWordCount2": 170,
    "wordSubstitutionCount2": 2,
    "wordDeletionCount2": 1,
    "wordInsertionCount2": 2,
    "tokenCount2": 165,
    "correctTokenCount2": 145,
    "tokenSubstitutionCount2": 10,
    "tokenDeletionCount2": 1,
    "tokenInsertionCount2": 9,
    "tokenErrors2": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    }
  },
  "lastActionDateTime": "2024-07-14T21:31:22Z",
  "status": "Succeeded",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

Avaliar a taxa de erro de palavras (WER)

O padrão da indústria para medir a precisão do modelo é a taxa de erro de palavras (WER). O WER conta o número de palavras incorretas identificadas durante o reconhecimento e divide a soma pelo número total de palavras fornecidas no transcrito rotulado por humanos (N).

As palavras incorretamente identificadas dividem-se em três categorias:

  • Inserção (I): Palavras adicionadas incorretamente na transcrição da hipótese
  • Eliminação (D): Palavras que não são detetadas na transcrição da hipótese
  • Substituição (S): Palavras que foram substituídas entre referência e hipótese

No Speech Studio, o quociente é multiplicado por 100 e mostrado como uma percentagem. Os resultados da CLI de fala e da API REST não são multiplicados por 100.

$$ WER = {{I+D+S}\over N} \times 100 $$

Aqui está um exemplo que mostra palavras identificadas incorretamente, quando comparadas com a transcrição rotulada por humanos:

Captura de ecrã a mostrar um exemplo de palavras incorretamente identificadas.

O resultado do reconhecimento de fala errou da seguinte forma:

  • Inserção (I): Acrescentada a palavra "a"
  • Supressão (D): Suprimida a palavra "são"
  • Substituição (S): Substituiu a palavra "Jones" por "John"

A taxa de erro de palavras do exemplo anterior é de 60%.

Se quiser replicar as medições do WER localmente, você pode usar a ferramenta sclite do NIST Scoring Toolkit (SCTK).

Resolva erros e melhore o WER

Você pode usar o cálculo WER dos resultados de reconhecimento de máquina para avaliar a qualidade do modelo que está usando com seu aplicativo, ferramenta ou produto. Um WER de 5-10% é considerado de boa qualidade e está pronto para uso. Um WER de 20% é aceitável, mas você pode querer considerar mais treinamento. Um WER de 30% ou mais sinaliza má qualidade e requer personalização e treinamento.

A forma como os erros são distribuídos é importante. Quando muitos erros de exclusão são encontrados, geralmente é devido à fraca intensidade do sinal de áudio. Para resolver esse problema, você precisa coletar dados de áudio mais perto da fonte. Erros de inserção significam que o áudio foi gravado em um ambiente barulhento e crosstalk pode estar presente, causando problemas de reconhecimento. Os erros de substituição são frequentemente encontrados quando uma amostra insuficiente de termos específicos do domínio é fornecida como transcrições rotuladas por humanos ou texto relacionado.

Ao analisar arquivos individuais, você pode determinar que tipo de erros existem e quais erros são exclusivos de um arquivo específico. Compreender os problemas no nível do arquivo ajuda a direcionar melhorias.

Avaliar a taxa de erro do token (TER)

Além da taxa de erro de palavras, você também pode usar a medição estendida da Taxa de Erro de Token (TER) para avaliar a qualidade no formato de exibição final de ponta a ponta. Além do formato lexical (That will cost $900. em vez de ), o TER leva em conta os aspetos do formato de that will cost nine hundred dollarsexibição, como pontuação, maiúsculas e ITN. Saiba mais sobre Exibir formatação de saída com conversão de fala em texto.

O TER conta o número de tokens incorretos identificados durante o reconhecimento e divide a soma pelo número total de tokens fornecidos na transcrição rotulada por humanos (N).

$$ TER = {{I+D+S}\over N} \times 100 $$

A fórmula de cálculo do TER também é semelhante ao WER. A única diferença é que o TER é calculado com base no nível do token em vez do nível da palavra.

  • Inserção (I): Tokens que são adicionados incorretamente na transcrição da hipótese
  • Exclusão (D): Tokens que não são detetados na transcrição da hipótese
  • Substituição (S): Tokens que foram substituídos entre referência e hipótese

Em um caso real, você pode analisar os resultados WER e TER para obter as melhorias desejadas.

Nota

Para medir o TER, você precisa garantir que os dados de teste de áudio + transcrição incluam transcrições com formatação de exibição, como pontuação, maiúsculas e ITN.

Resultados de cenários de exemplo

Os cenários de reconhecimento de fala variam de acordo com a qualidade do áudio e a linguagem (vocabulário e estilo de fala). A tabela a seguir examina quatro cenários comuns:

Cenário Qualidade de áudio Vocabulário Estilo de fala
Call center Baixo, 8 kHz, poderia ser duas pessoas em um canal de áudio, poderia ser comprimido Estreito, exclusivo para domínio e produtos Conversacional, vagamente estruturado
Assistente de voz, como a Cortana, ou uma janela de drive-through Alta, 16 kHz Entidade pesada (títulos de músicas, produtos, locais) Palavras e frases claramente indicadas
Ditado (mensagem instantânea, notas, pesquisa) Alta, 16 kHz Variado Tomada de notas
Legendas ocultas de vídeo Variado, incluindo o uso variado do microfone, música adicionada Variado, desde encontros, discursos recitados, letras musicais Leitura, preparação ou estrutura flexível

Diferentes cenários produzem resultados de qualidade diferentes. A tabela a seguir examina como o conteúdo desses quatro cenários é classificado no WER. A tabela mostra quais tipos de erro são mais comuns em cada cenário. As taxas de erro de inserção, substituição e exclusão ajudam a determinar que tipo de dados adicionar para melhorar o modelo.

Cenário Qualidade do reconhecimento de fala Erros de inserção Erros de eliminação Erros de substituição
Call center Médio
<( 30% WER)
Baixo, exceto quando outras pessoas falam em segundo plano Pode ser alto. Os call centers podem ser barulhentos e alto-falantes sobrepostos podem confundir o modelo Média. Produtos e nomes de pessoas podem causar esses erros
Assistente de voz Alto
(pode ser < 10% WER)
Baixo Baixo Médio, devido a títulos de músicas, nomes de produtos ou localizações
Ditado Alto
(pode ser < 10% WER)
Baixo Baixa Alta
Legendas ocultas de vídeo Depende do tipo de vídeo (pode ser < 50% WER) Baixo Pode ser alto por causa da música, ruídos, qualidade do microfone O jargão pode causar esses erros

Próximos passos