C# 在C中播放按键向下键的键值#

C# 在C中播放按键向下键的键值#,c#,text-to-speech,keydown,C#,Text To Speech,Keydown,我是C#的新手,正在为盲人和视障人士开发一款软件。 在软件中,我希望有一个文本框,当按下一个键时,它会发出一个 声音,例如当按下j时,它会说j。。。 我找到了很棒的文本到语音引擎,并尝试将其与keydown事件一起使用,如下所示: SpeechSynthesizer synth = new SpeechSynthesizer(); char mappedChar = (char)e.KeyValue; synth.Speak(Convert


我是C#的新手,正在为盲人和视障人士开发一款软件。
在软件中,我希望有一个文本框,当按下一个键时,它会发出一个
声音,例如当按下j时,它会说j。。。 我找到了很棒的文本到语音引擎,并尝试将其与keydown事件一起使用,如下所示:

   SpeechSynthesizer synth = new SpeechSynthesizer();            
   char mappedChar = (char)e.KeyValue;       
   synth.Speak(Convert.ToString(mappedChar));
   synth.Dispose();
不幸的是,它太慢了,每次按键之间大约需要1秒


如果您有任何建议,我将不胜感激。

首先,我不会在事件处理程序中创建和处理您的
SpeechSynthesizer
对象

在程序运行时创建一次对象,只需执行以下操作:

char mappedChar = (char)e.KeyValue;       
synth.Speak(mappedChar.ToString());

在事件处理程序中。

我首先不在事件处理程序中创建和处理
SpeechSynthesizer
对象

在程序运行时创建一次对象,只需执行以下操作:

char mappedChar = (char)e.KeyValue;       
synth.Speak(mappedChar.ToString());

在您的事件处理程序中。

我怀疑speechsynthesizer的构造函数占用了大部分时间。尝试创建synth对象一次并缓存它,而不是在每次调用时创建它。

我怀疑speechsynthesizer的构造函数占用了大部分时间。尝试创建synth对象一次并缓存它,而不是在每次调用时创建它。

创建新的SpeechSynthesizer实例非常昂贵

将synth对象定义为表单的一个成员,实例化该范围,然后在事件代码中引用它。e、 在伪代码中

class MyForm
{
  SpeechSynthesizer synth = new SpeechSynthesizer(); 
  ...

  void On_Click(<params>)
  {
     this.synth.Speak(<text>);
  }

}
类MyForm
{
SpeechSynthesizer synth=新的SpeechSynthesizer();
...
单击时作废()
{
this.synth.Speak();
}
}

创建新的SpeechSynthesizer实例非常昂贵

将synth对象定义为表单的一个成员,实例化该范围,然后在事件代码中引用它。e、 在伪代码中

class MyForm
{
  SpeechSynthesizer synth = new SpeechSynthesizer(); 
  ...

  void On_Click(<params>)
  {
     this.synth.Speak(<text>);
  }

}
类MyForm
{
SpeechSynthesizer synth=新的SpeechSynthesizer();
...
单击时作废()
{
this.synth.Speak();
}
}

谢谢你的提示,但改进很小,也不够充分。仍然有一个可以避免的延误。还有什么我能做的吗?@me1982-这很奇怪,我本以为这会带来更大的不同。谢谢你的提示,但改进很小,而且还不够。仍然有一个可以避免的延误。还有什么我能做的吗?@me1982-这很奇怪,我会认为这会带来更大的不同。