AppendDictation на Microsoft Speech Platform 11 (сервер)?
Я относительно новичок как в C#, так и в Microsoft Speech platform, но я работаю над серверным приложением, которое должно будет транскрибировать бесплатную диктовку. MS Speech Platform SDK казался идеальным и работает на сервере, если я не ссылаюсь на метод AppendDictation () в GrammarBuilder.
Я использую 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, грамматика загружается (или, по крайней мере, вызывается обработчик событий), но затем recoginzer терпит неудачу с этой ошибкой:
Error: At least one grammar must be loaded before doing a recognition.
Я читал, что серверная версия платформы не поддерживает диктовку, но кажется странным, что она будет поставляться с методом, который просто не работает. Кому-нибудь удалось получить диктовку грамматика для работы на сервере? Что я делаю не так?
большое спасибо
2 ответов
для всех, кто может столкнуться с этим в будущем - я теперь по электронной почте туда и обратно с Microsoft, и в конечном итоге получил этот ответ:
управляемые интерфейсы (Microsoft.Речь и система.Речь) строятся поверх собственных интерфейсов SAPI. Эти интерфейсы одинаковы как для серверного, так и для настольного движка.
но двигатель сам отвечает за реализацию диктовки, а сервер двигатель не работает так. Таким образом, вызов завершится ошибкой при загрузке грамматика.
не тот ответ, на который я надеялся, но он объясняет это.
если вы используете System.Speech
вы можете загрузить грамматику с _recognizer.LoadGrammar(new DictationGrammar());
, и он будет работать хорошо. Распознавание не плохо, но тогда вы должны использовать волновой файл 16 кГц PCM или другие совместимые конфигурации волнового файла. К сожалению DictationGrammar()
не работает с Microsoft.Speech
.