Как заставить EventHandler (SpeakCompleted) в C# работать? (System.Speech) - PullRequest
0 голосов
/ 27 апреля 2020

Проще говоря, я хочу создать программу, которая ведет обратный отсчет (+ голос), но когда приходит число, такое как 1 мил, это занимает больше 1 сек. c, поэтому я хотел бы узнать, как я могу получить "EventHandler" "чтобы запустить и как я могу его использовать (мне не нужен код для подсчета et c. но как создать EventHandler и где мне нужно написать код, когда он был вызван)

https://docs.microsoft.com/en-us/dotnet/api/system.speech.synthesis.speechsynthesizer.speakcompleted?view=netframework-4.8

Я не могу просто использовать Text.Speak("") потому что это приводит к десину c с напечатанным текстом. Мне нужен этот обратный вызов, чтобы начать новый Speak и синхронизировать c его с текстом.

Извините ... я не хочу спрашивать ppl, но после 3 часов я сдаюсь, пожалуйста, помогите мне

        SpeechSynthesizer synth = new SpeechSynthesizer();
        int counting = 0;
        private void TTS() //First trigger
        {
            synth.SetOutputToDefaultAudioDevice();
            synth.SelectVoiceByHints(VoiceGender.Female, VoiceAge.NotSet, 0);
            textBox1.Text = "1";
            synth.Speak("1");
            counting = 1;
            synth.SpeakCompleted += synth_SpeechOver;
        }
        //public event EventHandler<System.Speech.Synthesis.SpeakCompletedEventArgs> SpeakCompleted; deleted
        public void synth_SpeechOver(object sender, EventArgs e)
        {
            synth.SetOutputToDefaultAudioDevice();
            synth.SelectVoiceByHints(VoiceGender.Female, VoiceAge.NotSet, 0);
            counting++;
            synth.Speak(counting.toString());
        }
        void Form1_SpeakCompleted(object sender, EventArgs e)
        {

        }
        //(Form1_SpeakCompleted is just for testing (doesnt work)

1 Ответ

0 голосов
/ 28 апреля 2020

Обратный вызов работает только для SpeakAsyn c

https://docs.microsoft.com/en-us/dotnet/api/system.speech.synthesis.speechsynthesizer.speakcompleted?view=netframework-4.8

SpeechSynthesizer вызывает событие SpeakCompleted при завершении любого из SpeakAsyn c или SpeakSsmlAsyn c методы.

...