# Cosmo & Люся — Голосовой ассистент дома > Дорожная карта: от теста на маке до продакшн-системы > Обновлено: 2026-04-11 --- ## Текущий статус | Компонент | Статус | |-----------|--------| | Два Gateway (Cosmo :18789, Люся :18790) | ✅ Работает | | systemd units для обоих | ✅ Настроены | | Telegram боты раздельные | ✅ Работает | | Workspace и память перенесены | ✅ Готово | | MacBook нода подключена | ✅ К Cosmo | | Wake words | ✅ "космо", "cosmo" | | TTS Cosmo | ✅ DmitryNeural (муж.) | | TTS Люся | ✅ SvetlanaNeural (жен.) | | ElevenLabs | ❌ Не настроен | | Home Assistant skill | ❌ Не создан | | Pi satellite | ❌ Не начато | --- ## Фаза 1 — Тест голоса на MacBook (сейчас) ### Что работает - MacBook подключён как нода к Cosmo Gateway (:18789) - Wake word "космо" активирует голосовой ввод - Apple Speech распознаёт русскую речь локально (быстро) - TTS через Microsoft Edge — DmitryNeural ### Чек-лист - [ ] Сказать "Космо" → звук активации - [ ] Голосовой вопрос → голосовой ответ - [ ] Проверить что сессия создалась под agent `main` - [ ] Telegram Светы работает параллельно через Люсю (:18790) ### Известные ограничения - Android voice wake **отключен** (только ручной микрофон) - Нет нативного Linux companion app (только headless node host) - Нельзя маршрутизировать voice vs text на разные модели нативно --- ## Фаза 2 — Уникальные голоса (ElevenLabs) ### Зачем Microsoft Edge TTS звучит нормально (7/10), но: - Нельзя клонировать/создать уникальный голос - Ограниченная выразительность - Нет контроля стиля и эмоций ### Сравнение провайдеров | Провайдер | Задержка | Качество | Цена | Кастомный голос | |-----------|----------|----------|------|-----------------| | Microsoft Edge (сейчас) | ~300ms | 7/10 | Бесплатно | ❌ Только пресеты | | ElevenLabs | ~500ms | 10/10 | $5/мес | ✅ Клонирование | | OpenAI TTS | ~400ms | 9/10 | $15/1M chars | ❌ Только пресеты | | Silero (локально) | ~100ms | 6/10 | Бесплатно | ❌ | ### Рекомендация: ElevenLabs **Почему:** Лучшее качество + можно создать уникальные голоса для Cosmo и Люси. **План $5/мес (Starter):** - 30,000 символов/мес (~15 мин речи) - До 10 кастомных голосов - Instant Voice Cloning - Multilingual v2 модель (русский ✅) ### Конфиг для Cosmo ```json { "messages": { "tts": { "auto": "inbound", "provider": "elevenlabs", "elevenlabs": { "apiKey": "", "voiceId": "", "modelId": "eleven_multilingual_v2", "stability": 0.5, "similarityBoost": 0.75, "style": 0.0, "useSpeakerBoost": true, "speed": 1.0, "languageCode": "ru" } } } } ``` ### Конфиг для Люси То же самое, но с другим `voiceId` — женский голос. ### Как создать кастомные голоса 1. Зарегистрироваться на elevenlabs.io 2. Voice Lab → Add Generative or Cloned Voice 3. Для клонирования: загрузить ~1 мин чистого аудио 4. Скопировать Voice ID из настроек голоса 5. Обновить `openclaw.json` обоих инстансов ### Фоллбэк Оставить Microsoft Edge TTS как запасной — если ElevenLabs недоступен или лимит исчерпан. ### Продвинутые возможности В ответах можно менять голос на лету: ``` [[tts:voiceId=XXXXX stability=0.3 speed=1.2]] Текст с другим голосом ``` --- ## Фаза 3 — Оптимизация скорости ### Узкие места (по порядку задержки) | Этап | Текущая задержка | Оптимизация | |------|-----------------|-------------| | STT (речь→текст) | ~200ms (Apple Speech) | ✅ Уже быстро | | Сеть (MacBook→Gateway) | ~10ms (LAN) | ✅ Уже быстро | | LLM ответ | ~2-5 сек (через proxy) | 🔧 Haiku для голоса | | TTS (текст→речь) | ~300ms (Edge) / ~500ms (ElevenLabs) | Приемлемо | | **Итого** | **~3-6 сек** | **Цель: <2 сек** | ### Стратегия ускорения **1. Модель для голосовых сессий** - Сейчас: `claude-code-proxy` (проксирует через Claude Code CLI → медленно) - Для голоса лучше: `anthropic/claude-haiku-4-5` напрямую — в 3-5x быстрее - OpenClaw не может автоматически различать voice vs text - **Решение:** В SOUL.md добавить правило — голосовые ответы короткие (2-3 предложения) - **Альтернатива:** Для критичной скорости — отдельный binding для ноды с override модели **2. Короткие ответы для голоса** Добавить в SOUL.md: ``` ## Голосовые ответы Если сообщение пришло от ноды (не Telegram): отвечай максимально кратко. - 1-3 предложения для простых вопросов - Не используй markdown, списки, таблицы — только текст - Числа произноси словами когда уместно ``` **3. Streaming TTS** OpenClaw поддерживает streaming для Telegram (`streaming: "partial"`). Для голосовых ответов streaming не применяется — ответ генерируется целиком, потом озвучивается. Это ОК для коротких ответов. --- ## Фаза 4 — Raspberry Pi Satellite ### Архитектура ``` Комната Сервер (N100, 192.168.31.103) ┌─────────────────────┐ ┌──────────────────────────────┐ │ Raspberry Pi 5 │ │ Gateway :18789 (Cosmo) │ │ │ WS/LAN │ Gateway :18790 (Люся) │ │ USB микрофон ───► │─────────►│ │ │ OpenClaw node host │ │ Claude Haiku/Sonnet │ │ (headless) │◄─────────│ ElevenLabs TTS │ │ │ аудио │ Web search, exec, memory │ │ ▼ │ │ Home Assistant API │ │ BT колонка Алиса │ │ │ └─────────────────────┘ └──────────────────────────────┘ ``` ### Проблема: нет нативного Linux companion app OpenClaw companion apps есть только для macOS, iOS, Android. На Linux доступен только **headless node host** (`openclaw node run`), который: - ✅ Подключается к Gateway по WebSocket - ✅ Выполняет `system.run` команды - ❌ **Не имеет** STT/TTS/Voice Wake функционала ### Варианты решения для Pi #### Вариант A: Кастомный satellite скрипт (Python) **Плюсы:** Полный контроль, можно два wake word на одном Pi **Минусы:** Нужно писать и поддерживать код, Porcupine платный для кастомных слов Компоненты: - **Wake word:** Picovoice Porcupine ($5/мес за кастомные ключевые слова) - Бесплатно: "пикомон", "терминус" и другие встроенные (русских нет) - Платно: кастомные "космо", "люся" на русском - Альтернатива: openWakeWord (бесплатно, но хуже качество на русском) - **STT:** faster-whisper `small` на CPU (~2-3 сек на Pi 5) или Groq Whisper API (~300ms, нужен интернет) - **Gateway API:** HTTP POST на OpenClaw Gateway - **TTS:** Получаем аудио от OpenClaw (ElevenLabs/Edge) - **Воспроизведение:** aplay через PulseAudio → Bluetooth → Алиса ```python # Упрощённый цикл: while True: if wake_word_detected(): play_activation_sound() audio = record(seconds=6) text = transcribe(audio) # faster-whisper или Groq API response = send_to_openclaw(text) # HTTP API play_tts(response.audio) # аудио от OpenClaw ``` #### Вариант B: OpenClaw node host + внешний STT/wake **Плюсы:** Нативная интеграция с Gateway, сессии видны в UI **Минусы:** Нет готового voice pipeline, нужно дописывать ```bash # Запуск headless node openclaw node run --host 192.168.31.103 --port 18789 ``` Потом отдельный скрипт слушает микрофон и шлёт текст через `openclaw node send`. #### Вариант C: Ждать Linux companion app OpenClaw активно развивается. Возможно появится Linux app с полным voice pipeline. Но это не гарантировано и не скоро. ### Рекомендация: Вариант A (кастомный скрипт) Самый гибкий. Можно: - Два wake word ("космо" → :18789, "люся" → :18790) на одном Pi - Выбрать STT (локальный whisper или облачный Groq) - Полный контроль над audio pipeline - Алиса как BT колонка ### Железо | Компонент | Вариант | Цена | |-----------|---------|------| | Raspberry Pi 5 8GB | rpilocator.com | ~$80 | | USB микрофон | ReSpeaker USB Mic Array (лучше) или любой plug-and-play | 500-3000₽ | | MicroSD 32GB A2 | Samsung EVO | ~500₽ | | БП USB-C 27W | Официальный Pi | ~$12 | | Корпус | Argon ONE v3 (с охлаждением) | ~$25 | | Колонка | Алиса в BT режиме | уже есть ✅ | | **Итого** | | ~$130 + 500₽ | ### STT: локальный vs облачный | Вариант | Задержка | Качество RU | Цена | Офлайн | |---------|----------|-------------|------|--------| | faster-whisper small (Pi 5) | ~2-3 сек | 8/10 | Бесплатно | ✅ | | faster-whisper tiny (Pi 5) | ~1 сек | 6/10 | Бесплатно | ✅ | | Groq Whisper API | ~300ms | 9/10 | Бесплатно (rate limited) | ❌ | | OpenAI Whisper API | ~500ms | 9/10 | $0.006/мин | ❌ | **Рекомендация:** Groq Whisper API (уже настроен в OpenClaw, ключ есть) с фоллбэком на локальный whisper. --- ## Фаза 5 — Home Assistant интеграция ### Что нужно 1. **Long-Lived Token** в Home Assistant 2. **Skill для OpenClaw** — описание API эндпоинтов 3. **Entity ID** для каждого устройства ### Skill файл ``` ~/.openclaw/workspace/skills/home-assistant/SKILL.md ``` Содержимое: - Base URL: `http://:8123` - Авторизация: Bearer token - Основные команды: свет, климат, сцены, сенсоры - Entity map: человекочитаемые имена → entity_id ### Голосовые команды (примеры) - "Космо, включи свет в гостиной" → `POST /api/services/light/turn_on` - "Космо, какая температура дома" → `GET /api/states/sensor.temperature` - "Космо, включи вечерний режим" → `POST /api/services/scene/turn_on` ### Когда делать После переезда в квартиру (Q3 2026) и установки HA + Aqara устройств. --- ## Фаза 6 — Финальная архитектура ``` MacBook ──────────┐ (wake: "космо") │ ▼ iPhone ──────► Gateway :18789 ◄── Telegram (Даниил) (нода) Cosmo (main) Claude Haiku/Sonnet ElevenLabs TTS (муж.) Pi satellite ──┤ (wake: "космо") │ │ │ iPhone Светы ► Gateway :18790 ◄── Telegram (Света) (нода) Люся (wife) Claude Haiku ElevenLabs TTS (жен.) Pi satellite ──┘ (wake: "люся") ``` ### Один Pi — два агента Можно запустить один Pi с двумя wake words: - "космо" → HTTP к :18789 - "люся" → HTTP к :18790 Porcupine поддерживает несколько keyword одновременно. Скрипт определяет какой сработал и шлёт запрос на нужный порт. --- ## Порядок действий ### Сейчас (Фаза 1) - [x] Разделить агентов на два Gateway - [x] Настроить TTS (разные голоса) - [ ] Протестировать голос с MacBook - [ ] Добавить правила коротких ответов в SOUL.md ### Ближайшее (Фаза 2-3) - [ ] Зарегистрироваться на ElevenLabs - [ ] Создать/выбрать голоса для Cosmo и Люси - [ ] Обновить конфиги TTS - [ ] Протестировать качество и задержку - [ ] Оптимизировать модель для голоса ### Среднесрочное (Фаза 4) - [ ] Купить Raspberry Pi 5 + USB микрофон - [ ] Написать satellite скрипт (Python) - [ ] Настроить Porcupine wake words - [ ] Подключить Алису по Bluetooth - [ ] Протестировать полный pipeline - [ ] Автозапуск через systemd ### После переезда (Фаза 5-6) - [ ] Настроить Home Assistant - [ ] Создать HA skill - [ ] Полная голосовая система дома --- ## Ключевые решения | Вопрос | Решение | Почему | |--------|---------|--------| | TTS провайдер | ElevenLabs ($5/мес) | Лучшее качество + кастомные голоса | | STT на Pi | Groq API + whisper фоллбэк | Скорость + надёжность | | Wake word | Picovoice Porcupine | Лучший для кастомных слов | | Модель для голоса | Haiku для простых, Sonnet для сложных | Баланс скорости и качества | | Pi satellite | Кастомный Python скрипт | Полный контроль, два wake word | | Колонка | Алиса по Bluetooth | Уже есть, хорошее качество звука |