Repository navigation
Expand file tree
/
Copy pathstart.sh
More file actions
executable file
·116 lines (100 loc) · 3.63 KB
/
Copy pathstart.sh
File metadata and controls
executable file
·116 lines (100 loc) · 3.63 KB
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
#!/bin/bash
# Start script for IndexTTS FastAPI wrapper
set -e # Exit on error
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$SCRIPT_DIR"
INDEXTTS_REPO_PATH="${INDEXTTS_REPO_PATH:-$PROJECT_ROOT/index-tts}"
echo ">> Starting IndexTTS FastAPI..."
echo ">> Project root: $PROJECT_ROOT"
# Check if IndexTTS is installed
if [ ! -d "$INDEXTTS_REPO_PATH" ]; then
echo ">> ERROR: IndexTTS repo not found at $INDEXTTS_REPO_PATH"
echo ">> Please run ./scripts/setup.sh first to clone and install IndexTTS"
exit 1
fi
# Check if uv is available (preferred)
if ! command -v uv &> /dev/null; then
echo ">> WARNING: uv is not installed. Install it from https://docs.astral.sh/uv/"
echo ">> Falling back to pip..."
USE_UV=false
else
USE_UV=true
fi
# Set PYTHONPATH to include both IndexTTS and wrapper
export PYTHONPATH="$PROJECT_ROOT:$INDEXTTS_REPO_PATH:$PYTHONPATH"
# Check for virtual environment (prefer project root venv, fallback to IndexTTS venv)
VENV_PYTHON=""
if [ "$USE_UV" = true ]; then
# Prefer project root venv (created by setup.sh)
if [ -d "$PROJECT_ROOT/.venv" ]; then
VENV_PYTHON="$PROJECT_ROOT/.venv/bin/python"
echo ">> Using project root virtual environment"
elif [ -d "$INDEXTTS_REPO_PATH/.venv" ]; then
VENV_PYTHON="$INDEXTTS_REPO_PATH/.venv/bin/python"
echo ">> Using IndexTTS virtual environment"
fi
fi
# Verify and install dependencies if needed
if [ "$USE_UV" = true ]; then
if [ -n "$VENV_PYTHON" ]; then
# Check if IndexTTS is installed in the venv
if ! "$VENV_PYTHON" -c "import indextts" 2>/dev/null; then
echo ">> Installing IndexTTS into virtual environment..."
cd "$INDEXTTS_REPO_PATH"
uv pip install --python "$VENV_PYTHON" -e .
cd "$PROJECT_ROOT"
fi
# Check if wrapper dependencies are installed
if ! "$VENV_PYTHON" -c "import fastapi, uvicorn" 2>/dev/null; then
echo ">> Installing wrapper dependencies..."
cd "$PROJECT_ROOT"
uv pip install --python "$VENV_PYTHON" -e .
fi
else
# No venv found, create one in project root
echo ">> Creating virtual environment..."
cd "$PROJECT_ROOT"
uv venv
VENV_PYTHON="$PROJECT_ROOT/.venv/bin/python"
echo ">> Installing IndexTTS..."
cd "$INDEXTTS_REPO_PATH"
uv pip install --python "$VENV_PYTHON" -e .
echo ">> Installing wrapper dependencies..."
cd "$PROJECT_ROOT"
uv pip install --python "$VENV_PYTHON" -e .
fi
elif command -v pip &> /dev/null; then
# Fallback to pip
if ! python3 -c "import indextts" 2>/dev/null; then
echo ">> Installing IndexTTS..."
cd "$INDEXTTS_REPO_PATH"
pip install -e .
cd "$PROJECT_ROOT"
fi
if ! python3 -c "import fastapi, uvicorn" 2>/dev/null; then
echo ">> Installing wrapper dependencies..."
cd "$PROJECT_ROOT"
pip install -e .
fi
VENV_PYTHON="python3"
else
echo ">> ERROR: Neither uv nor pip is available"
exit 1
fi
# Get port from environment variable, default to 9877
PORT="${INDEXTTS_PORT:-9877}"
HOST="${INDEXTTS_HOST:-0.0.0.0}"
# Run the API
echo ">> Starting API server on http://${HOST}:${PORT}"
echo ">> API docs will be available at http://localhost:${PORT}/docs"
echo ">> Press Ctrl+C to stop"
echo ""
# Use the virtual environment Python if available
cd "$PROJECT_ROOT"
export INDEXTTS_PORT="$PORT"
export INDEXTTS_HOST="$HOST"
if [ -n "$VENV_PYTHON" ]; then
"$VENV_PYTHON" -m indextts_fastapi.api
else
python3 -m indextts_fastapi.api
fi