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.