我在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
有人知道代码出了什么问题吗?