C# 提高语音合成的性能
我在winform中有100个按钮。每个按钮都执行类似的操作,也就是说它自己的号码。说按钮60将讲话60,按钮100将讲话100 我使用了以下代码: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
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)