С# повторение текста в синтез речи

Итак, я пытаюсь написать программу преобразования текста в речь, которая будет постепенно становиться быстрее, оставляя меньше промежутков между предложениями и, в конечном итоге, над наслоением и запуском нескольких команд одновременно, так что это станет просто беспорядком шума. В настоящее время это консольное приложение, и у меня есть соответствующие ссылки.

Любые идеи, как я адаптирую это для запуска каждой команды говорить как своего собственного экземпляра. Придется ли мне заново учиться многопоточности, чтобы заставить ее работать?

Любая помощь была бы отличной, в ту минуту, когда она зацикливается (количество итераций не слишком важно), и я пытался сделать паузу меньше после каждой, но не могу заставить одну команду говорить поверх предыдущей.

for (int i = 0; i < 100; i++)
            {
                if (Console.KeyAvailable == true)
                {
                    break;
                }
                else
                {
                    if (i == 0)
                    {
                        string commandLine2 = "Hello darkness my old friend";
                        SpeechSynthesizer s = new SpeechSynthesizer();
                        s.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Child);
                        s.Speak(commandLine2);
                        commandLine2 = "Its been a while where should we begin";
                        //Thread.Sleep(1000);
                        s.Speak(commandLine2);
                    }
                    else
                    {
                        string commandLine2 = "Hello darkness my old friend";
                    SpeechSynthesizer s = new SpeechSynthesizer();
                    s.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Child);
                    s.Speak(commandLine2);
                    commandLine2 = "Its been a while where should we begin";
                    //Thread.Sleep(1000 / i);
                    s.Speak(commandLine2);
                }

            }
        }

person PKYNI    schedule 24.11.2020    source источник
comment
Итак, перекрытие — это цель или это ошибка, которую вы хотите исправить? Как он ведет себя сейчас, говорит через равные промежутки времени?   -  person Evk    schedule 24.11.2020
comment
Вы используете docs.microsoft .com/en-us/dotnet/api/ ?   -  person StayOnTarget    schedule 24.11.2020
comment
Перекрытие - это цель, в настоящее время он просто говорит после того, как одно предложение закончено, но хочет вызвать перекрытие. да, используя этот класс, не знал ни о каких других   -  person PKYNI    schedule 25.11.2020


Ответы (1)


Я просто использовал многопоточность в конце. Все это вернулось ко мне

 for (int i = 1; i < 100; i++)
        {
            Thread t1 = new Thread(mySpeach);
            t1.Name = "Thread1";
            t1.Start();
            Thread.Sleep(2000 / i);
            if (Console.KeyAvailable == true)
            {
                t1.Abort();
                break;
            }
        }

//other methods were here


    public static void typing()
        {
        string a = "Hello darkness my old friend\nIts been a while where should we begin";
        for (int i = 0; i < a.Length; i++)
        {
            Random rnd = new Random();
            Console.Write(a[i]);
            if (Console.KeyAvailable == true)
            {
                break;
            }
            Thread.Sleep(rnd.Next(50, 100));
        }
        Console.WriteLine("");
    }

    public static void mySpeach()
    {
        string commandLine2 = "Hello darkness my old friend";
        Thread t2 = new Thread(typing);

        t2.Name = "Thread2";

        t2.Start();
        SpeechSynthesizer s = new SpeechSynthesizer();
        s.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Child);
        s.Speak(commandLine2);
        commandLine2 = "Its been a while where should we begin";
        if (Console.KeyAvailable == true)
        {
            return;
        }
        s.Speak(commandLine2);
        Thread.Sleep(1000);
    }
person PKYNI    schedule 26.11.2020