C# 提高语音合成的性能

C# 提高语音合成的性能,c#,text-to-speech,speech-synthesis,C#,Text To Speech,Speech Synthesis,我在winform中有100个按钮。每个按钮都执行类似的操作,也就是说它自己的号码。说按钮60将讲话60,按钮100将讲话100 我使用了以下代码: SpeechSynthesizer synthesizer = new SpeechSynthesizer(); ............... private void Form1_Load(object sender, EventArgs e) { seme_comboBox.SelectedIn

我在winform中有100个按钮。每个按钮都执行类似的操作,也就是说它自己的号码。说按钮60将讲话60,按钮100将讲话100

我使用了以下代码:

SpeechSynthesizer synthesizer = new SpeechSynthesizer();
         ...............

 private void Form1_Load(object sender, EventArgs e)
    {

        seme_comboBox.SelectedIndex = 0;
        dpt_comboBox.SelectedIndex = 0;


        foreach (var button in Controls.OfType<Button>()) 
        {
            button.Click += button_Click;
        }


    }
但是,如果我按顺序单击两个按钮,则至少需要2或3秒钟才能切换到另一个按钮和语音。 而且声音不够大。 因此,我需要在一小段时间内提高按钮动作的性能,同时我还想提高讲话的声音。
我该怎么做

听起来好像SpeechSynthesis正在阻止UI线程

您可以使用SpeakAsync()来尝试以下操作(从)

注意:您可能想要也可能不想要取消所有(已注释)的行:

如果失败,您可能会在另一个线程中运行sythesizer

您可以使用.volume属性控制音量:

synthesizer.Volume = 100; // maximum volume (range 0-100)
private void button_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    string text = button.Name.Substring("button".Length);
    synthesizer.SpeakAsyncCancelAll(); // cancel anything that's playing
    synthesizer.SpeakAsync(text);
}
synthesizer.Volume = 100; // maximum volume (range 0-100)