Spaces:
Sleeping
Sleeping
Roni Egbu
feat: update models_setup.sh to install Piper TTS and voice models, and set up Python environment
3ddcabb | # Exit on error | |
| set -e | |
| echo "ποΈ Creating directory structure..." | |
| PROJECT_ROOT=$(pwd) | |
| mkdir -p ./models/tts | |
| # --- 1. PIPER TTS BINARY --- | |
| echo "π₯ Installing Piper TTS binary..." | |
| if ! command -v piper &> /dev/null; then | |
| PIPER_URL="https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_x86_64.tar.gz" | |
| wget -q "$PIPER_URL" -O /tmp/piper.tar.gz | |
| sudo tar -xzf /tmp/piper.tar.gz -C /usr/local/bin/ --strip-components=1 | |
| rm /tmp/piper.tar.gz | |
| echo "β Piper installed." | |
| else | |
| echo "β Piper already installed." | |
| fi | |
| # --- 2. PIPER VOICE MODELS (TTS) --- | |
| echo "π₯ Downloading Piper voice models (low quality)..." | |
| cd "$PROJECT_ROOT/models/tts" | |
| # English β ryan low | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/low/en_US-ryan-low.onnx" \ | |
| -O en_US-ryan-low.onnx | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/low/en_US-ryan-low.onnx.json" \ | |
| -O en_US-ryan-low.onnx.json | |
| echo " β English (ryan low)" | |
| # French β siwis low | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/low/fr_FR-siwis-low.onnx" \ | |
| -O fr_FR-siwis-low.onnx | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/low/fr_FR-siwis-low.onnx.json" \ | |
| -O fr_FR-siwis-low.onnx.json | |
| echo " β French (siwis low)" | |
| # German β thorsten low | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/low/de_DE-thorsten-low.onnx" \ | |
| -O de_DE-thorsten-low.onnx | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/low/de_DE-thorsten-low.onnx.json" \ | |
| -O de_DE-thorsten-low.onnx.json | |
| echo " β German (thorsten low)" | |
| # Spanish β mls_10246 low | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx" \ | |
| -O es_ES-mls_10246-low.onnx | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx.json" \ | |
| -O es_ES-mls_10246-low.onnx.json | |
| echo " β Spanish (mls_10246 low)" | |
| # Chinese β huayan x_low (only available quality) | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/x_low/zh_CN-huayan-x_low.onnx" \ | |
| -O zh_CN-huayan-x_low.onnx | |
| wget -q "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/x_low/zh_CN-huayan-x_low.onnx.json" \ | |
| -O zh_CN-huayan-x_low.onnx.json | |
| echo " β Chinese (huayan x_low)" | |
| # --- 3. PYTHON ENVIRONMENT --- | |
| echo "π Setting up Python environment..." | |
| cd "$PROJECT_ROOT/backend" | |
| if [ ! -d "venv" ]; then | |
| python3 -m venv venv | |
| echo "β Virtual environment created." | |
| fi | |
| source venv/bin/activate | |
| pip install --upgrade pip | |
| pip install -r requirements.txt | |
| echo "β Python dependencies installed." | |
| # --- 4. ARGOS TRANSLATE LANGUAGE PAIRS --- | |
| echo "π€ Installing Argos Translate language pairs..." | |
| # Languages: English, French, German, Spanish, Chinese | |
| # Direct pairs are installed where available. | |
| # Pairs without a direct package (e.g. zh<->de) pivot through English at runtime. | |
| python3 - << 'PYEOF' | |
| import argostranslate.package | |
| PAIRS = [ | |
| ("en", "fr"), ("fr", "en"), | |
| ("en", "de"), ("de", "en"), | |
| ("en", "es"), ("es", "en"), | |
| ("en", "zh"), ("zh", "en"), | |
| ("fr", "de"), ("de", "fr"), | |
| ("fr", "es"), ("es", "fr"), | |
| ("de", "es"), ("es", "de"), | |
| ] | |
| print("Updating Argos package index...") | |
| argostranslate.package.update_package_index() | |
| available = argostranslate.package.get_available_packages() | |
| available_map = {(p.from_code, p.to_code): p for p in available} | |
| for src, tgt in PAIRS: | |
| pkg = available_map.get((src, tgt)) | |
| if pkg: | |
| print(f" Installing {src} -> {tgt}...") | |
| argostranslate.package.install_from_path(pkg.download()) | |
| print(f" β {src} -> {tgt}") | |
| else: | |
| print(f" β οΈ No direct package for {src} -> {tgt} (will pivot via English at runtime)") | |
| print("Argos language packs installed.") | |
| PYEOF | |
| # --- 5. SYSTEM DEPENDENCIES CHECK --- | |
| echo "π Checking system dependencies..." | |
| if ! command -v ffmpeg &> /dev/null; then | |
| echo "β οΈ WARNING: FFmpeg not found. Install it with: sudo apt install ffmpeg" | |
| else | |
| echo "β FFmpeg found." | |
| fi | |
| if ! command -v wget &> /dev/null; then | |
| echo "β οΈ WARNING: wget not found. Install it with: sudo apt install wget" | |
| else | |
| echo "β wget found." | |
| fi | |
| echo "-----------------------------------------------" | |
| echo "β Setup complete! All models and language packs ready." | |
| echo "" | |
| echo "π To start the backend:" | |
| echo " cd backend && source venv/bin/activate" | |
| echo " python3 -m app.main" | |
| echo "" | |
| echo "β οΈ NOTE: Whisper model (faster-whisper 'base') downloads automatically" | |
| echo " on first startup (~150MB). Subsequent starts use the cached version." |