Initial start-scripts commit

This commit is contained in:
valenti
2026-09-07 19:29:51 +00:00
commit 13c5e7c5aa
16 changed files with 1338 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_DIR="$ROOT_DIR/.venv"
VENV_PYTHON="$VENV_DIR/bin/python"
VENV_PIP="$VENV_DIR/bin/pip"
VIBEVOICE_DIR="${VIBEVOICE_DIR:-/home/azurian/VibeVoice}"
cd "$ROOT_DIR"
if [[ -f ".env" ]]; then
set -a
# shellcheck disable=SC1091
source ".env"
set +a
fi
if [[ ! -x "$VENV_PYTHON" ]]; then
echo "Creating virtual environment in $VENV_DIR"
python3 -m venv "$VENV_DIR"
fi
create_clean_venv() {
echo "Recreating clean virtual environment in $VENV_DIR"
rm -rf "$VENV_DIR"
python3 -m venv "$VENV_DIR"
}
install_project() {
if ! "$VENV_PIP" install -e "$ROOT_DIR"; then
echo "Initial install failed, retrying from a clean virtual environment"
create_clean_venv
"$VENV_PIP" install -e "$ROOT_DIR"
fi
}
ensure_vibevoice_runtime() {
local provider="${TTS_PROVIDER:-vibevoice-1.5b}"
case "${provider,,}" in
vibevoice|vibevoice-1.5b|vibevoice15b)
if ! "$VENV_PYTHON" - <<'PY'
import importlib.util
import sys
sys.exit(0 if importlib.util.find_spec("vibevoice") else 1)
PY
then
if [[ -d "$VIBEVOICE_DIR" ]]; then
echo "Installing local VibeVoice runtime from $VIBEVOICE_DIR"
"$VENV_PIP" install -e "$VIBEVOICE_DIR"
else
echo "VibeVoice runtime is required but $VIBEVOICE_DIR was not found" >&2
exit 1
fi
fi
;;
esac
}
ensure_requirements() {
local missing=0
if ! "$VENV_PYTHON" - <<'PY'
import importlib.util
import sys
required_modules = [
"fastapi",
"uvicorn",
"numpy",
"soundfile",
"tts",
]
missing = [name for name in required_modules if importlib.util.find_spec(name) is None]
if missing:
print("Missing modules:", ", ".join(missing))
sys.exit(1)
PY
then
missing=1
fi
if [[ "$missing" -eq 1 ]]; then
echo "Installing project requirements into .venv"
install_project
fi
}
ensure_requirements
ensure_vibevoice_runtime
exec "$VENV_PYTHON" -m tts.fastapi_app "$@"