在C#中播放keydown上的键值

时间:2011-02-06 21:23:44

标签: c# text-to-speech keydown


我对C#很陌生,正致力于为盲人和视障人士开发软件 在软件中我想要一个文本框,当按下一个键时它会产生一个
声音,例如按j时会说j ... 我找到了精彩的文本到语音引擎,并尝试将其与keydown事件一起使用,如下所示:

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

非常感谢任何建议。

3 个答案:

答案 0 :(得分:5)

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

在程序运行时创建一次对象,只需:

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

在您的事件处理程序中。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

创建一个新的SpeechSynthesizer实例非常昂贵。

将您的synth对象定义为表单的成员,将其作为范围实例化,然后在事件代码中引用它。例如在伪代码......

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

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

}