File size: 5,127 Bytes
71e110b aaf211e 71e110b aaf211e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | #!/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 ""
|