Я хочу конвертировать c # речь в текстовое консольное приложение в winform - PullRequest
0 голосов
/ 20 октября 2019

У меня есть консольное приложение C #, которое использует лазурную речь в текстовый сервис и преобразует речь, взятую с микрофонного входа, в текст. Я хочу преобразовать его в winform, который будет иметь один флажок для включения / выключения речи, и речь будет записана в текстовое поле. Кто-нибудь знает, как я могу это сделать?

Код C #

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();

        }
    }
}

1 Ответ

0 голосов
/ 20 октября 2019

При условии, что вам не нужна помощь в создании элемента управления winform или checkbox:

  1. Удалите все чтение и запись консоли
  2. Поместите свой оператор SpeechContinuousRecognitionAsync (). Wait ()в обработчике события Load формы
  3. Переместите логику для запуска и остановки распознавания в обработчик события CheckedChange флажка
...