Облачные ассистенты вроде Алисы, Google Assistant и Siri давно стали привычными. Но у всех у них одни и те же слабые места: зависимость от быстрого интернета и риск утечки данных. И речь не только о персональной информации — дома нередко обсуждают темы, которые можно отнести к коммерческой или даже военной тайне. Неудивительно, что многим некомфортно говорить в присутствии микрофона, который каждое слово отправляет куда-то «в облако» (один из наших заказчиков прямо сказал: «никаких Алис в доме не будет»).
На Хабре уже появлялись статьи про попытки заменить Алису на полностью локальные решения. Но почти всегда все сводилось к стандартной схеме: ESP32-микрофон → Home Assistant → intent recognition. Такая связка работает, но до действительно «умного» ассистента ей далеко.
Мы пошли дальше и собрали свой голосовой ассистент, который:
работает локально, на доступном и нетребовательном «железе»;
использует wake word, идентификацию человека по голосу, а также нейросети и эмбеддинги, чтобы понимать команды в свободной форме;
при этом отвечает голосом, без обращения к облаку.
Что такое wake word и эмбеддинги
Wake word — это ключевая фраза, по которой ассистент «просыпается» (например, «Окей, Google» или «БАРИ!»). Система постоянно слушает, но реагирует только на это слово.
Эмбеддинги — это способ представить слова в виде векторов чисел, чтобы нейросеть могла сравнивать выражения и находить близкие по смыслу. Благодаря этому ассистент понимает, что «вруби свет» и «включи лампу» означают одно и то же.

Система заработала, но быстро стало понятно: готовые эмбеддинги из больших языковых моделей ограничивают ее возможности. Тогда мы полностью переработали архитектуру и сделали собственную модель эмбеддингов, обучаемую прямо на Orange Pi.
Результат — новая версия Ассистента BARY, которая понимает естественную речь, справляется с ошибками распознавания и по-прежнему работает полностью оффлайн.
Как все начиналось
Первая версия Ассистента BARY появилась, можно сказать, из чистого любопытства — как инженерный эксперимент: можно ли построить голосового помощника, который работает полностью офлайн, без интернета и облачных API.
Архитектура получилась простой и понятной:
wake word активировал систему по ключевому слову «БАРИ»;
VOSK отвечал за распознавание речи (Speech-to-Text);
эмбеддинги из LLM (предобученной языковой модели) превращали текст в вектор;
выполнялся поиск ближайшего по смыслу совпадения среди заранее описанных команд;
TTS-движок (Text-to-Speech) озвучивал ответ, чтобы ассистент мог подтверждать команды и говорить с пользователем.
Ассистент действительно работал: можно было сказать «включи свет на кухне» — и реле срабатывало. Он даже понимал синонимы вроде «вруби» или «подсветку сделай».
Но довольно быстро проявились ограничения этой схемы:
готовые эмбеддинги из LLM нельзя было адаптировать под конкретный дом или манеру речи;
база команд оставалась статической — ассистент не понимал, что «в спальне темно» означает то же самое, что «включи свет»;
и главное — он не мог обучаться, а значит, не становился умнее со временем.
Ассистент BARY работал стабильно и предсказуемо, но в какой-то момент стало ясно: чтобы по-настоящему «понимать» речь, ассистенту нужна своя обучаемая модель, а не внешние эмбеддинги.
Что изменилось: новая версия Ассистента BARY
Во второй версии Ассистента BARY мы полностью переработали ядро. Теперь у него есть собственная модель эмбеддингов — компактная embedding model на основе Transformer. Она не просто создает числовые векторы для слов, а учится понимать взаимосвязи между командами, формируя собственное векторное пространство смыслов.
Модель небольшая — около 5 млн параметров и 128-мерный вектор на выходе. Этого достаточно, чтобы различать и связывать десятки тысяч фраз. Главное — она работает целиком на Orange Pi 5 Pro, без внешних API и без интернета.
Обучение
Теперь обучение модели возможно прямо локально.
При небольшом наборе (до 5 000 команд) процесс занимает примерно 10–15 минут.
На полном датасете (около 16 000 команд) — чуть больше часа.
В будущем обучение, возможно, будет выноситься в облако — но только как опция. Само распознавание останется полностью локальным, и количество команд почти не влияет на скорость отклика.
Результат
Теперь BARY не просто ищет совпадения по вектору, а интерпретирует сказанное в рамках огромного набора команд и их вариантов. Фразы вроде «в спальне душно», «тут что-то жарковато» или «открой шторы» срабатывают потому, что модель обучена на широком наборе фраз — включая разговорные, эмоциональные и даже не совсем литературные формулировки.
Модель эмбеддингов размещает близкие выражения рядом и уверенно находит нужное действие.
И все это работает на обычном контроллере стоимостью около 15 тысяч рублей.


