Разработчик собрал полностью локальный голосовой ассистент на Python и выложил его в open source
Российский разработчик под псевдонимом Mike2024New опубликовал на Хабре проект App AI Assistant — голосового компаньона, который работает полностью офлайн на персональном компьютере без облачных API и подписок. Исходный код выложен под лицензией MIT, а сама система собрана из четырёх изолированных микросервисов на Python 3.12 и Asyncio.
Проект под названием App AI Assistant представляет собой десктопное приложение, которое объединяет локальную языковую модель, синтез и распознавание речи в единый голосовой интерфейс. Автор описывает его как «Джарвиса на минималках»: с ассистентом можно разговаривать в реальном времени, поручать ему запуск Python-скриптов и управление компьютером. Ключевая особенность — полная автономность: ни один запрос не уходит в облако, а вся обработка данных происходит на машине пользователя. Код опубликован под лицензией MIT, что допускает свободное использование, модификацию и коммерческое применение при сохранении уведомления об авторстве. Сам разработчик мотивирует затею просто: пока индустрия заворачивает платные API в красивые обёртки, ему хотелось сделать нечто полностью автономное, конфиденциальное и бесплатное.
Среди заявленных возможностей — потоковая генерация ответа, когда ассистент начинает говорить, не дожидаясь завершения всей фразы, и механизм умного прерывания (barge-in), при котором система мгновенно замолкает, если пользователь перебил её на полуслове. Ассистент умеет запускать произвольные Python-скрипты по голосовой команде: открывать папки, браузер или сторонний софт. Каждый подключаемый скрипт может иметь собственное виртуальное окружение в директории .venv, что упрощает установку зависимостей. Кроме того, система сохраняет краткое резюме диалогов между сессиями, то есть помнит контекст предыдущих разговоров, а параметры ассистента доступны для гибкой настройки. Именно эта связка «слушать — думать — говорить — действовать» и отличает проект от множества локальных чатов с моделью: здесь акцент сделан на реальном времени и голосовом управлении, а не на текстовом диалоге в окне терминала.
Архитектурно приложение разбито на четыре изолированных компонента, которые общаются друг с другом по HTTP и WebSocket. Оркестратором выступает графический интерфейс на CustomTkinter, который автор называет дирижёром всей системы. Движок мышления построен на локальной модели Gemma 3 через библиотеку llama-cpp-python. Распознавание речи реализовано гибридно: Vosk работает как быстрый детектор речи и прерываний, а Faster-whisper выполняет точную финальную транскрибацию. За синтез голоса отвечает офлайн-движок Silero с кастомным пайплайном нормализации текста, чтобы ассистент корректно произносил аббревиатуры и числа. Каждый из трёх сервисов — srv_llm, srv_tts и srv_stt — можно запустить отдельно одной командой и обращаться к нему по HTTP из любого языка программирования. Такое разделение автор объясняет просто: чтобы интерфейс не фризило, а инференс не лагал, тяжёлые части вынесены в самостоятельные процессы.
Отдельного внимания заслуживает отказ автора от Docker. По его словам, Docker Desktop для Windows требует гигабайтов дискового пространства, настройки WSL2 и включения виртуализации в BIOS, что становится барьером для обычного пользователя, который просто хочет поговорить с ассистентом. Вместо этого разработчик выбрал нативное развёртывание: собственный лаунчер запускает легковесные Python-процессы напрямую, а в перспективе всё собирается в один исполняемый файл через PyInstaller. Для упрощения установки написан отдельный мастер srv_installer, который сам скачивает portable-версии Python и Git, проверяет контрольные суммы sha256, клонирует репозитории, создаёт виртуальное окружение и собирает .exe прямо на месте. Установленный Python или Git на машине при этом не требуется, а весь процесс автор описывает как «3 клика и всё готово». Docker, по его формулировке, хорош для облачных кластеров, но для локального десктопного ассистента становится лишним слоем абстракции.
Контекст проекта показателен для текущего этапа развития локального ИИ: на фоне повсеместного перехода разработчиков к платным облачным API появляется всё больше инициатив, нацеленных на приватность и независимость от подписок. Инструменты вроде llama.cpp, Ollama и LM Studio уже сделали запуск языковых моделей на потребительском железе вполне рутинной задачей, однако объединить в одном приложении модель, распознавание и синтез речи с низкой задержкой заметно сложнее. Именно инженерная связка четырёх сервисов, а не сама языковая модель, составляет основную ценность проекта. Автор также вынес общие компоненты в отдельный монорепозиторий infrastructure2 — с шиной сообщений, HTTP-клиентами, менеджером настроек на pydantic, утилитами сборки и виджетами для UI, — чтобы не дублировать инфраструктурный код между проектами и не плодить «зоопарк» из расходящихся копий одних и тех же утилит.
Для российского рынка и локального сообщества разработчиков такой проект интересен прежде всего как готовый каркас для собственных решений. Русскоязычные команды всё чаще ищут способы строить голосовых ассистентов без зависимости от зарубежных облачных сервисов, и открытый MIT-код снимает вопросы лицензирования и позволяет адаптировать систему под собственные сценарии. Разделение на независимые HTTP-сервисы означает, что srv_stt и srv_tts можно встроить в проект на C#, Java или Go, а srv_llm использовать как локальную замену внешнему API. Ограничения, впрочем, тоже обозначены честно: поддержка только Windows 10 и 11, адаптация исключительно под шаблон Gemma и отсутствие AEC-вычитателя эха, из-за чего пока рекомендуется работать в наушниках, чтобы выходной звук не попадал на микрофон.
Дальнейшая судьба проекта зависит от того, насколько быстро автор закроет эти пробелы и подхватит ли инициативу сообщество. Наиболее очевидные направления развития — поддержка других моделей помимо Gemma, добавление эхоподавления для работы без наушников и кроссплатформенность. Открытым остаётся вопрос реальной задержки при общении на слабом железе и того, насколько удобной окажется сборка в один .exe для нетехнических пользователей. Тем не менее сам факт публикации полностью автономного голосового ассистента под свободной лицензией показывает, что приватный локальный ИИ перестаёт быть экспериментом энтузиастов и превращается в рабочий инструмент, который любой разработчик может развернуть у себя на компьютере.