gpt4 book ai didi

c# - 提高语音合成的性能

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:42 25 4
gpt4 key购买 nike

我在 winform 中有 100 个按钮。每个按钮都执行类似的操作,即说出自己的数字。假设 Button60 会说 60,button100 会说 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;
}


}

然后

    private void button_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
string text = button.Name.Substring("button".Length);

synthesizer.Speak(text);
}

但是,如果我依次单击两个按钮,则至少需要 2 或 3 秒才能切换另一个按钮并切换到语音。而且它的声音不够响亮。所以我需要在短时间内提高按钮 Action 的性能。我还想提高语音的声音。我怎样才能做到这一点???

最佳答案

听起来 SpeechSynthesizer 正在阻塞 UI 线程。

您可以尝试以下操作,改用 SpeakAsync()(来自 http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.speakasync.aspx)

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

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);
}

如果失败,您可能会在另一个线程中运行合成器。

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

synthesizer.Volume = 100; // maximum volume (range 0-100)

关于c# - 提高语音合成的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830367/

25 4 0
文章推荐: python - Python 中多列的成对频率表
文章推荐: c# - 预期输出值是从 0 到 1 但有时会产生大于 1
文章推荐: Python pandas plot 散点日期时间错误
文章推荐: c# - 如何将 DataTable 转换为 List