Как распознать речевой текст, который не выбран в vb.net

У меня есть код ниже, чтобы распознать речевой текст из моего выбора.

Public speechRecognitionEngine As SpeechRecognitionEngine

Private Sub SpeechRecog()
    Try
        speechRecognitionEngine = New SpeechRecognitionEngine(SpeechRecognitionEngine.InstalledRecognizers()(0))
        AddHandler speechRecognitionEngine.SpeechRecognized, AddressOf engine_SpeechRecognized
        Dim texts As Choices = New Choices()
        texts.Add("HOW")
        texts.Add("ARE")
        texts.Add("YOU")
        Dim wordsList As Grammar = New Grammar(New GrammarBuilder(texts))
        speechRecognitionEngine.LoadGrammar(wordsList)
        speechRecognitionEngine.SetInputToDefaultAudioDevice()
        speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple)
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Voice recognition failed")
    End Try
End Sub

Public reader As System.Speech.Synthesis.SpeechSynthesizer

Public Sub engine_SpeechRecognized(sender As Object, e As SpeechRecognizedEventArgs)
   If e.Result.Confidence > 0.9 Then
      usrText.Text = e.Result.Text
   Else
      reader = New Speech.Synthesis.SpeechSynthesizer
      reader.SpeakAsync("Please speak clear and louder")
   End If
End Sub

Если я говорю что-то из своего выбора, значит, это работает. Если уверенность больше 0,9, то выводится еще сообщение, что "Пожалуйста, говорите четко и громче"

Но если я говорю о чем-либо, кроме своего выбора, то это ничего не делает.

Есть ли способ, чтобы, если кто-то произносит какой-либо текст из вариантов выбора, я могу сказать, что НЕДЕЙСТВИТЕЛЬНЫЙ ТЕКСТ

Пожалуйста, помогите мне.

Заранее спасибо....

Просто полезный совет. Не включайте теги, которые не имеют прямого отношения к вашему вопросу. Поскольку это не имеет ничего общего с C#, тега там не должно быть. Я понимаю, что вы хотите охватить как можно более широкую аудиторию, но C# и VB.Net настолько разные, что часто люди из «другого лагеря» не могут ответить и хотят отфильтровать вопросы с другого языка. . Нам нравится иметь возможность сосредоточиться на том, что мы знаем :-)

David Wilson 11.08.2018 12:13

иногда, когда я добавлял только VB.Net, мне не хватало помощи. Но после добавления C# я получил быстрые предложения. поэтому я добавил сюда оба тега. но спасибо за полезный совет ...

Piyush 11.08.2018 18:10
1
2
214
1

Ответы 1

Вам следует добавить еще один обработчик: Распознать.

Using the handler for the RecognizeCompleted event, you can access the RecognitionResult in the RecognizeCompletedEventArgs object. If recognition was not successful, RecognitionResult will be null. To determine whether a timeout or an interruption in audio input caused recognition to fail, you can access the properties for InitialSilenceTimeout, BabbleTimeout, or InputStreamEnded.

Вот почему я всегда настаиваю на том, чтобы люди читали документацию. Когда люди его не читают, они упускают задокументированные важные вещи, которые в первую очередь могли бы спасти их от зависания. Когда вы просто слепо следуете чужому онлайн-примеру демонстрационного кода / учебника и не думаете самостоятельно, вы не помогаете себе и упускаете важные вещи. Для записи, этот комментарий не о OP, а в целом.

ImmortaleVBR 10.08.2018 15:06

Другие вопросы по теме