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:
Inicie sessão no Speech Studio.
Selecione Fala> personalizada Seu nome >de projeto Modelos de teste.
Selecione Criar novo teste.
Selecione Avaliar precisão>em seguida.
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.
Selecione até dois modelos para avaliar e, em seguida, selecione Avançar.
Introduza o nome e a descrição do teste e, em seguida, selecione Seguinte.
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 ospx 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 ambosmodel1
emodel2
. - 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 CLIlanguage
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 CLIname
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 deEvaluation
customProperties
. Se você não especificarEvaluation
, o teste será tratado como um teste de inspeção de qualidade. Quer atestingKind
propriedade esteja definida comoEvaluation
ouInspection
nã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 ambosmodel1
emodel2
. - 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:
- Inicie sessão no Speech Studio.
- Selecione Fala> personalizada Seu nome >de projeto Modelos de teste.
- Selecione o link por nome de teste.
- 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:
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 dollars
exibiçã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 |