Files
home-voice-assistant/deploy/setup.sh
Daniil Klimov 780f6f0084 Switch wake word from Porcupine to openwakeword + training pipeline
- Add training/ pipeline (step_1..step_5) and own-samples flow
- record_wav.py with single-shot and long-record modes, RMS-based silence filter
- remove_silent.py to drop silent samples and renumber
- modes.py: openwakeword inference with reset() and quiet predictions; commented Lusya block for later
- stt.py: drop local faster-whisper fallback, Groq-only
- config.py: remove unused STT_PROVIDER/WHISPER_*
- llm.py: replace __import__("os") hack with proper import
- tts.py: remove debug traceback in play_error_sound
- requirements.txt: add openwakeword/sounddevice/scipy, drop faster-whisper
- deploy/setup.sh: validate ELEVENLABS_API_KEY and WAKE_WORD_COSMO presence
- README.md, CLAUDE.md, project_roadmap memory updated to reflect new architecture
2026-04-13 15:40:44 +03:00

127 lines
4.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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
if [ -z "${ELEVENLABS_API_KEY:-}" ]; then
echo "❌ ELEVENLABS_API_KEY не задан в .env"
exit 1
fi
if [ -z "${WAKE_WORD_COSMO:-}" ] || [ ! -f "$APP_DIR/${WAKE_WORD_COSMO}" ]; then
echo "❌ WAKE_WORD_COSMO не задан или файл .onnx не найден"
echo " Обучи модель локально (training/step_4.py) и положи .onnx в data/models/"
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. Положить обученную модель в data/models/cosmo.onnx и прописать"
echo " WAKE_WORD_COSMO=data/models/cosmo.onnx в .env"
echo " 3. Затем: sudo systemctl start ${SERVICE_NAME}"
echo ""