我对C#很陌生,正致力于为盲人和视障人士开发软件
在软件中我想要一个文本框,当按下一个键时它会产生一个
声音,例如按j时会说j ...
我找到了精彩的文本到语音引擎,并尝试将其与keydown事件一起使用,如下所示:
SpeechSynthesizer synth = new SpeechSynthesizer();
char mappedChar = (char)e.KeyValue;
synth.Speak(Convert.ToString(mappedChar));
synth.Dispose();
不幸的是,这太慢了,需要大约。每次击键之间1秒钟。
非常感谢任何建议。
答案 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>);
}
}