2

私はSAPI5.4でSRGS文法を使用して、コマンドおよび制御文法を定義してきました。ここで、テキスト文法に切り替えて、SAPI 5.1(および場合によってはSAPI 4?)と互換性を持たせたいと思います。

SAPI5.4互換のテキスト文法の例をここで見つけました

文法コンパイラツールを使用して、その文法のバイナリバージョンをリソースとして含めるのではなく、実行時にXMLファイルからその文法をロードしたいと思います。理想的には、メモリ内にXDocumentを作成してから、Speech.Recognizerにそれらのコマンドをリッスンさせたいと思います。

誰かがこれを行う方法を知っていますか?ありがとう!

4

1 に答える 1

1

テキスト文法を使用するには、高レベルのSystem.Speechを使用するのではなく、SAPI COMと直接対話する必要があります(Microsoft音声オブジェクトライブラリを含めることにより)。

したがって、上記にリンクされているテキスト文法をコピーしてsol.xml(SAPI SDKサンプルに含まれています)として保存した場合は、次のコードを使用してロードできます。

SpSharedRecoContext reco = new SpSharedRecoContext();
ISpeechRecoGrammar grammar;
grammar = reco.CreateGrammar();
grammar.CmdLoadFromFile("sol.xml");
grammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive);

そのコードをXP(5.1)、Visa(5.3)、および7(5.4)でテストしました。

于 2010-08-28T21:22:04.073 に答える