dumont-talker / scripts /start.sh
marcosremar2
feat: add warmup to start.sh (5 inferences per service)
aaf211e
Raw
History Blame Contribute Delete
5.13 kB
#!/bin/bash
#
# dumont-talker - Start All Services
#
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
VENDORS_DIR="/workspace/Bar Workspace/vendors"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
success() { echo -e "${GREEN}βœ“${NC} $1"; }
warn() { echo -e "${YELLOW}⚠${NC} $1"; }
header() { echo -e "\n${CYAN}$1${NC}"; }
check_service() {
curl -s "http://localhost:$1$2" > /dev/null 2>&1
}
echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "β•‘ DUMONT-TALKER - START SERVICES β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""
# ============================================================
# 1. WHISPER (STT)
# ============================================================
header "1. Whisper (STT) - Port 8766"
if check_service 8766 "/health"; then
success "Already running"
else
if [ -f "$VENDORS_DIR/whisper/start.sh" ]; then
"$VENDORS_DIR/whisper/start.sh" 8766 &
sleep 5
check_service 8766 "/health" && success "Started" || warn "Starting..."
else
warn "Whisper start script not found"
fi
fi
# ============================================================
# 2. VLLM (LLM)
# ============================================================
header "2. vLLM (LLM) - Port 8000"
if check_service 8000 "/v1/models"; then
success "Already running"
else
if [ -f "$VENDORS_DIR/vllm/start.sh" ]; then
"$VENDORS_DIR/vllm/start.sh" 8000 &
sleep 10
check_service 8000 "/v1/models" && success "Started" || warn "Starting..."
else
warn "vLLM start script not found"
fi
fi
# ============================================================
# 3. MUSETALK (Avatar)
# ============================================================
header "3. MuseTalk (Avatar) - Port 3000"
if check_service 3000 "/api/health"; then
success "Already running"
else
export FFMPEG_PATH=/usr/bin
export HF_HOME=/tmp/hf_home
export PYTHONPATH="$PROJECT_DIR/server:$PYTHONPATH"
cd "$PROJECT_DIR/server"
nohup python3 main.py 3000 > /tmp/dumont-talker.log 2>&1 &
echo $! > /tmp/dumont-talker.pid
echo " Waiting for MuseTalk to load models..."
for i in {1..30}; do
if check_service 3000 "/api/health"; then
success "Started"
break
fi
sleep 4
done
fi
# ============================================================
# STATUS
# ============================================================
header "SERVICE STATUS"
echo ""
printf " %-12s %-8s %s\n" "Service" "Port" "Status"
echo " ──────────────────────────────────"
for svc in "Whisper:8766:/health" "vLLM:8000:/v1/models" "MuseTalk:3000:/api/health"; do
IFS=':' read -r name port endpoint <<< "$svc"
if check_service "$port" "$endpoint"; then
printf " %-12s %-8s ${GREEN}βœ“ Online${NC}\n" "$name" "$port"
else
printf " %-12s %-8s ${YELLOW}β—‹ Offline${NC}\n" "$name" "$port"
fi
done
# ============================================================
# WARMUP (5 inferences per service)
# ============================================================
header "WARMUP (5 inferences each)"
# Warmup Whisper
if check_service 8766 "/health"; then
echo " Warming up Whisper..."
DEMO_AUDIO="$PROJECT_DIR/web/demo_audio.webm"
if [ -f "$DEMO_AUDIO" ]; then
for i in {1..5}; do
curl -s -X POST "http://localhost:8766/inference" \
-F "file=@$DEMO_AUDIO" \
-F "response_format=json" \
-F "language=pt" > /dev/null 2>&1
done
success "Whisper warmed up"
fi
fi
# Warmup vLLM
if check_service 8000 "/v1/models"; then
echo " Warming up vLLM..."
for i in {1..5}; do
curl -s -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{"model":"google/gemma-3-1b-it","messages":[{"role":"user","content":"OlΓ‘"}],"max_tokens":20}' > /dev/null 2>&1
done
success "vLLM warmed up"
fi
# Warmup MuseTalk
if check_service 3000 "/api/health"; then
echo " Warming up MuseTalk..."
DEMO_AUDIO="$PROJECT_DIR/web/demo_audio.webm"
if [ -f "$DEMO_AUDIO" ]; then
for i in {1..3}; do
curl -s -X POST "http://localhost:3000/api/conversation" \
-F "audio=@$DEMO_AUDIO" \
-F "resolution=256" \
-F "batch_size=8" > /dev/null 2>&1
done
success "MuseTalk warmed up"
fi
fi
echo ""
echo " Endpoints:"
echo " β€’ Web UI: http://localhost:3000"
echo " β€’ Logs: /tmp/dumont-talker.log"
echo ""
echo " βœ… All services ready!"
echo ""