0

ユーザーのコマンドに応答する音声認識エンジンを作成しています。ユーザーの都合に合わせて音声認識を有効または無効にするボタンを作成しました。音声認識を無効にするために音声エンジンの Dispose() を使用しました。コードは次のとおりです。

private  void button1_Click(object sender, RoutedEventArgs e)
    {
        engineOn = !engineOn;
        if (engineOn)
        {
            speechEngine = speech.createSpeechEngine();     //speech is a class that creates and returns a new speech engine.
            speechEngine.AudioLevelUpdated += new EventHandler<AudioLevelUpdatedEventArgs>(speechEngine_AudioLevelUpdated);
            // use the system's default microphone
            speechEngine.SetInputToDefaultAudioDevice();
            speechEngine.LoadGrammar(new DictationGrammar());

            // start listening
            speechEngine.RecognizeAsync(RecognizeMode.Multiple);
        }
        else
        {
             SpeechClass.myEngine.Dispose();
        }

    }

しかし、音声オブジェクトの破棄には時間がかかります。それを非同期で行う方法は? 音声認識をオンまたはオフにする他の方法はありますか? 前もって感謝します。

4

1 に答える 1

0

RecogniseAsync / RecogniseAsyncStop を使用してオフにしてから再度オンにするだけです。

http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.aspx

または、空の文法リストを読み込んで、基本的に kinect がリッスンするものがないようにすることもできます。

さらに、使用する必要がなくなった場合 (たとえば、アプリケーションのシャットダウン時) を除いて、オブジェクトを完全に破棄することは避けたいと思います。オブジェクト (特に音声認識エンジン) の破棄と再作成に関連する大きなオーバーヘッドがあります。

于 2013-04-19T22:57:39.217 に答える