简体   繁体   中英

I want to convert c# speech to text console app into winform

I have this C# console app which uses azure speech to text service and converts speech taken from microphone input into text. I want to convert it into a winform which would have one checkbox for speech on/off and speech is written to a textbox. Anyone know how i can do this?

C# code

using System;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;

namespace STT
{
    class Program
    {
        public static async Task SpeechContinuousRecognitionAsync()
        {
            // Creates an instance of a speech config with specified subscription key and service region.
            // Replace with your own subscription key and service region (e.g., "westus").
            var config = SpeechConfig.FromSubscription("api key", "westus");

            // Creates a speech recognizer from microphone.
            using (var recognizer = new SpeechRecognizer(config))
            {
                // Subscribes to events.
                recognizer.Recognizing += (s, e) => {
                    Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
                };

                recognizer.Recognized += (s, e) => {
                    var result = e.Result;
                    Console.WriteLine($"Reason: {result.Reason.ToString()}");
                    if (result.Reason == ResultReason.RecognizedSpeech)
                    {
                        Console.WriteLine($"Final result: Text: {result.Text}.");
                    }
                };

                recognizer.Canceled += (s, e) => {
                    Console.WriteLine($"\n    Recognition Canceled. Reason: {e.Reason.ToString()}, CanceledReason: {e.Reason}");
                };

                recognizer.SessionStarted += (s, e) => {
                    Console.WriteLine("\n    Session started event.");
                };

                recognizer.SessionStopped += (s, e) => {
                    Console.WriteLine("\n    Session stopped event.");
                };

                // Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
                await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(true);

                do
                {
                    Console.WriteLine("Press Enter to stop");
                } while (Console.ReadKey().Key != ConsoleKey.Enter);

                // Stops recognition.
                await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
            }
        }


        static void Main()
        {
        SpeechContinuousRecognitionAsync().Wait();

        }
    }
}

Assuming you don't need assistance with creating the winform or checkbox control:

  1. Remove all your console reading and writing
  2. Put your SpeechContinuousRecognitionAsync().Wait() statement in the form's Load event handler
  3. Move the logic to start and stop recognition to the checkbox's CheckedChange event handler

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM