同じマシンで (同じ言語で) 2 つ以上の Microsoft 音声認識エンジンを使用できますか?
音声認識のタスクがあり、大きすぎる文法 (2000 以上の単語) を認識しようとしています。
そこで、この大きな文法を 2 つの文法に分けようと思います。最初のエンジンへの 1 つの文法ロードと、2 番目のエンジンへのその他のロード。
しかし、私にはわかりません。この SpeechRecognitinEngine インスタンスは、2 つの異なる音声エンジンを参照していますか、それとも 1 つのエンジンにリンクされているだけですか?
これが私のコードです:
List<String> words1 = new List<string>();
words1.Add("one");
List<String> words2 = new List<string>();
words2.Add("two");
var gr1 = MakeGrammar("gr1", words1);
var gr2 = MakeGrammar("gr2", words2);
var gr3 = MakeGrammar("gr1", words1); // create new grammar with name gr1- to check on grammar unic name exception.
MicSpeechRecEngine1.LoadGrammar(gr1); (where MicSpeechRecEngine is SpeechRecognitionEngine)
MicSpeechRecEngine2.LoadGrammar(gr2);
MicSpeechRecEngine2.LoadGrammar(gr3);
public static Grammar MakeGrammar(String name,List<String> words)
{
Choices choises = new Choices();
GrammarBuilder gb = new GrammarBuilder();
gb.Culture = new CultureInfo("en-US");
if (choises == null)
throw new NullReferenceException("choises is null!");
if (words == null)
throw new NullReferenceException("Words is null!");
choises.Add(words.ToArray());
if (gb != null)
{
//gb.Append(choises);
gb.Append(choises, 0, 10);
}
Grammar g = new Grammar(gb);
g.Name = name;
g.Priority = 0;
g.Weight = 1.0f;
g.Enabled = true;
return g;
}
このコードは、両方のエンジンから「1 つ」と入力すると、うまく機能します。
私のポイントは、2 つ以上のエンジンを作成し、2 つ以上の大きな文法をロードし、それが異なるエンジンで認識される場合は、パフォーマンス (および検証) の認識を得ることです。
ありがとうございました!
PS お返事ありがとうございます!
わかりました、コードの一部を書き直します:
var gr3 = MakeGrammar("gr3", words3);
そこで、その行で新しい文法を作成します。そして、私はそれを2番目のエンジンにロードできます。
したがって、gr1 は Engine1 にロードされ、gr2、g3- は Engine2 にロードされます。
ばかげた質問ですが、Engine1 と Engine2 は、この文法 (文法は大きい) を認識するエンジンへの参照に過ぎないのでしょうか? 私は自分のマシンで 1 から N のエンジンを作成し、1 から N の文法 (1 つの大きな文法を 1 つのエンジンに) をロードし、それを認識しようとしているので、そうでないことを願っています。ありがとうございました!