#!/bin/bash set -e MODELS_DIR="${MODELS_DIR:-/app/models}" MODEL_BASE_URL="${MODEL_BASE_URL:-}" # Model directories PARAKEET_DIR="parakeet-tdt-0.6b-v3" EOU_DIR="realtime_eou_120m-v1-onnx" DIARIZATION_DIR="diarization" download_from_url() { local name=$1 local url=$2 local dest="$MODELS_DIR/$name" if [ -d "$dest" ] && [ "$(ls -A $dest 2>/dev/null)" ]; then echo "Model $name already exists, skipping..." return 0 fi echo "Downloading $name from URL..." mkdir -p "$dest" curl -L "$url" | tar -xz -C "$dest" --strip-components=1 echo "Downloaded $name successfully" } download_from_hf() { local dest=$1 local repo=$2 local include=${3:-} if [ -d "$dest" ] && [ "$(ls -A $dest 2>/dev/null)" ]; then echo "Model $dest already exists, skipping..." return 0 fi echo "Downloading from Hugging Face ($repo)..." mkdir -p "$dest" if [ -n "$include" ]; then hf download "$repo" --include "$include" --local-dir "$dest" else hf download "$repo" --local-dir "$dest" fi echo "Downloaded to $dest successfully" } # Check if models exist check_models_exist() { [ -d "$MODELS_DIR/$PARAKEET_DIR" ] && \ [ -d "$MODELS_DIR/$EOU_DIR" ] && \ [ -f "$MODELS_DIR/$DIARIZATION_DIR/diar_streaming_sortformer_4spk-v2.onnx" ] } if check_models_exist; then echo "All models present" else mkdir -p "$MODELS_DIR" if [ -n "$MODEL_BASE_URL" ]; then echo "Downloading models from custom URL..." download_from_url "$PARAKEET_DIR" "${MODEL_BASE_URL}/parakeet-tdt-0.6b-v3.tar.gz" download_from_url "$EOU_DIR" "${MODEL_BASE_URL}/realtime_eou_120m-v1-onnx.tar.gz" download_from_url "$DIARIZATION_DIR" "${MODEL_BASE_URL}/diarization.tar.gz" else echo "Downloading models from Hugging Face..." # Parakeet TDT from istupakov/parakeet-tdt-0.6b-v3-onnx download_from_hf "$MODELS_DIR/$PARAKEET_DIR" "istupakov/parakeet-tdt-0.6b-v3-onnx" # EOU model from altunenes/parakeet-rs (subdirectory) download_from_hf "$MODELS_DIR/$EOU_DIR" "altunenes/parakeet-rs" "realtime_eou_120m-v1-onnx/*" # Diarization model from altunenes/parakeet-rs (subdirectory) download_from_hf "$MODELS_DIR/$DIARIZATION_DIR" "altunenes/parakeet-rs" "diarization/*" fi echo "All models downloaded successfully" fi # Execute the main command exec "$@"