Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aprenda a definir e usar restrições personalizadas para reconhecimento de fala na sua aplicação SDK de Aplicações Windows.
Importante
O reconhecimento de voz requer a identidade do pacote MSIX. As APIs Windows.Media.SpeechRecognition estão disponíveis apenas quando a sua aplicação é executada com identidade de pacote (empacotada ou empacotada com localização externa). As aplicações não embaladas não podem usar estas APIs.
APIs principais
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- Restrição de Ficheiro de Gramática de Reconhecimento de Fala
Descrição geral
O reconhecimento de fala requer pelo menos uma restrição para definir um vocabulário reconhecível. Se não especificares uma restrição, usa-se a gramática de ditado pré-definida. Ver Reconhecimento de Fala.
Use a SpeechRecognizer.Constraints propriedade para adicionar restrições a um reconhecedor de voz. Estão disponíveis três tipos de restrições:
- SpeechRecognitionTopicConstraint — Uma restrição baseada numa gramática predefinida (ditado ou pesquisa na web).
- SpeechRecognitionListConstraint — Uma restrição baseada numa lista de palavras ou frases.
- SpeechRecognitionGrammarFileConstraint — Uma restrição definida num ficheiro de Especificação de Gramática de Reconhecimento de Fala (SRGS).
Cada reconhecedor de fala pode ter uma coleção de restrições. As seguintes combinações são válidas:
- Uma restrição de tema único (ditado ou pesquisa na web)
- Uma restrição de tópico único combinada com uma restrição de lista
- Uma combinação de restrições de lista e/ou restrições de ficheiro gramatical
Importante
Chamar SpeechRecognizer.CompileConstraintsAsync para compilar as restrições antes de iniciar o processo de reconhecimento.
Especifique uma gramática de pesquisa na web (SpeechRecognitionTopicConstraint - Restrição de Tópico de Reconhecimento de Fala)
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 forma 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;
}
Especifique uma restrição gramatical do SRGS (SpeechRecognitionGrammarFileConstraint)
As gramáticas SRGS fornecem um conjunto completo de funcionalidades para interações vocais complexas, incluindo especificar a ordem em que as palavras devem ser pronunciadas, combinar palavras de várias listas, ligar 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 extensão de .grxml ficheiro para documentos gramaticais baseados em XML que cumpram as regras SRGS. Defina a Ação de Compilação do ficheiro como Conteúdo e Copiar para o Diretório de Saída como Copiar sempre.
Para mais informações sobre elementos e atributos do SRGS, consulte a Referência XML de Gramática do SRGS.
Gerir restrições
Depois de carregar uma coleção de restrições, pode ativar ou desativar restrições individuais definindo a IsEnabled propriedade como true ou false. A predefinição é true.
Carregar restrições uma vez e depois ativar ou desativá-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 tanto o desempenho como a precisão do reconhecimento de voz. Decida quais as restrições a ativar com base nas frases que a sua aplicação pode esperar no contexto atual.
Artigos relacionados
Windows developer