Шаблон проектирования: модульная архитектура команд (рабочий процесс?) - PullRequest
1 голос
/ 01 января 2012

У меня есть приложение, которое реагирует на голосовые команды. Примеры включают: Read Headlines, Start Visual Srudio. Приложение обеспечивает обратную связь через TTS.

Я бы хотел расширить приложение, чтобы оно было модульным. Каждый модуль должен уметь:

  • Расширить список известных команд
  • Открыть окна пользовательского интерфейса (о которых родительское приложение должно знать, чтобы оно могло закрыть их по команде стандартным способом)
  • Текст очереди для механизма TTS - возможно, с флагом приоритета
  • Поддержка диалога вперед-назад - Show a map of Bristol может вызвать ответ Bristol USA or England? и затем прослушать конкретный ответ.

Может кто-нибудь предложить подходящий шаблон дизайна?

1 Ответ

2 голосов
/ 02 января 2012

Если вы хотите создать обратную связь по устной команде, подход к архитектуре прост и устоялся.Основанный на событиях подход источника / слушателя с плагинами, которые могут подписываться на события и реагировать на них, должен работать

Для диалоговой системы дизайн более сложный.Управление диалогами требует, чтобы у вас было древовидное представление пространства знаний и был менеджер для отслеживания хода диалога.Рекомендуется попробовать прочитать о системе Olympus из CMU, чтобы ознакомиться с используемыми концепциями и решениями:

http://wiki.speech.cs.cmu.edu/olympus/index.php/Olympus

Bohus, Dan & Alexander I. Rudnicky (2009), "TheСтруктура управления диалогами RavenClaw: Архитектура и системы ", Компьютерная речь и язык

http://www.sciencedirect.com/science/article/B6WCW-4TVJ3KG-1/2/d6bfd64173650f150219cf4a43a51a66

Богус, Дан и Александр И. Рудницкий (2003)," RavenClaw: Управление диалогами с использованием иерархической декомпозиции задачи программа ожиданий ", Eurospeech 2003

http://research.microsoft.com/~dbohus/docs/ravenclaw.ps

Для более сложного проектирования с самообучением и извлечением семантической информации вам необходимо обратиться к публикациям по проекту CALO, который закончился в SIRI

https://pal.sri.com/Plone/framework/Components

Все это хорошо объясняет, как эта система реагирует, учится и реагирует.

...