Share via


Como gerenciar problemas com entrada de áudio (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]

Saiba como gerenciar problemas com precisão do reconhecimento de fala causados pela qualidade e condição de entrada de áudio.

O que você precisa saber

Tecnologias

Pré-requisitos

Este tópico faz parte do Guia de início rápido: reconhecimento de fala.

Para concluir este tutorial, dê uma olhada nestes tópicos para se familiarizar com as tecnologias discutidas aqui:

Instruções

Etapa 1: Avaliar a qualidade de entrada de áudio

Quando o reconhecimento de fala estiver ativo, use o evento RecognitionQualityDegrading de seu reconhecedor de fala para determinar se um ou mais problemas de áudio podem estar interferindo na entrada de fala. O argumento do evento (SpeechRecognitionQualityDegradingEventArgs) fornece a propriedade problem, que descreve os problemas detectados com a entrada de áudio.

O reconhecimento pode ser afetado por excesso de ruído de fundo, um microfone mudo e o volume ou a velocidade do alto-falante.

Aqui, configuramos um reconhecedor de fala e começamos a escutar o evento recognitionqualitydegrading.

function buttonSpeechRecognizerQualityDegradingClick() {
    // Create an instance of a speech recognizer.
    var speechRecognizer =
      new Windows.Media.SpeechRecognition.SpeechRecognizer();
    // Listen for audio input issues.
    speechRecognizer.addEventListener(
        "recognitionqualitydegrading",
        onRecognitionQualityDegrading,
        false);
    // Compile the default dictation grammar.
    speechRecognizer.compileConstraintsAsync().then(
      // Success function.
      function (result) {
          // Start recognition.
          speechRecognizer.recognizeWithUIAsync().done();
      },
      // Error function.
      function (err) {
          WinJS.log && WinJS.log("Constraint compilation failed.");
      });
    speechRecognizer.close();
}

Etapa 2: Gerenciar a experiência de reconhecimento de fala

Use a descrição fornecida pela propriedade problem para ajudar o usuário a melhorar condições para o reconhecimento.

Aqui, criamos um manipulador para o evento recognitionqualitydegrading que verifica se há um nível de volume baixo. Em seguida, usamos um objeto SpeechSynthesizer para sugerir que o usuário tente falar mais alto.

function onRecognitionQualityDegrading(args) {
    // Create an instance of a speech synthesis engine (voice).
    var speechSynthesizer =
        new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

    // Create an object for controlling and playing an audio stream.
    var audio = new Audio();

    // If input speech is too quiet, prompt the user to speak louder.
    if (args.problem === Windows.Media.SpeechRecognition.SpeechRecognitionAudioProblem.tooQuiet) {
        // Generate the audio stream from plain text.
        speechSynthesizer.synthesizeTextToStreamAsync("Try speaking louder").done(
            // Success function.
            function (markersStream) {
                // Convert the stream to a URL Blob.
                var blob = MSApp.createBlobFromRandomAccessStream(markersStream.ContentType, markersStream);

                // Send the Blob to the audio object.
                audio.src = URL.createObjectURL(blob, { oneTimeOnly: true });

                // Start at beginning.
                markersStream.seek(0);
                audio.play();
            },
            // Error function.
            function (err) {
                WinJS.log && WinJS.log("Speech synthesis failed.");
            });
    }
    speechSynthesizer.close();
}

Tópicos relacionados

Respondendo a interações de fala

Designers

Diretrizes para design de controle por voz