Как это работает
Полная цепочка выглядит так:
Wake Word → STT (VOSK) → Embedding Model → поиск по сходству → TTS (Piper) → действие / ответ.
Что здесь происходит
Wake Word активирует систему по ключевой фразе — «БАРИ».
VOSK преобразует речь в текст (Speech-to-Text).
Embedding Model создает векторное представление команды, обученное на большом наборе примеров. Она не просто переводит слова в числа, а строит собственное «пространство смыслов», где «вруби свет в зале», «включи потолок на кухне» и «сделай поярче, а то темно» — близкие выражения.
Далее используется поиск по сходству — команда сравнивается с базой векторов, и выполняется наиболее подходящее действие.
Если нужен голосовой ответ, включается Piper, который синтезирует речь локально. Голосовые ответы применяются, когда ассистент сообщает данные или уточняет действия: «Температура в спальне 22 градуса» или «Закрыть шторы?»
В остальных случаях Ассистент BARY отвечает короткими звуковыми сигналами — как в Алисе или Google Home. Это быстрее, понятнее и не раздражает при частом использовании.
Как обучается Embedding Model
Модель обучается на автоматически сгенерированном датасете из пяти уровней:
Базовые команды — включи/выключи, яркость, цвет, режим и т. п.
Синонимы — генерация вариантов через перефразирование.
Склонения и формы — вариации по помещениям, контексту и типичным ошибкам STT. Например, если VOSK часто путает «кухня» и «в кухне» или «светло» и «свет», эти варианты тоже добавляются в датасет.
Эмоциональные и разговорные формулировки — чтобы ассистент понимал естественную речь, а не только строго заданные команды.
Контекстные короткие фразы — с памятью до 20 секунд, что позволяет понимать уточнения вроде «а потусклее».
Дисклеймер. Эмоциональные (и нецензурные) варианты добавились не сразу — об этом вспомнили, когда команд уже было «овердофига». После генерации набор команд вырос примерно в 2,5 раза, но именно эти фразы значительно повысили устойчивость модели к живой речи.
В итоге наш примерный датасет охватывает 49 устройств, 18 помещений и ≈ 16 000 команд, из которых более половины содержат эмоциональные или разговорные формы.
При этом модель эмбеддингов остается компактной, но покрывает почти все сценарии домашней автоматизации.
Почему это важно
Главная цель у нас не изменилась — создать голосового ассистента, который работает без интернета и облака, но при этом понимает речь по смыслу, а не по заранее заданным шаблонам. Однако новая архитектура изменила все.
Раньше локальные решения выглядели одинаково: Home Assistant, микрофон и поиск совпадений по словарю. Такой подход позволял включать свет или розетки, но любая фраза вне списка ставила систему в тупик.
Теперь Ассистент BARY действительно интерпретирует речь. Он понимает естественные формулировки вроде:
«в детской душно» → включить приточку сильнее;
«надоел трек» → переключить музыку;
«жарковато на кухне» → усилить работу кондиционера;
«пора спать» → выключить свет во всей квартире.
Новая модель стала гораздо устойчивее к ошибкам распознавания. Если VOSK немного искажает слова, модель эмбеддингов все равно правильно определяет намерение.

