почему эта winform зависает и перестает отвечать? - PullRequest
0 голосов
/ 20 октября 2019

У меня есть эта визуальная базовая форма win, которая преобразует речь в текст. Эта winform имеет 1 кнопку и одно текстовое поле и использует службу Azure Speech to text. Когда я нажимаю кнопку, он преобразует речь в текст и показывает в текстовом поле, но проблема в том, что winform начинает зависать, и я больше ничего не могу сделать, даже не могу закрыть winform. Кто-нибудь знает, что идет не так? Заранее спасибо.

Form1.vb

   Imports Microsoft.CognitiveServices.Speech
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        SpeechContinuousRecognitionAsync().Wait()



    End Sub

    Public Async Function SpeechContinuousRecognitionAsync() As Task
        Dim config = SpeechConfig.FromSubscription("api key", "westus")

        Using recognizer = New SpeechRecognizer(config)

            AddHandler recognizer.SessionStarted, AddressOf recognizer_sessionstarted
            AddHandler recognizer.SessionStopped, AddressOf recognizer_sessionstopped
            AddHandler recognizer.Recognizing, AddressOf recognizer_Recognizing
            AddHandler recognizer.Recognized, AddressOf recognizer_Recognized
            AddHandler recognizer.Canceled, AddressOf recognizer_Canceled
            Await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(True)




        End Using
    End Function

    Private Sub recognizer_sessionstarted(ByVal sender As Object, ByVal e As SessionEventArgs)
        Console.WriteLine("\n    Session started event.")


    End Sub
    Private Sub recognizer_sessionstopped(ByVal sender As Object, ByVal e As SessionEventArgs)
        Console.WriteLine("\n    Session stopped event.")


    End Sub
    Private Sub recognizer_Recognizing(ByVal sender As Object, ByVal e As SpeechRecognitionEventArgs)
        Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}")


    End Sub
    Private Sub recognizer_Recognized(ByVal sender As Object, ByVal e As SpeechRecognitionEventArgs)
        TextBox1.Text = e.Result.Text


    End Sub
    Private Sub recognizer_Canceled(ByVal sender As Object, ByVal e As SpeechRecognitionCanceledEventArgs)
        Console.WriteLine($"\n    Recognition Canceled. Reason: {e.Reason.ToString()}, CanceledReason: {e.Reason}")


    End Sub

End Class
...