Initial commit: Cosmo Voice Satellite

Two-agent voice assistant (Cosmo + Люся) via OpenClaw Gateway.
Streaming STT (Groq) + LLM + TTS (ElevenLabs) pipeline with
keep-alive sessions, barge-in, and daily conversation sessions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-12 13:34:08 +03:00
commit 7ca8268b78
16 changed files with 1143 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
[Unit]
Description=Cosmo Voice Satellite
After=network-online.target bluetooth.target pulseaudio.service
Wants=network-online.target
[Service]
Type=simple
User=daniil
WorkingDirectory=/home/daniil/home-voice-assistant
ExecStart=/home/daniil/home-voice-assistant/.venv/bin/python -m satellite --wake
Restart=always
RestartSec=5
# Env
EnvironmentFile=/home/daniil/home-voice-assistant/.env
# Audio — доступ к PulseAudio/PipeWire
Environment=XDG_RUNTIME_DIR=/run/user/1000
Environment=PULSE_SERVER=unix:/run/user/1000/pulse/native
# Логи в journalctl
StandardOutput=journal
StandardError=journal
SyslogIdentifier=cosmo
[Install]
WantedBy=multi-user.target

116
deploy/setup.sh Executable file
View File

@@ -0,0 +1,116 @@
#!/usr/bin/env bash
set -euo pipefail
# ============================================================
# Cosmo Voice Satellite — полная установка на Raspberry Pi 5
# Запуск: sudo bash setup.sh
# ============================================================
APP_DIR="/home/daniil/home-voice-assistant"
APP_USER="daniil"
SERVICE_NAME="cosmo-satellite"
echo "========================================"
echo " Cosmo Satellite — установка на Pi 5"
echo "========================================"
# --- 1. Системные пакеты ---
echo ""
echo "▶ 1/6 Устанавливаю системные пакеты..."
apt-get update
apt-get install -y \
python3 \
python3-venv \
python3-dev \
python3-pip \
portaudio19-dev \
libsndfile1 \
pulseaudio \
pulseaudio-module-bluetooth \
bluez \
bluez-tools \
ffmpeg \
git
# --- 2. Python venv ---
echo ""
echo "▶ 2/6 Создаю виртуальное окружение..."
cd "$APP_DIR"
sudo -u "$APP_USER" python3 -m venv .venv
sudo -u "$APP_USER" .venv/bin/pip install --upgrade pip
sudo -u "$APP_USER" .venv/bin/pip install -r requirements.txt
# --- 3. Проверка .env ---
echo ""
echo "▶ 3/6 Проверяю .env..."
if [ ! -f "$APP_DIR/.env" ]; then
echo "❌ Файл .env не найден! Скопируй .env на Pi перед запуском."
exit 1
fi
# Проверяем ключевые переменные
source "$APP_DIR/.env"
if [ -z "${GATEWAY_TOKEN:-}" ]; then
echo "❌ GATEWAY_TOKEN не задан в .env"
exit 1
fi
if [ -z "${GROQ_API_KEY:-}" ]; then
echo "❌ GROQ_API_KEY не задан в .env"
exit 1
fi
echo " .env OK"
# --- 4. Bluetooth (PulseAudio) ---
echo ""
echo "▶ 4/6 Настраиваю Bluetooth audio..."
# Включаем PulseAudio для пользователя (если не systemd --user)
sudo -u "$APP_USER" systemctl --user enable pulseaudio
sudo -u "$APP_USER" systemctl --user start pulseaudio || true
echo " Bluetooth настроен."
echo " Подключи колонку вручную:"
echo " bluetoothctl"
echo " > scan on"
echo " > pair <MAC>"
echo " > connect <MAC>"
echo " > trust <MAC>"
echo ""
echo " После подключения найди sink:"
echo " pactl list sinks short"
echo " И пропиши AUDIO_SINK=bluez_sink.XX_XX_XX.a2dp_sink в .env"
# --- 5. systemd сервис ---
echo ""
echo "▶ 5/6 Устанавливаю systemd сервис..."
cp "$APP_DIR/deploy/cosmo-satellite.service" /etc/systemd/system/${SERVICE_NAME}.service
systemctl daemon-reload
systemctl enable ${SERVICE_NAME}
echo " Сервис установлен: ${SERVICE_NAME}"
# --- 6. Проверка ---
echo ""
echo "▶ 6/6 Проверяю установку..."
sudo -u "$APP_USER" "$APP_DIR/.venv/bin/python" -c "
from satellite.config import GATEWAY_URL, AGENT
print(f' Gateway : {GATEWAY_URL}')
print(f' Агент : {AGENT}')
print(' Python imports OK')
"
echo ""
echo "========================================"
echo " Установка завершена!"
echo "========================================"
echo ""
echo "Команды:"
echo " sudo systemctl start ${SERVICE_NAME} # запустить"
echo " sudo systemctl stop ${SERVICE_NAME} # остановить"
echo " sudo systemctl restart ${SERVICE_NAME} # перезапустить"
echo " sudo journalctl -u ${SERVICE_NAME} -f # логи в реальном времени"
echo " cat ${APP_DIR}/errors.log # лог ошибок"
echo ""
echo "Не забудь:"
echo " 1. Подключить BT колонку и прописать AUDIO_SINK в .env"
echo " 2. Прописать PORCUPINE_KEY и WAKE_WORD_MODEL в .env"
echo " 3. Затем: sudo systemctl start ${SERVICE_NAME}"
echo ""