Guia de início rápido: reconhecimento de fala (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Use o reconhecimento de fala para fornecer entrada, especificar uma ação ou um comando e executar tarefas em seu Aplicativo Universal do Windows.
Observação Comandos de voz e reconhecimento de fala não têm suporte em aplicativos da Windows Store no Windows 8 e no Windows 8.1.
O reconhecimento de fala é realizado em um tempo de execução de fala, APIs de reconhecimento para programação do tempo de execução, gramáticas prontas para usar ditado e pesquisa na Web e uma interface do usuário do sistema padrão que auxilia os usuários a descobrir e usar recursos de reconhecimento de fala.
Objetivo: Para saber como ativar o reconhecimento de fala.
Pré-requisitos
Se você for iniciante no desenvolvimento de aplicativos em JavaScript:
Para concluir este tutorial, dê uma olhada nesses tópicos para se familiarizar com as tecnologias discutidas aqui:
- Instale o Microsoft Visual Studio.
- Obter uma licença de desenvolvedor. Para obter instruções, veja Desenvolver usando o Visual Studio 2013.
- Crie seu primeiro aplicativo em JavaScript.
- Mapa para os aplicativos da Windows Store usando JavaScript
- Saiba mais sobre eventos com Guia de início rápido: adicionando controles HTML e manipulando eventos
Diretrizes de experiência do usuário:
Veja em Diretrizes de design de fala dicas úteis sobre o design de um aplicativo habilitado para fala interessante e útil.
Instruções
1. Configurar o feed de áudio
Certifique-se de que o dispositivo possui microfone ou equivalente.
Configure a capacidade do dispositivo Microfone (DeviceCapability) no Manifesto de pacote de aplicativo (arquivo package.appxmanifest) para obter acesso ao feed de áudio do microfone. Isso permite que o aplicativo grave áudio de microfones conectados.
Consulte Declarações de funcionalidades do aplicativo.
2. Reconhecer a entrada da fala
Uma restrição define as palavras e frases (vocabulário) que um aplicativo reconhece na entrada de fala. As restrições estão no núcleo do reconhecimento de fala e proporcionam a seu aplicativo mais exatidão no reconhecimento de fala.
Você pode usar vários tipos de restrições quando executar reconhecimento de fala:
Gramáticas pré-definidas (SpeechRecognitionTopicConstraint).
Ditado predefinido e gramáticas de pesquisa na Web fornecem o reconhecimento de fala de seu aplicativo sem precisar que você crie uma gramática. Ao utilizar essas gramáticas, o reconhecimento de fala é realizado por um serviço Web remoto, e os resultados são retornados ao dispositivo.
A gramática de ditado de texto livre padrão pode reconhecer a maioria das palavras e frases que um usuário pode dizer em um determinado idioma e é otimizada para reconhecer frases curtas. A gramática de ditado predefinido é usada se você não especificar uma restrição para seu objeto SpeechRecognizer. O ditado de texto livre é útil quando você não deseja limitar os tipos de coisas que um usuário pode dizer. Os usos típicos incluem criação de notas ou ditado de conteúdo para uma mensagem.
A gramática de pesquisa na Web, assim como uma gramática de ditado, contém um grande número de palavras e frases que um usuário pode dizer. No entanto, ela é otimizada para reconhecer termos que as pessoas normalmente usam ao pesquisar na Web.
Observação Uma vez que as gramáticas de pesquisa na Web e de ditado predefinidas podem ser grandes e online (não no dispositivo), o desempenho pode não ser tão rápido quanto o das gramáticas personalizadas instaladas no dispositivo.
Essas gramáticas predefinidas podem ser usadas para reconhecer até 10 segundos de entrada de fala e não exigem nenhum esforço de criação de sua parte. No entanto, elas exigem conexão com uma rede.
Importante
Para usar restrições de serviço Web, você deve habilitar o suporte à entrada de fala e ao ditado em Configurações ativando a opção "Acessar meus dados" na página Settings -> Privacy -> Speech, inking, and typing.
Abra essa página de configurações chamando
Windows.System.Launcher.LaunchUriAsync(uri);
, ondeuri
é definido comovar uri = new Windows.Foundation.Uri("ms-settings:privacy-accounts");
Restrições de lista programática (SpeechRecognitionListConstraint).
Restrições de lista programática fornecem uma abordagem leve para criar gramáticas simples usando uma lista de palavras ou frases. Uma lista de restrições funciona bem para o reconhecimento de frases curtas e distintas. Especificar explicitamente todas as palavras em uma gramática também melhora a precisão do reconhecimento, porque o mecanismo de reconhecimento de fala deve processar somente a fala para confirmar uma correspondência. A lista também pode ser atualizada programaticamente.
Uma restrição de lista consiste em uma matriz de cadeia de caracteres que representa a entrada de fala que seu aplicativo aceitará para uma operação de reconhecimento. Você pode criar uma restrição de lista em seu aplicativo criando um objeto de restrição de lista de reconhecimento de fala e passando uma matriz de cadeias de caracteres. Em seguida, adicione o objeto à coleção de restrições do reconhecedor. O reconhecimento é bem-sucedido quando o reconhecedor de fala reconhece qualquer uma das sequências de caracteres na matriz.
Gramáticas SRGS (SpeechRecognitionGrammarFileConstraint).
Uma gramática SRGS (Especificação de Gramática de Reconhecimento de Fala) é um documento estático que, ao contrário de uma restrição de lista programática, usa o formato XML definido pela SRGS Versão 1.0. Uma gramática SRGS oferece maior controle sobre a experiência de reconhecimento de fala, permitindo a você capturar diversos significados semânticos em um único reconhecimento.
Restrições de comando de voz (SpeechRecognitionVoiceCommandDefinitionConstraint)
Use um arquivo XML de Definição de comando de voz (VCD) para definir os comandos que o usuário pode usar para iniciar ações ao ativar seu aplicativo. Para saber mais detalhes, veja Início rápido: comandos de voz.
Observação O tipo de restrição que você usa depende da complexidade da experiência de reconhecimento que você deseja criar. Qualquer tipo pode ser a melhor escolha para uma tarefa específica de reconhecimento, e você pode encontrar usos para todos os tipos de restrição em seu aplicativo.
Para começar a usar restrições, consulte Como definir restrições de reconhecimento personalizadas.
A gramática de ditado predefinida do Aplicativo Universal do Windows reconhece a maioria das palavras e frases curtas em um idioma. Ela é ativada por padrão quando um objeto reconhecedor de fala é instanciado sem restrições personalizadas.
Neste exemplo, você verá como:
- Crie um reconhecedor de fala.
- Compile as restrições padrão do Windows Phone (nenhuma gramática foi adicionada ao conjunto de gramática do reconhecedor de fala).
- Inicie a escuta da fala usando a interface do usuário de reconhecimento básica e o comentário TTS fornecido pelo método RecognizeWithUIAsync. Use o método RecognizeAsync se a interface do usuário padrão não for necessária.
function buttonSpeechRecognizerClick() {
// Create an instance of SpeechRecognizer.
var speechRecognizer =
new Windows.Media.SpeechRecognition.SpeechRecognizer();
// Compile the default dictation grammar.
speechRecognizer.compileConstraintsAsync().done(
// Success function.
function (result) {
// Start recognition.
speechRecognizer.recognizeWithUIAsync().done(
// Success function.
function (speechRecognitionResult) {
// Do something with the recognition result.
var messageDialog =
new Windows.UI.Popups.MessageDialog(
speechRecognitionResult.text, "Text spoken");
messageDialog.showAsync();
},
// Error function.
function (err) {
WinJS.log && WinJS.log("Speech recognition failed.");
});
},
// Error function.
function (err) {
WinJS.log && WinJS.log("Constraint compilation failed.");
});
speechRecognizer.close();
}
3. Personalizar o reconhecimento da interface do usuário
Quando seu aplicativo tenta o reconhecimento de fala chamando SpeechRecognizer.RecognizeWithUIAsync, várias telas são mostradas na ordem a seguir.
Se estiver usando uma restrição baseada em uma gramática predefinida (ditado ou pesquisa na Web):
- A tela Listening.
- A tela Thinking.
- A tela Heard you say ou a tela de erro.
Se estiver usando uma restrição baseada em lista de palavras ou frases ou uma restrição baseada em um arquivo de gramática SGRS:
- A tela Listening.
- A tela Did you say, se o que o usuário disse puder ser interpretado como mais de um resultado potencial.
- A tela Heard you say ou a tela de erro.
A imagem a seguir mostra um exemplo do fluxo entre telas de um reconhecedor de fala que utiliza uma restrição baseada em um arquivo de gramática SGRS. Nesse exemplo, o reconhecimento de fala foi bem-sucedido.
A tela Listening pode fornecer exemplos de palavras ou frases que o aplicativo pode reconhecer. Aqui, mostramos como usar as propriedades da classe SpeechRecognizerUIOptions (obtida chamando a propriedade SpeechRecognizer.UIOptions) para personalizar o conteúdo na tela Listening.
function buttonSpeechRecognizerSRGSConstraintClick() {
// Create an instance of SpeechRecognizer.
var speechRecognizer =
new Windows.Media.SpeechRecognition.SpeechRecognizer();
speechRecognizer.uiOptions.audiblePrompt = "Say what you want to search for...";
speechRecognizer.uiOptions.exampleText = "Ex. 'yes', 'no'";
// Add a grammar file constraint to the recognizer.
var uri = new Windows.Foundation.Uri("ms-appx:///data/srgs.grxml");
var storageFile =
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).then(
// Success function.
function (srgs) {
var grammarfileConstraint =
new Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint(srgs, "yesorno");
speechRecognizer.constraints.append(grammarfileConstraint);
// Compile the default dictation grammar.
speechRecognizer.compileConstraintsAsync().then(
// Success function.
function (result) {
// Start recognition.
speechRecognizer.recognizeWithUIAsync().done(
// Success function.
function (speechRecognitionResult) {
// Do something with the recognition result.
var messageDialog =
new Windows.UI.Popups.MessageDialog(
speechRecognitionResult.text, "Text spoken");
messageDialog.showAsync();
},
// Error function.
function (err) {
WinJS.log && WinJS.log("Speech recognition failed.");
});
},
// Error function.
function (err) {
WinJS.log && WinJS.log("Constraint compilation failed.");
});
},
// Error function.
function (err) {
WinJS.log && WinJS.log("File retrieval failed.");
});
speechRecognizer.close();
}
Resumo e próximas etapas
Aqui, você aprendeu como implementar reconhecimento de fala básico usando gramáticas predefinidas e a interface do usuário de reconhecimento de fala fornecida com o Aplicativo Universal do Windows.
Em seguida, talvez você queira saber como definir restrições de reconhecimento personalizadas e Como habilitar o ditado contínuo.
Tópicos relacionados
Respondendo a interações de fala
Designers