Skip to content

v1.1.0 - MLX Backend Support for Apple Silicon

Latest

Choose a tag to compare

@mmaudet mmaudet released this 08 Nov 13:22
· 3 commits to main since this release

🚀 What's New in v1.1.0

MLX Backend Support for macOS Apple Silicon

This release adds native MLX backend support for macOS with Apple Silicon, providing 2-5x faster performance compared to Docker/CPU.

🍎 Key Features

Automatic Backend Detection

  • MLX (macOS Metal GPU) - Preferred on Apple Silicon
  • PyTorch (CUDA/CPU) - Fallback for other platforms
  • Dummy - Test mode when no backends available

No configuration needed - the API automatically uses the best available backend!

Native macOS Installation

./install-macos-mlx.sh
source venv-moshi-mlx/bin/activate
python3 -m uvicorn app:app --host 0.0.0.0 --port 8000

🎙️ Enhanced Voice Support

  • 44 voice presets from 4 collections:
    • VCTK: 10 British English speakers
    • CML-TTS: 10 high-quality French speakers
    • Expresso: 9 English voices with emotions (happy, angry, calm, etc.)
    • EARS: 14 diverse English speakers
  • New /api/v1/voices endpoint to list all available voices

⚡ Performance Improvements

MLX Backend (Apple Silicon)

  • Model loading: ~0.5 seconds (10x faster than Docker)
  • Synthesis speed: 2-3x real-time
  • Direct Metal GPU access (no virtualization overhead)

GitHub Actions

  • Docker builds now use cache: 5-10x faster on subsequent runs
  • Reduced CI/CD time from ~10min to ~1-2min (with cache)

📦 Installation Methods

macOS (MLX - Recommended for Apple Silicon):

git clone https://github.com/mmaudet/moshi-tts-api.git
cd moshi-tts-api
./install-macos-mlx.sh
source venv-moshi-mlx/bin/activate
python3 -m uvicorn app:app --host 0.0.0.0 --port 8000

Docker (GPU):

docker pull mmaudet/moshi-tts-api:1.1.0
docker run -d -p 8000:8000 --gpus all mmaudet/moshi-tts-api:1.1.0

Docker (CPU):

docker pull mmaudet/moshi-tts-api:1.1.0
docker run -d -p 8000:8000 mmaudet/moshi-tts-api:1.1.0

🔧 Requirements

  • Python: 3.10, 3.11, or 3.12 (for MLX)
  • macOS: Apple Silicon (M1/M2/M3/M4/M5) for MLX backend
  • Linux/Windows: CUDA or CPU for PyTorch backend

📝 API Changes

  • Health endpoint now reports backend type: "mlx (Metal GPU)", "cuda (GPU)", or "cpu"
  • Endpoint naming updated from /api/v1/synthesize to /api/v1/tts for consistency
  • New /api/v1/voices endpoint to list all 44 voice presets

🐛 Bug Fixes

  • Python version compatibility check prevents errors with Python 3.13+
  • Clear error messages guide users to install compatible Python versions
  • Improved installation script with better error handling

📊 Benchmarks

Synthesis of 5.5s audio (French):

  • MLX (M2): 12.88s (2.3x real-time)
  • Docker CPU: ~60s (11x real-time)
  • Docker GPU: ~15s (2.7x real-time)

🙏 Acknowledgments

📚 Documentation


Full Changelog: v1.0.0...v1.1.0