Добавить диктовку на Microsoft Speech Platform 11 (сервер)? - PullRequest
9 голосов
/ 19 февраля 2012

Я относительно новичок и в C #, и в платформе Microsoft Speech, но я работаю над серверным приложением, которое должно будет транскрибировать бесплатную диктовку.Пакет MS Speech Platform казался идеальным и работает на сервере, если я не ссылаюсь на метод 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 ]

11 голосов
/ 29 февраля 2012

Для тех, кто может столкнуться с этим в будущем - я теперь переписывался с Microsoft по электронной почте и в конечном итоге получил этот ответ:

Встроенные управляемые интерфейсы (Microsoft.Speech и System.Speech) поверх родных интерфейсов SAPI. Эти интерфейсы одинаковы как для ядра сервера, так и для рабочего стола.

НО двигатель сам отвечает за реализацию диктовки, а сервер двигатель так не делает. Поэтому при загрузке вызов не будет выполнен. грамматика.

Не тот ответ, на который я надеялся, но он объясняет это.

3 голосов
/ 05 июля 2012

Если вы используете System.Speech, вы можете загрузить свою грамматику с _recognizer.LoadGrammar(new DictationGrammar());, и она будет работать хорошо. Распознавание неплохое, но тогда вам придется использовать 16-кГц PCM-файл волны или другие совместимые волновые файлы конфигурации. К сожалению, DictationGrammar() недоступно с Microsoft.Speech.

...