#!/usr/bin/env bash # Startet die lokalen TTS/STT-Wrapper-Server (services/tts_server.py, # services/stt_server.py) als Hintergrundprozesse auf GPU 2. Überspringt # einen Service, falls er unter seinem Port bereits antwortet. set -euo pipefail DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../services" && pwd)" mkdir -p "$DIR/logs" cd "$DIR" start_if_needed() { local name="$1" port="$2" cmd="$3" if curl -sf -m 2 "http://127.0.0.1:${port}/health" >/dev/null 2>&1; then echo "$name läuft bereits auf Port $port" return fi echo "Starte $name auf Port $port..." eval "$cmd" disown for _ in $(seq 1 15); do curl -sf -m 2 "http://127.0.0.1:${port}/health" >/dev/null 2>&1 && { echo "$name ist bereit."; return; } sleep 2 done echo "WARNUNG: $name antwortet nach 30s nicht auf /health — siehe logs/${name}.log" >&2 } start_if_needed "tts" 8901 \ 'CUDA_VISIBLE_DEVICES=2 TTS_PORT=8901 nohup ~/miniforge3/envs/chatterbox/bin/python tts_server.py > logs/tts_server.log 2>&1 &' start_if_needed "stt" 8902 \ 'CUDA_VISIBLE_DEVICES=2 STT_PORT=8902 nohup python3 stt_server.py > logs/stt_server.log 2>&1 &'