#!/usr/bin/env bash set -euo pipefail # Делаем текущий проект доступным для Python SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) export PYTHONPATH="${SCRIPT_DIR}" # Путь к Python-окружению # Приоритет: .venv/ в корне проекта (локальное окружение) VENV_PATH="${SCRIPT_DIR}/.venv" if [ ! -f "${VENV_PATH}/bin/python3" ]; then echo "❌ Виртуальное окружение не найдено: ${VENV_PATH}" >&2 echo "💡 Создайте: python3 -m venv ${VENV_PATH} && source ${VENV_PATH}/bin/activate && pip install -r requirements.txt" >&2 exit 1 fi PY="${VENV_PATH}/bin/python3" # Режим запуска: wake|vad (по умолчанию wake) MODE="${1:-wake}" BASE_ARGS=( --debug --name 'Wyoming Pi Vosk Satellite' --uri tcp://0.0.0.0:10700 --mic-command 'arecord -D plughw:CARD=Array,DEV=0 -q -r 16000 -c 1 -f S16_LE -t raw' --snd-command 'aplay -D plughw:CARD=Array,DEV=0 -q -r 22050 -c 1 -f S16_LE -t raw' --awake-wav /home/sirmrak/projects/Satellite/sounds/awake.wav #--mic-noise-suppression 2 #--mic-auto-gain 20 --event-uri tcp://127.0.0.1:10500 ) if [[ "$MODE" == "wake" ]]; then # Локальный wakeword-сервис (Vosk). VAD в этом режиме не используется спутником. EXTRA_ARGS=( --wake-uri tcp://127.0.0.1:10400 --wake-word-name "привет дроид" \ #--wake-word-name "привет придурок" \ #--wake-word-name "привет жопа с ушами" # Добавьте дополнительные фразы при необходимости: # --wake-word-name "привет дурик" \ # --wake-word-name "привет говнюк" ) elif [[ "$MODE" == "vad" ]]; then # Локальный VAD (WebRTC+энергия) без wakeword-сервиса EXTRA_ARGS=( --vad --vad-system webrtc --vad-trigger-level 5 # ≈100мс при 20мс окне --vad-energy-threshold 200 --vad-buffer-seconds 1 --vad-wake-word-timeout 5 ) else echo "Неизвестный режим: $MODE (ожидается: wake|vad)" >&2 exit 1 fi exec "$PY" -m wyoming_satellite "${BASE_ARGS[@]}" "${EXTRA_ARGS[@]}"