예제 #1
0
        private static async Task Main(string[] args)
        {
            CreateHostBuilder(args).Build();

            Initialize();

            s_twitchBot = new TwitchBot(s_twitchBotSettings);

            s_twitchBot.Connect();

            PhraseListGrammar phraseList =
                PhraseListGrammar.FromRecognizer(s_speechRecognizer);

            phraseList.AddPhrase(s_twitchBotSettings.BotName);
            phraseList.AddPhrase("RPG");
            phraseList.AddPhrase("GitHub");
            phraseList.AddPhrase("Discord");

            s_speechRecognizer.Recognized     += OnSpeechRecognizedAsync;
            s_speechRecognizer.Canceled       += SpeechRecognizerOnCanceled;
            s_speechRecognizer.SessionStopped += SpeechRecognizerOnSessionStopped;

            System.Console.WriteLine("Speak into your microphone.");

            await s_speechRecognizer.StartContinuousRecognitionAsync();

            Task.WaitAny(s_stopRecognition.Task);

            DisposeAll();
        }
        static SpeechRecognizer user_config_to_speech_recognizer(SpeechConfig speech_config, AudioConfig audio_config, USER_CONFIG user_config)
        {
            SpeechRecognizer speech_recognizer;

            if (true == user_config.language_id_enabled)
            {
/* Note: Continuous language identification is supported only in C#, C++, and Python.
 * See:
 * https://docs.microsoft.com/azure/cognitive-services/speech-service/how-to-automatic-language-detection?pivots=programming-language-cpp#language-identification-with-speech-to-text
 */
                AutoDetectSourceLanguageConfig detect_language_config = AutoDetectSourceLanguageConfig.FromLanguages(user_config.language_id_languages);
                speech_recognizer = new SpeechRecognizer(speech_config, detect_language_config, audio_config);
            }
            else
            {
                speech_recognizer = new SpeechRecognizer(speech_config, audio_config);
            }

            if (true == user_config.phrase_list_enabled)
            {
                PhraseListGrammar grammar = PhraseListGrammar.FromRecognizer(speech_recognizer);
                grammar.AddPhrase(user_config.phrase_list);
            }

            return(speech_recognizer);
        }
예제 #3
0
        // Continuous speech recognition assisted with a phrase list.
        public static async Task ContinuousRecognitionWithFileAndPhraseListsAsync()
        {
            // 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("YourSubscriptionKey", "YourServiceRegion");

            var stopRecognition = new TaskCompletionSource <int>();

            // Creates a speech recognizer using file as audio input.
            // Replace with your own audio file name.
            using (var audioInput = AudioConfig.FromWavFileInput(@"wreck-a-nice-beach.wav"))
            {
                using (var recognizer = new SpeechRecognizer(config, audioInput))
                {
                    // Subscribes to events.
                    recognizer.Recognizing += (s, e) =>
                    {
                        Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
                    };

                    recognizer.Recognized += (s, e) =>
                    {
                        if (e.Result.Reason == ResultReason.RecognizedSpeech)
                        {
                            Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
                        }
                        else if (e.Result.Reason == ResultReason.NoMatch)
                        {
                            Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                        }
                    };

                    recognizer.Canceled += (s, e) =>
                    {
                        Console.WriteLine($"CANCELED: Reason={e.Reason}");

                        if (e.Reason == CancellationReason.Error)
                        {
                            Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
                            Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
                            Console.WriteLine($"CANCELED: Did you update the subscription info?");
                        }

                        stopRecognition.TrySetResult(0);
                    };

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

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

                    // Before starting recognition, add a phrase list to help recognition.
                    PhraseListGrammar phraseListGrammar = PhraseListGrammar.FromRecognizer(recognizer);
                    phraseListGrammar.AddPhrase("Wreck a nice beach");

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

                    // Waits for completion.
                    // Use Task.WaitAny to keep the task rooted.
                    Task.WaitAny(new[] { stopRecognition.Task });

                    // Stops recognition.
                    await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
                }
            }
        }
예제 #4
0
 private void loadmyMyGrammarList()
 {
     pharseList = PhraseListGrammar.FromRecognizer(recognizer);
     pharseList.AddPhrase(Orders.Hide1);
     pharseList.AddPhrase(Orders.Hide2);
     pharseList.AddPhrase(Orders.Hide3);
     pharseList.AddPhrase(Orders.Show1);
     pharseList.AddPhrase(Orders.Show2);
     pharseList.AddPhrase(Orders.OpenChrome1);
     pharseList.AddPhrase(Orders.OpenChrome2);
     pharseList.AddPhrase(Orders.OpenExplorer1);
     pharseList.AddPhrase(Orders.OpenExplorer2);
     pharseList.AddPhrase(Orders.OpenNotepad1);
     pharseList.AddPhrase(Orders.OpenNotepad2);
     pharseList.AddPhrase(Orders.Time1);
     pharseList.AddPhrase(Orders.Time2);
 }