quasard: свой сервер вместо облака¶
quasard от @amirilivice заменяет облако Алисы целиком. Колонка считает, что говорит с Яндексом, но активация, разговор и музыка идут через ваш сервер, наружу станция больше не ходит.
Основная информация¶
- 🛠️ Тип: Полноценный бэкенд
- 🚀 Статус: ❔
- 📱 Совместимость: ❔
- 🔒 Автономность: Локальный с облачными функциями
- 🗣️ Голосовой ассистент: ✅ Любая OpenAPI совместимая LLM
- 🧮 Активация ближайшей колонки: ❔
- 🎵 Музыка: ✅ Я.Музыка
- 🔊 Мультирум: ❔
- 🧮 Активация ближайшей: ❔
- **🎧 Bluetooth: ✅
- 🔊 Мультирум: ❔
- 🏠 Умный дом: ❌
- ⏰ Таймеры и будильники: ❔
- 🔔 Напоминания: ❔
- 📅 Календарь: ❔
- 🌤️ Погода: ❔
- 📢 Уведомления: ❌
- 📞 Звонки: ❌
✅ — работает, в т.ч. аналогично штатной Алисе¶
🟡 — реализовано частично или с ограничениями¶
❌ — не реализовано¶
❔ — не проверено¶
- ⚙️ CPU: 6 ядер
- 🧮 RAM: 16 ГБ
- 💽 Диск: 30 ГБ
- 🎮 GPU: Требуется
- 💾 VRAM: 8 ГБ
Как это работает¶
flowchart LR
S["Станция"] -->|"домены Яндекса<br>уведены на свой DNS"| H
S -->|"вопрос голосом"| V
T -->|"ответ голосом"| S
subgraph server["Сервер quasard"]
direction TB
H["Активация и настройки<br>вместо облака Яндекса"]
V["Распознавание<br>Silero VAD + GigaAM"] --> L["Модель<br>OpenAI-совместимая"]
L --> T["Синтез речи<br>F5-TTS или Edge TTS"]
end
- Активация без облака. Сервер сам отвечает на запросы входа, регистрации, синхронизации, списка устройств и метрик. Обновления прошивки заблокированы, чтобы колонка не перешла на версию, которая всё сломает.
- Оба формата голосового соединения. На прошивках около 1.56 это JSON, на 3.x — двоичный protobuf. Формат определяется по первому кадру; схемы для 3.x восстановлены из прошивки и лежат в репозитории.
- Распознавание — GigaAM v3, модель сразу расставляет пунктуацию, конец фразы ловит Silero VAD. Занимает около 1 ГБ видеопамяти.
- Ответы — любой OpenAI-совместимый API: Groq, Ollama, vLLM, LM Studio. История
диалога сохраняется, характер задаётся в файле
system_prompt.txtрядом с конфигом и перечитывается на лету. - Ответ озвучивается по фразам. Текст модели режется по знакам препинания, первая готовая фраза уходит на колонку, пока модель дописывает остальное, поэтому станция начинает говорить почти без паузы.
- Голос — клон по образцу на 10–15 секунд (F5-TTS, русские веса ESpeech, около 3,4 ГБ видеопамяти). Запасной вариант без видеокарты — Edge TTS.
- Музыка из Яндекс Музыки: «Моя волна», поиск по исполнителю, треку и альбому, «дальше», «назад», лайк, пауза, «что сейчас играет».
- Быстрые команды без модели: громкость, «стоп», bluetooth, сброс диалога.
Облачного умного дома и сценариев Яндекса при этом нет, и голос отвечает не Алисин. Зато всё работает без аккаунта и без интернета — кроме самой модели и музыки, если они облачные. Гибрид «своя модель для разговоров, облако для остального» на этой основе собрать можно: сервер уже разбирает оба формата соединения и видит распознанный текст, не хватает только проксирования остальных запросов в Яндекс.
Что понадобится¶
- Windows или Linux с видеокартой NVIDIA. Проверялось на RTX 5080 с 16 ГБ.
- Python 3.12, uv и ffmpeg.
- Роутер, на котором домены Яндекса уводятся на этот компьютер, принудительный DNS и сертификат, которому доверяет колонка. Настройка с примерами для OpenWrt описана в документации проекта.
- Ключ к облачной модели — по умолчанию бесплатный Groq — или своя локальная модель.
Как запустить¶
Склонируйте репозиторий и поднимите сервер:
Сервер слушает порты 80 и 443 — на них роутер и уводит домены Яндекса. Остальное есть в
README проекта, там же лежит start.ps1
для Windows.
Проверить сервер без колонки помогают имитаторы из каталога tools: activation_sim.py
повторяет активацию, station_sim.py --text "Привет" — разговор, fake_llm.py отвечает
вместо модели, если ключа ещё нет.
Ограничения¶
- Прямые ссылки Яндекс Музыки отдаются через переадресацию, и сервер проходит её за колонку: плеер старой прошивки переадресацию не понимает.
- Скорость и качество голоса упираются в видеокарту: на слабой первая фраза приходит через одну-две секунды.
- У бесплатных тарифов облачных моделей есть суточный лимит запросов.
Ссылки¶
📖 Документация 📚 Проект