我在VB.NET的Windows窗体中将语音转换为文本时遇到麻烦

时间:2019-09-13 18:42:06

标签: .net vb.net winforms speech-recognition speech-to-text

我在VB.NET中有一个控制台程序,该程序可以正常工作并将语音转换为文本,直到关闭窗口或停止调试为止:

Imports System
Imports System.Speech.Recognition
Module Module1


    Sub Main()
            Using recognizer As SpeechRecognitionEngine = New SpeechRecognitionEngine(New System.Globalization.CultureInfo("en-US"))
                recognizer.LoadGrammar(New DictationGrammar())
                AddHandler recognizer.SpeechRecognized, New EventHandler(Of SpeechRecognizedEventArgs)(AddressOf recognizer_SpeechRecognized)
                recognizer.SetInputToDefaultAudioDevice()
                recognizer.RecognizeAsync(RecognizeMode.Multiple)
While True
                Console.ReadLine()

            End While


        End Using
        End Sub

    Private Sub recognizer_SpeechRecognized(ByVal sender As Object, ByVal e As SpeechRecognizedEventArgs)
        Console.WriteLine("Recognized text: " & e.Result.Text)
    End Sub


End Module

我试图将其转换为具有按钮和文本框的Windows窗体,它成功编译,但未在文本框中将转换后的语音写为文本。它只写了“ Recognising Button Event Generated”,我故意把它理解为产生了以下事件或调用了一个函数。

这是winform代码:

Imports System.Speech.Recognition


Public Class Form1
    Sub Spe()
        Using recognizer As SpeechRecognitionEngine = New SpeechRecognitionEngine(New System.Globalization.CultureInfo("en-US"))
            recognizer.LoadGrammar(New DictationGrammar())
            AddHandler recognizer.SpeechRecognized, New EventHandler(Of SpeechRecognizedEventArgs)(AddressOf recognizer_SpeechRecognized)
            recognizer.SetInputToDefaultAudioDevice()

                recognizer.RecognizeAsync(RecognizeMode.Multiple)

            TextBox1.Text = TextBox1.Text + "Recognising"

        End Using


    End Sub


    Private Sub recognizer_SpeechRecognized(ByVal sender As Object, ByVal e As SpeechRecognizedEventArgs)
        Me.Invoke(New MethodInvoker(Sub()
                                        TextBox1.Text = "I heard you say: " & e.Result.Text
                                    End Sub))


    End Sub


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox1.Text = "Button Event Generated"
        Spe()



    End Sub
End Class

有人知道代码出了什么问题吗?

0 个答案:

没有答案