Кроме того, благодаря идентификации пользователя по голосу ассистент теперь может подстраиваться под каждого человека. Это не только про музыку — система запоминает личные предпочтения: кому комфортно при +22°, а кому при +25°, кто любит приглушенный свет, а кто потолочный на максимум. Такая персонализация решает «вечную войну» «мне холодно — мне жарко» и делает автоматизацию по-настоящему удобной.
В перспективе этот механизм можно развивать бесконечно. Ассистент сможет добавлять продукты в личный список покупок, напоминать о привычках, предлагать сценарии вроде «пора спать, выключить свет?». Функциональность, которую крупные компании реализуют через облачные профили пользователей, BARY делает локально — прямо у вас дома.
По сути, теперь это не просто офлайн-распознавание речи, а понимание контекста и поведения.
Результаты и планы
Сегодня Ассистент BARY — уже не прототип, а стабильная рабочая система, которая управляет умным домом полностью офлайн. За последние месяцы мы довели архитектуру до состояния, когда ей можно пользоваться каждый день.
Текущие результаты
Скорость обработки команды:
— около 150 мс на Orange Pi 5 Pro;
— менее 20 мс на MacBook M1 Max при тестах.Контекстная память: около 20 секунд — ассистент понимает уточнения вроде «а потусклее», если их произнести в течение этого времени.
Покрытие: 100 % подключенных устройств (49 устройств, 18 помещений).
Работа без интернета: система полностью автономна — от wake word до озвученного ответа.
Реакция на естественную речь: уверенно обрабатывает синонимы, разговорные и эмоциональные формулировки, включая нецензурные варианты.
Что дальше
Дальнейшее улучшение поддержки протокола Yandex Smart Home API — не для подключения к облаку, а для совместимости.
Это позволит встроить Ассистент BARY в любые системы, которые уже умеют работать с устройствами Яндекса, сохранив локальную логику.Развитие Voice ID — персональные сценарии для членов семьи, запоминание предпочтений по голосу.
Генерация датасетов — добавляем реалистичные диалоги, короткие уточнения и естественные формы речи.
Голосовые ответы на базе Piper — улучшение тембра, пауз и скорости, чтобы ассистент звучал естественнее.
Облачное обучение при локальном распознавании — пользователи смогут обновлять модели без тяжелого оборудования, при этом все распознавание останется офлайн.
Предиктивная аналитика — следующий шаг к действительно «умному» дому.
Ассистент учится замечать закономерности и предлагать действия заранее.
Например, если хозяин каждый вечер в 22:30 выключает свет и включает кондиционер, BARY сможет предложить это сам, без команды.
Или другой сценарий: в помещении установлены датчик движения и реле, но нет правил для автоматического включения света. Система анализирует поведение, видит, что свет включается вскоре после входа, и предлагает сделать это автоматическим правилом.
Проблемы с микрофонами
Из всех узких мест у голосовых ассистентов самое непредсказуемое — звук. С нейросетью можно разобраться, с распознаванием — подружиться, а вот стабильное качество микрофонов остается лотереей.
Мы пробовали разные варианты:
Ноутбук использовался только на этапе разработки и тестов.
Планшеты, встроенные в стены как стационарные панели управления, стали полноценными «ушами» системы. Но тут есть нюанс: когда планшет стоит в корпусе или за стеклом, чувствительность микрофона падает в разы — голос из дальнего угла комнаты он уже не слышит.
ESP32-S3-BOX с двумя микрофонами показал себя лучше, но почти без шумоподавления и с сильной зависимостью от расстояния до говорящего.
USB-микрофоны и китайские массивы — результаты непредсказуемы: в одной комнате работают отлично, в другой — плохо.
Пока универсального решения нет: где-то помогает усиление на уровне драйвера, где-то — дополнительная фильтрация шума на стороне VOSK.
Мы решили обратиться к сообществу: какие микрофоны, модули или схемы реально работают для голосовых ассистентов в «боевых» домашних условиях?
Если вы делали похожие проекты — поделитесь, что выбрали и почему.
Возможно, вместе мы соберем список проверенных решений и избавим будущих энтузиастов от этой боли.

Заключение
Ассистент BARY начинался как эксперимент — можно ли сделать голосового помощника, который работает без интернета и при этом действительно понимает команды. Первая версия доказала, что это возможно. Вторая показала, что локальный ассистент может быть не просто «реактивным», а по-настоящему гибким и адаптивным.
Теперь у Ассистента BARY есть собственная модель эмбеддингов, автогенерация команд, понимание естественной речи и учет контекста. Он не подключен к облаку и не отправляет данные наружу — все обрабатывается локально.
Можно сказать, что мы перенесли «думалку» внутрь самой модели: теперь именно она отвечает за интерпретацию фраз и выбор нужного действия. Никакой магии — просто аккуратная работа с языковыми представлениями.
Ассистент BARY пока не распознает все подряд и не способен мыслить, но с задачами управления домом он справляется отлично. Если Алиса живет в облаке, то BARY — у вас дома.
А если дома есть свободный компьютер с нормальной видеокартой — можно подключить локальную LLM-интеграцию. В этом режиме ассистент начнет отвечать на общие вопросы и вести простые диалоги — тоже полностью офлайн, без отправки данных наружу.
Пусть BARY пока не рассуждает в полном смысле, но уже уверенно понимает, чего вы от него хотите — и теперь способен не просто реагировать, а действительно помогать.
Goron_Dekar
Реально нужно, молодцы!
А как бы попробовать сие изделие дома? У меня x86 сервер, хотел бы на нём развернуть и потестить c ReSpeaker USB Mic Array.
augap Автор
Добрый день, скоро объявим о публичном тесте. Можете свой опыт рассказать про этот микрофон?
Goron_Dekar
Вообще нет пока что опыта. Заказал, лежит, пылится. Попробовал его на стандартном whisper - отлично работает по всей комнате с работающим роботом пылесосом, но и настольный микрофон справился на ура. Надо более сложную задачу.