2012-02-19 4 views
9

私はC#とMicrosoft Speechプラットフォームの両方が比較的新しいですが、私はフリーディクテーションを書き換える必要があるサーバーアプリケーションに取り組んでいます。 GrammarBuilderのAppendDictation()メソッドを参照していない限り、MS Speech Platform SDKは完璧に見え、サーバー上で動作します。Microsoft音声プラットフォーム11(サーバー)のAppendDictation?

は私がMicrosoft音声プラットフォームSDK 11を使用しています、と私は文法を定義する場合、アプリケーションが正常に動作しますが、私はAppendDictation()で追加した瞬間は、私はこのエラーと会っています:でも

Cannot find grammar referenced by this grammar. 

ドキュメントから、このサンプルでは、​​失敗しているようだ:

GrammarBuilder startStop = new GrammarBuilder(); 
GrammarBuilder dictation = new GrammarBuilder(); 
dictation.AppendDictation(); 

startStop.Append(new SemanticResultKey("StartDictation", new SemanticResultValue("Start Dictation",true))); 
startStop.Append(new SemanticResultKey("DictationInput", dictation)); 
startStop.Append(new SemanticResultKey("StopDictation", new SemanticResultValue("Stop Dictation", false))); 
Grammar grammar=new Grammar(startStop); 
grammar.Enabled=true; 
grammar.Name=" Free-Text Dictation "; 
_recognizer.LoadGrammar(grammar); 

を奇妙なことに、私は、LoadGrammarAsyncに文法負荷をLoadGrammarを変更する(あるいは、少なくともイベントハンドラが呼び出される)場合が、その後recoginzerは、このエラーで失敗します。

Error: At least one grammar must be loaded before doing a recognition. 

私は、プラットフォームのサーバーバージョンがディクテーションをサポートしていないことを読んだが、ちょうどうまくいかない方法で出荷されるのは奇妙に思える。誰かが口述文法をサーバ上で動作させることができましたか?私は間違って何をしていますか?

今後この渡って来ることが誰のための多くのおかげで

答えて

11

は - 私は今、マイクロソフトで前後に電子メールで送信し、最終的にこの応答を受け取った:

The managed interfaces (Microsoft.Speech and System.Speech) are built on top of the native SAPI interfaces. These interfaces are the same for both the Server engine and the Desktop engine.

BUT the engine itself is responsible for implementing dictation, and the Server engine does not do so. Therefore, the call will fail when you load the grammar.

ない答え私は期待していたが、それはそれを説明する。

+1

その後、ディクテーションを行うための他の方法はありますか? – KTF

3

あなたが使用している場合System.Speechあなたは_recognizer.LoadGrammar(new DictationGrammar());と文法をロードすることができ、それがうまく動作します。認識は悪くないですが、16KHzのPCMウェーブファイルやその他の互換性のあるウェーブファイルの設定を使用する必要があります。悲しいことに、はMicrosoft.Speechで利用できません。

関連する問題