Especificar o idioma do reconhecedor de fala

Saiba como selecionar um idioma instalado para usá-lo para reconhecimento de fala.

APIs importantes: SupportedTopicLanguages, SupportedGrammarLanguages, Language

Aqui, enumeramos os idiomas instalados em um sistema, identificamos qual é o idioma padrão e selecionamos um idioma diferente para o reconhecimento.

Pré-requisitos:

Este tópico complementa Reconhecimento de fala.

Você deve ter uma noção básica de reconhecimento de fala e restrições de reconhecimento.

Se você estiver familiarizado com o desenvolvimento de aplicativos do Windows, confira estes tópicos para se familiarizar com as tecnologias discutidas aqui.

Diretrizes de experiência do usuário:

Para obter dicas úteis sobre o design de um aplicativo habilitado para controle por voz interessante e prático, consulte Diretrizes para design de controle por voz.

Identifique o idioma padrão

Um reconhecedor de fala usa o idioma do controle por voz do sistema como seu idioma de reconhecimento padrão. Esse idioma é definido pelo usuário na tela Settings > System > Speech > Speech Language do dispositivo.

Identificamos o idioma padrão verificando a propriedade estática SystemSpeechLanguage.

var language = SpeechRecognizer.SystemSpeechLanguage; 

Confirmar um idioma instalado

Os idiomas instalados podem variar entre dispositivos. Verifique a existência de um idioma se você depender dele para uma determinada restrição.

Nota Uma reinicialização é necessária depois que um novo pacote de idiomas é instalado. Uma exceção com SPERR_NOT_FOUND de código de erro (0x8004503a) será gerada se o idioma especificado não tiver suporte ou não tiver concluído a instalação.

 

Determine os idiomas com suporte em um dispositivo verificando uma das duas propriedades estáticas da classe SpeechRecognizer:

Especificar um idioma

Para especificar um idioma, passe um objeto Language no construtor SpeechRecognizer.

Aqui, especificamos "en-US" como o idioma de reconhecimento.

var language = new Windows.Globalization.Language("en-US"); 
var recognizer = new SpeechRecognizer(language); 

Comentários

Uma restrição de tópico pode ser configurada adicionando uma SpeechRecognitionTopicConstraint à coleção Constraints do SpeechRecognizer e chamando CompileConstraintsAsync. Um SpeechRecognitionResultStatus de TopicLanguageNotSupported é retornado se o reconhecedor não for inicializado com um idioma de tópico com suporte.

Uma restrição de lista é configurada adicionando uma SpeechRecognitionListConstraint à coleção Constraints do SpeechRecognizer e chamando CompileConstraintsAsync. Você não pode especificar o idioma de uma lista personalizada diretamente. Em vez disso, a lista será processada usando o idioma do reconhecedor.

Uma gramática SRGS é um formato XML de padrão aberto representado pela classe SpeechRecognitionGrammarFileConstraint. Ao contrário de listas personalizadas, você pode especificar o idioma da gramática na marcação SRGS. Haverá falha de CompileConstraintsAsync com um SpeechRecognitionResultStatus de TopicLanguageNotSupported se o reconhecedor não for inicializado com o mesmo idioma que a marcação SRGS.

Amostras