solvox / scripts /download-models.sh
muthuk1's picture
🎀 SolVox: Voice-First Private AI Wallet for Solana β€” Powered by QVAC SDK
945e815 verified
#!/bin/bash
# SolVox Model Downloader
# Downloads all required GGUF/ONNX models for QVAC SDK
# All models are stored locally β€” no cloud required after download.
set -e
MODELS_DIR="./models"
mkdir -p "$MODELS_DIR"
echo "╔══════════════════════════════════════════════════════════╗"
echo "β•‘ SolVox β€” QVAC Model Downloader β•‘"
echo "β•‘ Downloading AI models for 100% local inference β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""
# 1. LLM β€” Llama 3.2 3B Instruct (Q4_K_M quantization, ~2GB)
echo "πŸ“¦ [1/6] Downloading LLM: Llama 3.2 3B Instruct (Q4_K_M)..."
if [ ! -f "$MODELS_DIR/llama-3.2-3b-instruct-q4_k_m.gguf" ]; then
curl -L -o "$MODELS_DIR/llama-3.2-3b-instruct-q4_k_m.gguf" \
"https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q4_K_M.gguf"
echo " βœ“ LLM model downloaded (~2.0 GB)"
else
echo " βœ“ LLM model already exists"
fi
# 2. Embeddings β€” Nomic Embed Text v1.5 (Q4_K_M, ~260MB)
echo "πŸ“¦ [2/6] Downloading Embeddings: Nomic Embed Text v1.5..."
if [ ! -f "$MODELS_DIR/nomic-embed-text-v1.5.Q4_K_M.gguf" ]; then
curl -L -o "$MODELS_DIR/nomic-embed-text-v1.5.Q4_K_M.gguf" \
"https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.Q4_K_M.gguf"
echo " βœ“ Embedding model downloaded (~260 MB)"
else
echo " βœ“ Embedding model already exists"
fi
# 3. Speech-to-Text β€” Whisper Base English (GGML, ~150MB)
echo "πŸ“¦ [3/6] Downloading STT: Whisper Base (English)..."
if [ ! -f "$MODELS_DIR/ggml-base.en.bin" ]; then
curl -L -o "$MODELS_DIR/ggml-base.en.bin" \
"https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin"
echo " βœ“ Whisper model downloaded (~150 MB)"
else
echo " βœ“ Whisper model already exists"
fi
# 4. Text-to-Speech β€” Piper TTS Amy (en_US, medium quality, ONNX, ~75MB)
echo "πŸ“¦ [4/6] Downloading TTS: Piper Amy (en_US, medium)..."
if [ ! -f "$MODELS_DIR/en_US-amy-medium.onnx" ]; then
curl -L -o "$MODELS_DIR/en_US-amy-medium.onnx" \
"https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/amy/medium/en_US-amy-medium.onnx"
curl -L -o "$MODELS_DIR/en_US-amy-medium.onnx.json" \
"https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/amy/medium/en_US-amy-medium.onnx.json"
echo " βœ“ TTS model downloaded (~75 MB)"
else
echo " βœ“ TTS model already exists"
fi
# 5. Translation β€” MarianMT English↔Spanish (OPUS, ~50MB)
echo "πŸ“¦ [5/6] Downloading Translation: EN↔ES..."
if [ ! -f "$MODELS_DIR/translate-en-es.bin" ]; then
echo " β„Ή Translation model requires manual download from LibreTranslate"
echo " Visit: https://github.com/LibreTranslate/LibreTranslate"
echo " Or use QVAC's bundled translation models (see docs.qvac.tether.io)"
touch "$MODELS_DIR/translate-en-es.bin.placeholder"
echo " ⚠ Placeholder created β€” install actual model for translation"
else
echo " βœ“ Translation model already exists"
fi
# 6. OCR β€” PaddleOCR v4 (ONNX, ~30MB)
echo "πŸ“¦ [6/6] Downloading OCR: PaddleOCR v4..."
if [ ! -f "$MODELS_DIR/ppocr-v4.onnx" ]; then
echo " β„Ή OCR model requires QVAC's bundled OCR models"
echo " See: https://docs.qvac.tether.io/addons/ocr-onnx/"
touch "$MODELS_DIR/ppocr-v4.onnx.placeholder"
echo " ⚠ Placeholder created β€” install actual model for OCR"
else
echo " βœ“ OCR model already exists"
fi
echo ""
echo "╔══════════════════════════════════════════════════════════╗"
echo "β•‘ Download Complete! β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""
echo "Model directory: $MODELS_DIR"
echo ""
ls -lh "$MODELS_DIR"
echo ""
echo "Next steps:"
echo " 1. npm install"
echo " 2. npm run dev"
echo " 3. npm start"