Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba como definir e usar restrições personalizadas para reconhecimento de fala em seu aplicativo SDK do Aplicativo Windows.
Importante
O reconhecimento de fala requer a identidade do pacote MSIX. As APIs Windows.Media.SpeechRecognition estão disponíveis somente quando seu aplicativo é executado com identidade de pacote (empacotado ou empacotado com localização externa). Aplicativos não empacotados não podem usar essas APIs.
APIs de chave
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Visão geral
O reconhecimento de fala requer pelo menos uma restrição para definir um vocabulário reconhecível. Se você não especificar uma restrição, a gramática de ditado predefinida será usada. Consulte o reconhecimento de fala.
Use a SpeechRecognizer.Constraints propriedade para adicionar restrições a um reconhecedor de fala. Três tipos de restrições estão disponíveis:
- SpeechRecognitionTopicConstraint — uma restrição baseada em uma gramática predefinida (ditado ou pesquisa na Web).
- SpeechRecognitionListConstraint – uma restrição baseada em uma lista de palavras ou frases.
- SpeechRecognitionGrammarFileConstraint — uma restrição definida em um arquivo SRGS (Especificação de Gramática de Reconhecimento de Fala).
Cada reconhecedor de fala pode ter uma coleção de restrições. As seguintes combinações são válidas:
- Uma restrição de tópico único (ditado ou pesquisa na Web)
- Uma única restrição de tópico combinada com uma restrição de lista
- Uma combinação de restrições de lista e/ou restrições de arquivo gramatical
Importante
Chame SpeechRecognizer.CompileConstraintsAsync para compilar as restrições antes de iniciar o processo de reconhecimento.
Especificar uma gramática de pesquisa na Web (SpeechRecognitionTopicConstraint)
private async void WeatherSearch_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
var webSearchGrammar = new Windows.Media.SpeechRecognition.SpeechRecognitionTopicConstraint(
Windows.Media.SpeechRecognition.SpeechRecognitionScenario.WebSearch, "webSearch");
speechRecognizer.UIOptions.AudiblePrompt = "Say what you want to search for...";
speechRecognizer.UIOptions.ExampleText = @"Ex. 'weather for London'";
speechRecognizer.Constraints.Add(webSearchGrammar);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Especificar uma restrição de lista programática (SpeechRecognitionListConstraint)
As restrições de lista são uma maneira leve de criar gramáticas simples a partir de uma lista de palavras ou frases. Uma restrição de lista funciona bem para reconhecer frases curtas e distintas:
private async void YesOrNo_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
string[] responses = { "Yes", "No" };
var listConstraint = new Windows.Media.SpeechRecognition.SpeechRecognitionListConstraint(
responses, "yesOrNo");
speechRecognizer.UIOptions.ExampleText = @"Ex. 'yes', 'no'";
speechRecognizer.Constraints.Add(listConstraint);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Especificar uma restrição de gramática SRGS (SpeechRecognitionGrammarFileConstraint)
As gramáticas SRGS fornecem um conjunto completo de recursos para interação de voz complexa, incluindo especificar a ordem na qual as palavras devem ser faladas, combinar palavras de várias listas, vincular a outras gramáticas e usar interpretação semântica:
private async void Colors_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
var storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///Colors.grxml"));
var grammarFileConstraint =
new Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint(
storageFile, "colors");
speechRecognizer.UIOptions.ExampleText = @"Ex. 'blue background', 'green text'";
speechRecognizer.Constraints.Add(grammarFileConstraint);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Use a .grxml extensão de arquivo para documentos gramaticais baseados em XML que estejam em conformidade com as regras do SRGS. Defina a Ação de Compilação do arquivo como Conteúdo e Copiar para o Diretório de Saída como Copiar sempre.
Para obter mais informações sobre elementos e atributos do SRGS, consulte a Referência XML de Gramática SRGS.
Gerenciar restrições
Depois de carregar uma coleção de restrições, você pode habilitar ou desabilitar restrições individuais definindo a IsEnabled propriedade como true ou false. O padrão é true.
Carregar restrições uma vez e depois habilitá-las ou desabilitá-las conforme necessário é mais eficiente do que carregar, descarregar e compilar restrições para cada operação de reconhecimento.
Restringir o número de restrições ativas melhora o desempenho e a precisão do reconhecimento de fala. Decida quais restrições habilitar com base nas frases que seu aplicativo pode esperar no contexto atual.
Artigos relacionados
Windows developer