31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
|
|
#!/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 &'
|