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:
116
deploy/setup.sh
Executable file
116
deploy/setup.sh
Executable 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 ""
|
||||
Reference in New Issue
Block a user