Files
wiki/Catalogue-Self-Hosted/apps/app-speaches.md
T
2026-06-09 18:40:21 +02:00

8.4 KiB
Raw Blame History


title: Speaches created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, artificial-intelligence, stt, tts, whisper, openai-compatible, audio, python, mit] confidence: high contested: false sources: [https://selfh.st/apps/?tag=artificial-intelligence, https://github.com/speaches-ai/speaches]

Speaches 🎙️

Le « Ollama du son » — serveur OpenAI-compatible pour la transcription vocale (STT) et la synthèse vocale (TTS), basé sur faster-whisper, Piper et Kokoro, 100 % local et auto-hébergé.

Métadonnée Valeur
Site web https://speaches.ai/
GitHub https://github.com/speaches-ai/speaches
License MIT
Langage Python (99 %)
Étoiles 399
Dernière MAJ 2025-12-27 (v0.9.0-rc.3)
Catégorie cat-artificial-intelligence

📝 Description

Speaches (jeu de mots sur speech + es) est un serveur HTTP compatible avec l'API OpenAI Audio (/v1/audio/transcriptions, /v1/audio/translations, /v1/audio/speech) qui s'installe en une ligne de Docker et accepte n'importe quel client OpenAI existant : Home Assistant, Open WebUI, Cody, Continue, n8n, scripts Python avec le SDK openai>=1.0, applications ESP32 de transcription, etc. Le slogan officiel est « Ollama, but for TTS/STT models » : on télécharge un modèle à la demande, il est chargé dynamiquement en GPU/CPU/RAM, utilisé, puis déchargé après inactivité pour libérer la VRAM.

Côté STT (speech-to-text), Speaches utilise faster-whisper (le port CTranslate2 de Whisper, 4 à 6× plus rapide que le Python original) avec diarisation pyannote (identification du locuteur). Tous les modèles Whisper sont supportés : tiny, base, small, medium, large-v3, turbo, et les distil-whisper distillés. Le streaming SSE envoie la transcription au fur et à mesure — utile pour sous-titrer un direct ou afficher le live-caption dans un dashboard. Côté TTS (text-to-speech), deux backends au choix : Piper (modèles on-device, voix offline très légères, ~15 Mo par voix, multilingue) et Kokoro-82M (Rank #1 du TTS Arena HuggingFace, qualité proche de XTTS/OpenAI TTS, modèles EN/ZH/JA/ES/FR/IT/PT/HI).

Le projet est très actif : 3 400 , 740 commits, 35 contributeurs, 9 releases, soutenu par le mainteneur principal Fedir Zadniprovskyi (également mainteneur d'faster-whisper). Speaches supporte GPU (CUDA) et CPU, propose une Realtime API pour la conversation bidirectionnelle (micro → STT → LLM → TTS → haut-parleur, façon Voice Mode de ChatGPT), et un CLI (speaches-cli) avec alias de commandes pour scripter facilement. C'est aujourd'hui la référence self-hosted pour remplacer l'audio OpenAI sans payer au token.

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
services:
  speaches:
    image: ghcr.io/speaches-ai/speaches:latest
    container_name: speaches
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - speaches-models:/root/.cache/huggingface
    environment:
      - TZ=Europe/Paris
      - WHISPER_MODEL=base        # tiny/base/small/medium/large-v3/turbo
      - WHISPER_COMPUTE_TYPE=int8  # int8/int8_float16/float16/float32
      - KOKoro_MODEL=hexgrad/Kokoro-82M
      - PIPER_VOICE=en_US-amy-low  # voix Piper par défaut
      - ENABLE_DIARIZATION=true   # nécessite HF_TOKEN + pyannote accept
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]  # commenter pour CPU-only
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8000/health"]
      interval: 30s
      timeout: 5s
      retries: 3

volumes:
  speaches-models:

Pour CPU uniquement (sans GPU), supprimez le bloc deploy.resources — Speaches tournera avec int8 par défaut et sera ~3× plus lent qu'en CUDA. Le premier téléchargement d'un modèle Whisper ou Kokoro prend 30 s à 2 min selon la bande passante.

Option 2 : Installation manuelle

Prérequis : Python 3.11+, ffmpeg dans le PATH, CUDA Toolkit 12.x (optionnel). Clone, uv sync (le projet utilise uv au lieu de pip), puis uv run speaches. L'image Docker officielle utilise nvidia/cuda comme base pour gagner 2-4 Go par rapport à un pytorch complet. Voir la doc d'install pour les détails Nix et les configs CDI (Container Device Interface).

⚙️ Configuration

Speaches se configure par variables d'environnement ou fichier .env :

  • WHISPER_MODEL : nom du modèle (défaut base, recommandé small ou turbo pour un bon compromis vitesse/qualité).
  • WHISPER_COMPUTE_TYPE : précision (int8 = CPU-friendly, float16 = GPU).
  • KOKORO_MODEL : modèle TTS HuggingFace à précharger.
  • PIPER_VOICE : voix Piper par défaut (voix FR : fr_FR-siwis-medium, voix EN : en_US-amy-low).
  • ENABLE_DIARIZATION=true + HF_TOKEN (token HuggingFace + acceptation des conditions pyannote/speaker-diarization-3.0 sur la page modèle).
  • UVICORN_HOST=0.0.0.0 / UVICORN_PORT=8000 (rare à changer).

Test rapide après install :

# Transcrire un fichier
curl -X POST http://localhost:8000/v1/audio/transcriptions \
  -F file=@podcast.mp3 -F model=base

# Générer de la parole
curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"input":"Bonjour le monde","voice":"fr","model":"kokoro"}' \
  --output bonjour.wav

🔄 Alternatives

Open Source

  • Whisper.cpp — moteur bas-niveau C++ (utilisé par Speaches en interne via faster-whisper), pas de serveur HTTP out-of-the-box.
  • WhisperX — Whisper + diarisation + word-level alignment, pas d'API REST propre.
  • Faster-WhisperServer (fedirz) — ancêtre simplifié de Speaches, sans TTS.
  • Piper (sans wrapper serveur) — moteur TTS brut, à intégrer manuellement.
  • OpenVoice, Coqui TTS (XTTS) — TTS multi-langue avec clonage de voix, plus lourds.
  • Coqui Studio — fermé depuis 2024.
  • app-ollama — pour les LLM ; Speaches complète le trio LLM + STT + TTS.

Propriétaires (ce que Speaches remplace)

  • OpenAI Whisper API ($0.006/min) — Speaches large-v3 local est gratuit et équivalent qualité.
  • OpenAI TTS API ($15/1M caractères) — Kokoro-82M est gratuit et classé #1 sur le TTS Arena.
  • ElevenLabs ($5-$330/mois) — clonage de voix excellent, mais cloud et cher.
  • Google Cloud Speech / Azure Speech — APIs enterprise, facturation à l'usage.
  • AssemblyAI — diarisation cloud de référence, latence <500 ms.

🔐 Sécurité

  • Exposé sans auth par défaut : Speaches n'a aucun système d'authentification intégré. Placez-le derrière un reverse-proxy authentifié (Authelia, Authentik, oauth2-proxy) ou un VPN/Tailscale — sinon n'importe qui peut l'utiliser (et consommer votre GPU !).
  • Reverse proxy HTTPS (Caddy/Traefik) — les flux audio sont souvent considérés comme personnels.
  • HF_TOKEN : si vous activez la diarisation, le token est passé au runtime, ne le logguez pas (Speaches ne le fait pas par défaut).
  • Modèles volumineux : large-v3 = 3 Go, Kokoro-82M = 330 Mo. Prévoyez un volume dédié (speaches-models ici) sur un disque rapide (SSD/NVMe), pas sur un partage NFS lent.
  • FFmpeg : vulnérabilités régulières, gardez l'image Docker à jour (docker compose pull mensuel) — Speaches est basé sur nvidia/cuda qui reçoit les patchs de sécurité upstream.

📚 Ressources

Pages Liées