Алгоритмы распознания команд?
Для обработки коротких комманд нет смысла в использовании нейронных сетей и прочей тяжелой артиллерии. 
Получаемые комманды (в смысле действия) известны заранее, все количественные параметры и сами объекты тоже. Тогда обработка комманды сводится к обработке токенов-слов для определения действия, объектов и их характеристик, и все они известны программе на момент поступления.ПримерИзвестные действия: {включить, выключить}
Известные объекты с характеристиками: {светильник={синий, в углу}, светильник={белый, на тумбе}}
Поступающая комманда: "белый светильник включить"
Токены комманды: {белый, светильник, включить}
Шаги алгоритма:
1. Находим токен-действие - "включить";
2. Находим токен-объект по ключу известных объектов: "светильник";
3. Оставшиеся токены ("белый") - характеристики. Проверяем все объекты с ключом "светильник" на наличие характеристики "белый", находим нужный;
4. ???;
5. Комманда обработана - найдено действие и объект.
1. Определение части речи: https://habrahabr.ru/post/152389/
2. Для сравнения полученного текста (с микрофона) и заранее созданых ожидаемых команд (или их шаблонов) - нечёткий поиск Stumper API.