Могу ли я использовать два или более механизма распознавания речи Microsoft на одном компьютере (с одним языком)?
У меня есть задача по распознаванию речи, и я пытаюсь распознать слишком объемную грамматику (2000+ слов).
Итак, я думаю разделить эту большую грамматику на две грамматики. Одна грамматическая нагрузка на первый движок, другая - на второй.
Но я не знаю - ссылаются ли эти экземпляры SpeechRecognitinEngine на 2 разностных речевых движка или они просто связаны с одним движком?
Вот мой код:
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;
}
Этот код работает хорошо - когда я говорю «один» - он набирает «один один» из обоих движков.
Моя цель - сделать 2 или более движка, загрузить два или более больших грамматика и, если они распознаются на разных движках, получить производительность (и подтвердить) распознавание.
Спасибо!
P.S. Спасибо за ответ!
Хорошо, я переписываю кусок кода:
var gr3 = MakeGrammar("gr3", words3);
Итак, в этой строке я создаю новую грамматику. И я могу загрузить его на второй двигатель.
Итак, gr1 загрузится в Engine1, gr2, g3- в Engine2.
Я знаю, это глупый вопрос, но: Может ли Engine1 и Engine2 - это просто ссылки на какой-то Engine, который распознает эти грамматики (грамматики большие)? Я надеюсь, что это не так, потому что я хочу создать на своей машине от 1 до N движков, загрузить грамматику от 1 до N (одна большая грамматика для одного движка) и попытаться распознать ее. Спасибо!
gr1
обоим двигателям. Попробуйте создать совершенно отдельные объекты грамматики. - person Chris   schedule 03.07.2015