Files
UmbraAudio/tts_server/run_server.sh
2026-10-18 19:01:04 -07:00

41 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright 2026 Umbra Tools (umbratools.com)
# SPDX-License-Identifier: Apache-2.0
# Launch the UmbraAudio Qwen3-TTS server (CUDA/GPU).
#
# Config via env vars (override as needed):
# QWEN_MODELS_DIR - dir holding the 1.7B model subdirs (default ./models)
# QWEN_PROMPT_DIR - dir of cached ICL voice prompts (default ./voice_prompts)
# QWEN_DEVICE - cuda | mps | cpu (default cuda)
# QWEN_PORT - listen port (default 8881)
# QWEN_HOST - bind address (default 0.0.0.0)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
export QWEN_MODELS_DIR="${QWEN_MODELS_DIR:-$SCRIPT_DIR/models}"
export QWEN_PROMPT_DIR="${QWEN_PROMPT_DIR:-$SCRIPT_DIR/voice_prompts}"
export QWEN_DEVICE="${QWEN_DEVICE:-cuda}"
export QWEN_BASE_MODEL="${QWEN_BASE_MODEL:-$QWEN_MODELS_DIR/Qwen3-TTS-12Hz-1.7B-Base}"
export QWEN_VOICEDESIGN_MODEL="${QWEN_VOICEDESIGN_MODEL:-$QWEN_MODELS_DIR/Qwen3-TTS-12Hz-1.7B-VoiceDesign}"
PORT="${QWEN_PORT:-8881}"
HOST="${QWEN_HOST:-0.0.0.0}"
printf 'Device: %s\nBase: %s\nVoice: %s\nPrompts:%s\nPort: %s\n' \
"$QWEN_DEVICE" "$QWEN_BASE_MODEL" "$QWEN_VOICEDESIGN_MODEL" \
"$QWEN_PROMPT_DIR" "$PORT"
# Verify model dirs exist
for d in "$QWEN_BASE_MODEL" "$QWEN_VOICEDESIGN_MODEL"; do
if [ ! -d "$d" ]; then
echo "!! Missing model dir: $d"
echo " Download it (see install_server.sh) or set QWEN_MODELS_DIR."
fi
done
mkdir -p "$QWEN_PROMPT_DIR" "$QWEN_MODELS_DIR"
exec .venv/bin/python qwen_tts_server.py --port "$PORT" --host "$HOST"