8.4 KiB
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éfautbase, recommandésmallouturbopour 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-v3local 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-modelsici) 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 pullmensuel) — Speaches est basé surnvidia/cudaqui reçoit les patchs de sécurité upstream.
📚 Ressources
- GitHub speaches-ai/speaches
- Site officiel
- Documentation
- Demo Realtime API
- Kokoro-82M sur HuggingFace
- faster-whisper
- Piper TTS
Pages Liées
- cat-artificial-intelligence — Catégorie AI
- app-ollama — Runtime LLM (équivalent pour le texte)
- app-open-webui — Interface qui peut utiliser Speaches comme provider STT
- app-scriberr — Transcription audio concurrente (Whisper-only, plus simple)
- recettes-docker-compose — Templates Docker
- securisation-home-lab — Reverse proxy, authentification