mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 22:01:09 +02:00
Add internationalization (DE + EN) to previously missing apps:
- todo: task management translations
- skilltree: skill/XP system translations
- nutriphi: nutrition tracking translations
- planta: plant care translations
- questions: research app translations
- matrix: chat client translations (layout integration)
Each app includes:
- svelte-i18n setup with SSR support
- localStorage persistence ({app}_locale pattern)
- i18n loading state in +layout.svelte
- German (default) and English translations
Updated CONSISTENCY_REPORT.md to mark i18n task as complete.
Also includes:
- mana-tts service placeholder files
150 lines
3.9 KiB
Bash
Executable file
150 lines
3.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# Setup script for Mana TTS service
|
|
# Optimized for Apple Silicon (MLX)
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
VENV_DIR="$SCRIPT_DIR/.venv"
|
|
PYTHON_VERSION="3.11"
|
|
|
|
echo "=========================================="
|
|
echo "Mana TTS Setup"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Check platform
|
|
if [[ "$(uname)" != "Darwin" ]]; then
|
|
echo "Warning: This service is optimized for macOS with Apple Silicon."
|
|
echo "Some features may not work on other platforms."
|
|
echo ""
|
|
fi
|
|
|
|
# Check for Apple Silicon
|
|
if [[ "$(uname -m)" != "arm64" ]]; then
|
|
echo "Warning: This service is optimized for Apple Silicon (arm64)."
|
|
echo "Performance may be reduced on Intel Macs."
|
|
echo ""
|
|
fi
|
|
|
|
# Find Python
|
|
if command -v python3.11 &> /dev/null; then
|
|
PYTHON_CMD="python3.11"
|
|
elif command -v python3 &> /dev/null; then
|
|
PYTHON_CMD="python3"
|
|
else
|
|
echo "Error: Python 3 not found. Please install Python 3.11 or later."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Using Python: $PYTHON_CMD"
|
|
$PYTHON_CMD --version
|
|
echo ""
|
|
|
|
# Check Python version
|
|
PYTHON_MAJOR=$($PYTHON_CMD -c "import sys; print(sys.version_info.major)")
|
|
PYTHON_MINOR=$($PYTHON_CMD -c "import sys; print(sys.version_info.minor)")
|
|
|
|
if [[ $PYTHON_MAJOR -lt 3 ]] || [[ $PYTHON_MINOR -lt 10 ]]; then
|
|
echo "Error: Python 3.10 or later required. Found $PYTHON_MAJOR.$PYTHON_MINOR"
|
|
exit 1
|
|
fi
|
|
|
|
# Create or recreate virtual environment
|
|
if [[ -d "$VENV_DIR" ]]; then
|
|
echo "Virtual environment exists at $VENV_DIR"
|
|
read -p "Recreate it? (y/N) " -n 1 -r
|
|
echo ""
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "Removing existing virtual environment..."
|
|
rm -rf "$VENV_DIR"
|
|
echo "Creating new virtual environment..."
|
|
$PYTHON_CMD -m venv "$VENV_DIR"
|
|
fi
|
|
else
|
|
echo "Creating virtual environment..."
|
|
$PYTHON_CMD -m venv "$VENV_DIR"
|
|
fi
|
|
|
|
# Activate virtual environment
|
|
echo "Activating virtual environment..."
|
|
source "$VENV_DIR/bin/activate"
|
|
|
|
# Upgrade pip
|
|
echo ""
|
|
echo "Upgrading pip..."
|
|
pip install --upgrade pip
|
|
|
|
# Install dependencies
|
|
echo ""
|
|
echo "Installing dependencies..."
|
|
pip install -r "$SCRIPT_DIR/requirements.txt"
|
|
|
|
# Install ffmpeg check (for MP3 support)
|
|
echo ""
|
|
echo "Checking for ffmpeg (required for MP3 output)..."
|
|
if command -v ffmpeg &> /dev/null; then
|
|
echo "ffmpeg found: $(which ffmpeg)"
|
|
else
|
|
echo "Warning: ffmpeg not found. MP3 output will not work."
|
|
echo "Install with: brew install ffmpeg"
|
|
fi
|
|
|
|
# Verify installations
|
|
echo ""
|
|
echo "Verifying installations..."
|
|
|
|
# Test FastAPI
|
|
python -c "import fastapi; print(f'FastAPI {fastapi.__version__}')" || {
|
|
echo "Error: FastAPI not installed correctly"
|
|
exit 1
|
|
}
|
|
|
|
# Test soundfile
|
|
python -c "import soundfile; print(f'soundfile {soundfile.__version__}')" || {
|
|
echo "Error: soundfile not installed correctly"
|
|
exit 1
|
|
}
|
|
|
|
# Test MLX (on Apple Silicon)
|
|
if [[ "$(uname -m)" == "arm64" ]]; then
|
|
python -c "import mlx; print(f'MLX {mlx.__version__}')" || {
|
|
echo "Warning: MLX not installed correctly. TTS may not work."
|
|
}
|
|
fi
|
|
|
|
# Test mlx-audio
|
|
python -c "import mlx_audio; print('mlx-audio installed')" 2>/dev/null || {
|
|
echo "Warning: mlx-audio not imported successfully."
|
|
echo "You may need to install it manually or models won't load."
|
|
}
|
|
|
|
# Create directories
|
|
echo ""
|
|
echo "Creating required directories..."
|
|
mkdir -p "$SCRIPT_DIR/voices"
|
|
mkdir -p "$SCRIPT_DIR/mlx_models"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Setup Complete!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "To start the service:"
|
|
echo ""
|
|
echo " cd $SCRIPT_DIR"
|
|
echo " source .venv/bin/activate"
|
|
echo " uvicorn app.main:app --host 0.0.0.0 --port 3022"
|
|
echo ""
|
|
echo "Or for development with auto-reload:"
|
|
echo ""
|
|
echo " uvicorn app.main:app --host 0.0.0.0 --port 3022 --reload"
|
|
echo ""
|
|
echo "Test the service:"
|
|
echo ""
|
|
echo " curl http://localhost:3022/health"
|
|
echo ""
|
|
echo "For Mac Mini deployment, run:"
|
|
echo ""
|
|
echo " ./../../scripts/mac-mini/setup-tts.sh"
|
|
echo ""
|