9

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

Microsoft Speech Platform 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);

奇妙なことに、LoadGrammar を LoadGrammarAsync に変更すると、文法が読み込まれます (または、少なくともイベント ハンドラーが呼び出されます) が、認識エンジンは次のエラーで失敗します。

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

プラットフォームのサーバー バージョンがディクテーションをサポートしていないことを読みましたが、機能しない方法で出荷されるのは奇妙に思えます。サーバーでディクテーション文法を動作させることに成功した人はいますか? 私は何を間違っていますか?

どうもありがとう

4

2 に答える 2

11

将来これに遭遇する可能性のある人のために、私は今、マイクロソフトとメールをやり取りしており、最終的に次の応答を受け取りました。

マネージド インターフェイス (Microsoft.Speech および System.Speech) は、ネイティブ SAPI インターフェイスの上に構築されています。これらのインターフェイスは、サーバー エンジンとデスクトップ エンジンの両方で同じです。

しかし、エンジン自体がディクテーションの実装を担当し、サーバー エンジンはそうしません。したがって、文法をロードすると、呼び出しは失敗します。

私が望んでいた答えではありませんが、それはそれを説明しています。

于 2012-02-29T18:01:40.143 に答える
3

を使用System.Speechすると、文法を読み込むことができ_recognizer.LoadGrammar(new DictationGrammar());、うまく機能します。認識は悪くありませんが、16KHz PCM wave ファイルまたはその他の互換性のある wave ファイル構成を使用する必要があります。残念ながらDictationGrammar()は では利用できませんMicrosoft.Speech

于 2012-07-05T04:01:14.820 に答える