Перейти к содержанию

Бэкенд (Self-hosted)

Важно!

Статьи про бэкенд написаны и вычитаны вручную, пожалуйста, не переписывайте весь текст через AI.

Бэкенд (англ. Backend) — серверная часть системы, которая обрабатывает запросы от колонки и обеспечивает работу голосового ассистента, включая распознавание речи, ответы на вопросы, управление умным домом, воспроизведение музыки, работу таймеров, будильников и других функций.

Обычно все колонки работают в связке с облачными серверами Яндекса через интернет. Но на рутованной колонке можно изменить эту схему, направив все запросы от колонки на собственный сервер, который контролируете исключительно вы.

Info

Частично функции бэкенда можно заменить с помощью интеграций устанавливаемых в саму колонку.

Зачем нужен собственный бэкенд

Независимость

Обработка команд, будильников, таймеров и т.п. происходит без обращения к различным датацентрам через интернет. Это позволяет сохранять максимальную доступность и не зависеть от чужой инфраструктуры или стабильности внешнего интернет-соединения. 

Приватность

Для распознавания и синтеза речи используются локальные сервисы, без передачи записей разговоров или личных данных на сторонние серверы. При использовании локальных STT, LLM и TTS данные остаются внутри домашней сети.

Удобство

Личный бэкенд может связывать голосовые команды с вашими локальными сервисами:

  • Home Assistant;
  • Nextcloud (календарями, задачами);
  • музыкальными сервисами (Jellyfin и др.);
  • собственными скриптами и API.

Набор доступных интеграций зависит от проекта.

Важно!

Некоторые реализации бэкендов могут частично использовать облачные интеграции, перед установкой внимательно проверяйте как именно реализованы функции, если для вас это важно.

Как работает собственный бэкенд

Колонка взаимодействует с сервером через протоколы, предусмотренные её прошивкой. Для работы голосового ассистента бэкенд состоит из нескольких компонентов:

Quasar — протокольный слой, обеспечивающий обмен данными между колонкой и сервером. Принимает голосовые запросы и другие сообщения от устройства, передаёт их на обработку и отправляет обратно, для собственного бэкенда используется совместимая реализация серверной части протокола Quasar.

STT (Speech-to-Text) — система распознавания речи, преобразующая голос пользователя в текст. Варианты от сообщества: GigaAM.

Процессор (обработчик запросов) — центральный компонент бэкенда, который анализирует распознанный текст и определяет, что необходимо сделать. Может обрабатывать простые команды самостоятельно, обращаться к языковой модели (LLM), управлять умным домом или вызывать другие сервисы.

LLM (Large Language Model) — языковая модель, которая используется для понимания сложных запросов, ведения диалога и генерации ответов. Не является обязательным компонентом: простые команды могут выполняться без нейросети.

TTS (Text-to-Speech) — система синтеза речи, преобразующая текстовый ответ в аудио для воспроизведения на колонке. Варианты от сообщества: Piper

При обработке голосового запроса данные обычно проходят следующую цепочку:

Колонка → Quasar → STT → Процессор → LLM → TTS → Quasar → Колонка

Заметка

Например, при команде «Алиса, включи свет» система распознаёт речь через STT, после чего процессор определяет нужное действие и отправляет команду в Home Assistant. Затем TTS генерирует голосовое подтверждение, которое через Quasar передаётся обратно на колонку.

При этом не все запросы обязательно проходят через LLM или TTS. Например, управление громкостью, воспроизведением музыки и некоторые другие действия могут выполняться напрямую через команды протокола Quasar.

Подробнее: Директивы и capabilities.

Публичные проекты

Ниже перечислены открытые проекты, которые реализуют собственный бэкенд для колонок готовый для использования:

📍Проект 📆Статус ☁ Локально 🏠HA 🎸Музыка 🧿GPU
v3rt3p/quasar-server Развивается ✅ ✅ — Не требуется
amirilivice/quasard ❓ ✅ — ✅ Я.Музыка Требуется
wonderland В разработке ✅ — ✅ Не требуется
AliceCloud В разработке ✅ — ❓ Не требуется

Tip

В зависимости от выбранного проекта подключение может потребовать изменения адресов серверов в конфигурации колонки и перенаправления сетевого трафика. Перед изменением системных файлов рекомендуется сохранить резервную копию данных на колонке и убедиться в возможности восстановления устройства.

Что потребуется

Для развёртывания собственного бэкенда необходимо:

  1. Яндекс Станция с полученным root-доступом
  2. Компьютер или сервер для запуска бэкенда
  3. Сетевое соединение между колонкой и сервером: если сервер удалённый, то нужно настроить VPN в вашу локальную сеть
  4. Настроенные компоненты распознавания речи, обработки команд и синтеза голоса, если они не входят в выбранный проект

Info

Сервер или компьютер должны быть постоянно включены, чтобы функции колонки работаели

Приблизительные требования для компьютера или сервера:

Конфигурация CPU RAM GPU / VRAM
Только бэкенд (без STT, TTS и LLM) 1–2 ядра 512 МБ – 1 ГБ Не требуется
Бэкенд + простые команды, таймеры и интеграции 2–4 ядра 2–4 ГБ Не требуется
Бэкенд + локальные STT и TTS 4–8 ядер 4–8 ГБ Необязательно
Бэкенд + STT, TTS и небольшая LLM 6–8 ядер 16–32 ГБ Желательно 8–12 ГБ VRAM
Полностью локальный ассистент с LLM 7–8B 8+ ядер 32 ГБ Желательно 12–16 ГБ VRAM

Ограничения

Собственный бэкенд не гарантирует сохранения всех штатных функций колонки. При его использовании необходимо учитывать различия протоколов между версиями прошивок, возможную несовместимость с отдельными моделями устройств и требования к производительности оборудования. Также нужно помнить про то, что придётся самостоятельно обслуживать сервер и обновлять программное обеспечение.