Шапка поста с устройством Home Assistant Voice Preview Edition

Мне всегда нравилась идея локального голосового управления умным домом без привязки к внешним облачным сервисам, но эксперимент по использованию локального голосового помощника Home Assistant Voice (Preview Edition) в Home Assistant, запущенном в докере на NAS Synology DS224+ с древним процессором Intel Celeron J4125, признаю неудачным и провалившимся.

Все не заладилось еще на этапе заказа колонки у дешевого китайца. Продавец отправил колонку с использованным трекинг-номером и обозначил ее в декларации как «плату для самодельного робота» по цене тарелки лапши. Китайский товарищ заверил, что все будет в порядке, а я, наивный и экономный, решил поверить. Вскоре трекинг-номер обновился и я получил колонку в срок в неказистой картонной коробке. Все-таки это хоть и официальная колонка, но внутри полный DIY на базе ESPHome с соответствующей нулевой презентацией.

Колонка работает по Wi-Fi и питается от обычного USB-C-кабеля. Кабель нужен исключительно для подачи питания, нет необходимости подключать колонку к серверу, где установлен Home Assistant. Я вообще подключил к роутеру Keenetic, чтобы колонка бодрствовала 24/7.

С подключением через мобильное приложение Home Assistant не возникло никаких проблем, а вот фраза активации «Okay Nabu» у меня срабатывала через раз. Закосить под Тони Старка с другой фразой «Hey Jarvis» тоже не вышло. Зато с фразой «Hey Mycroft» произошло стопроцентное взаимопонимание между человеком и бездушной машиной.

В качестве теста использовались умные лампочки Яндекса с протоколом Matter over Wi-Fi, подключенных напрямую к Home Assistant. Замерял отклик на фразу включения света на русском. Малая локальная модель tiny-int8 для STT-движка (speech-to-text) Faster Whisper выполняет команды примерно за 4 секунды. Попробовал другую малую модель vosk-model-small-ru-0.22 для STT-движка Vosk - 2 секунды. Вроде отличный результат, но главная проблема локальных моделей в распознавании слов. Говорил громко и отчетливо, а в режиме отладки видно, что слова распознаются криво и через раз. Пробовал ставить большую модель vosk-model-ru-0.42, которая жрет 6 гигов оперативной памяти, но никакого заметного улучшения не увидел.

С облачным Home Assistant Cloud нет никаких проблем с распознаванием слов и русский там работает отлично, но облако требует подписки за $10 в месяц. В то время как в Home Assistant с помощью сторонней интеграции можно подключить любую Яндекс Станцию, которая будет прекрасно работать без какой-либо подписки. У меня в Home Assistant более сотни голосовых команд, которые Яндекс Станция понимает и распознает с первого раза. Недавно разработчики Home Assistant представили новый STT-движок Speech-to-Phrase, который должен работать на любой картошке, но там пока нет поддержки русского языка.

В текущей предварительной версии Home Assistant Voice – это скорее игрушка для энтузиастов, готовых мириться с регулярными ошибками распознавания. Использую исключительно в качестве резервного локального голосового помощника. Можно еще подключить к обычным колонкам через 3,5-мм аудиовыход и использовать в Music Assistant, который агрегирует в одном месте локальные и стриминговые фонотеки. Других сценариев использования я пока не вижу.