2011-02-06 7 views
1


私はC#には新しく、視覚障害者用のソフトウェアの開発に取り組んでいます。
ソフトウェアでは、キーを押したときに、
という名前のテキストボックスが表示されるようにしたいと考えています。 スピーチエンジンにすばらしいテキストが見つかりました次のようなkeydownイベントが発生します。C#のkeydownでキー値を再生する

SpeechSynthesizer synth = new SpeechSynthesizer();    
    char mappedChar = (char)e.KeyValue;  
    synth.Speak(Convert.ToString(mappedChar)); 
    synth.Dispose(); 

残念ながら遅すぎます。各キーストロークの間に1秒。

ご意見がありがとうございます。

答えて

5

まず、SpeechSynthesizerオブジェクトをイベントハンドラに作成して処理しないことから始めます。

だけでプログラムが実行さがある場合、一度オブジェクトを作成します。

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

あなたのイベントハンドラで。

+0

チップをいただきありがとうございますが、改善は小さかったし、うまくいきませんでした。依然として思い切った遅延があります。私はそれについて他に何かできることはありますか? – CaptainNemo

+0

@ me1982 - それは奇妙なことですが、それはもっと大きな違いをもたらしたと思いました。 – ChrisF

0

私はスピーチ合成装置のコンストラクタが大部分の時間を取っていると思っています。シンセ・オブジェクトを作成し、各コールで作成するのではなく、キャッシュしてみてください。

0

新しいSpeechSynthesizerインスタンスの作成にはコストがかかります。

シンセオブジェクトをフォームのメンバーとして定義し、そのスコープをインスタンス化してから、イベントコードでシンセオブジェクトを参照します。例えば擬似コードで...

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

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

} 
関連する問題