Как настроить голосовой движёк под Windows для Majordomo?

Итак что бы Алиса начала говорить необходимо первым делом убедиться что в настройках ОС Windows в разделе “Преобразование текста в речь” (Speech Recognition) установлен русский голосовой движёк. Как правило даже если у вас русская локаль Windows этот движёк не будет установлен, но я встречал старые инсталляторы Windows 7 где он был. Поэтому есть два варианта, либо искать такую версию инсталлятора либо установить русский голосовой движёк. Возможно какой-то из пакетов у вас уже будет установлен в зависимости от версии Windows, но я буду указывать весть набор софта:

И самое вкусное, один из самых лучших голосовых движков для русского языка IVONA (12). Пароль на архив: majordomo

После установки пакетов, открываем в панели инструментов раздел “Распознавание речи” -> “Преобразование текста в речь”, из выпадающего списка выбираем русский TTS, вводим в поле ниже слово “привет” и нажимаем кнопку “Проверить”, у меня это “Preview Voice”. Если вы услышали из колонок “привет”, то всё удалось.

Вам останется установить модуль “Windows native TTS” в Мажордомо и всё. После этих манипуляций Алиса перестанет быть немой. Если же она по прежнему ничего не говорит, то вот мои рекомендации что первым делом нужно проверить:

  • убедитесь что динамики подключены и звук нормально воспроизводится например на ютубе или из медиплеера
  • убедитесь что на вкладке Windows TTS в Majordomo переключатель установлен в положение “вкл”
  • перезагрузите Majordomo
  • перезагрузите Windows

Как убрать фразу “Неизвестная команда”?

Постоянно получаю вопрос: как убрать фразу “Неизвестная команда”? Обычно такая необходимость появляется после того как вы начинаете использовать модуль API.AI. К сожалению если в шаблонах поведения такая команда не найдена, но она найдена в API.AI, то фраза “Неизвестная команда” всё равно будет выполнена, что не есть хорошо. Самый простой выход, это закомментировать эту строчку. Делается это вот где:

Объекты -> класс "Computer" -> метод "commandReceived", листай в самый низ и комментируем строчку.

Про режимы MajorDomo

В MajorDomo есть класс “OperationalModes”, который отвечает за логику режимов. В нём по умолчанию есть почти полный набор режимов, который понадобится любому пользователю.

  • DarknessMode – Режим тёмного времени суток
  • EconomMode – Эконом режим
  • GuestsMode – Гостевой режим
  • NightMode – Ночной режим
  • NobodyHomeMode – Режим “никого дома”
  • SecurityArmedMode – Режим безопасности

Если вы используете индикаторы режимов на сценах, то могли заметить что некоторые режимы можно включить\выключить по клику на сцене, а некоторые нет. Я до конца не понял в чём причина, но грешу на инклуды “простых устройств” в методах активации и деактивации режимов. Проблему решил принудительным выставлением свойства active. Например для неработающего выключателя индикатора для режима “никого дома” я дописал в метод deactivate:

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nobodyhomemode_deactivate.php');
/* end injection of {SDevices} */
sg("NobodyHomeMode.active","0");

После этого индикатор стал корректно выключаться.

А вот метод активации activate по какой-то причине у меня нормально активировался и дополнительно включать его не требовалось. Но для режима DarknessMode это пришлось сделать вручную. Как для включения так и для выключения.

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

Как режимы могут влиять на статусы можно прочитать в одном из моих предыдущих постов.