Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+144
View File
@@ -0,0 +1,144 @@
---
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é)
```yaml
# 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](https://speaches.ai/installation/) 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 :
```bash
# 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
- [GitHub speaches-ai/speaches](https://github.com/speaches-ai/speaches)
- [Site officiel](https://speaches.ai/)
- [Documentation](https://speaches.ai/installation/)
- [Demo Realtime API](https://speaches.ai/usage/realtime-api)
- [Kokoro-82M sur HuggingFace](https://huggingface.co/hexgrad/Kokoro-82M)
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [Piper TTS](https://github.com/rhasspy/piper)
## 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