Files

🎙️ Effi-STT

Speech-to-Text API compatible OpenAI pour Effi Solution maison avec faster-whisper

🎯 Objectif

Fournir une API STT (Speech-to-Text) 100% compatible avec l'API OpenAI, fonctionnant parfaitement avec Open WebUI.

✅ Caractéristiques

  • API OpenAI 100% compatible - Endpoints /v1/audio/transcriptions et /health
  • Basé sur faster-whisper - Rapide et efficace
  • Support multi-langues - Français, anglais, et 99+ langues
  • Dockerisé - Déploiement simple avec Docker Compose
  • Extensible - Code propre et modulaire

🚀 Installation rapide

Prérequis

  • Docker et Docker Compose
  • ~3GB d'espace disque (pour le modèle large-v3)

Déploiement

# Cloner ou copier le dossier effi-stt
cd effi-stt

# Builder et démarrer
sudo docker compose up -d --build

# Attendre le téléchargement du modèle (3-5 min)
echo "⏳ Téléchargement du modèle..."
sleep 180

# Vérifier les logs
sudo docker logs effi-stt --tail 20

# Tester
curl http://localhost:8200/health
curl -X POST http://localhost:8200/v1/audio/transcriptions \
  -F "file=@test.mp3" \
  -F "language=fr"

⚙️ Configuration

Variables d'environnement

Variable Défaut Description
MODEL_SIZE large-v3 Taille du modèle (tiny, base, small, medium, large-v3)
DEVICE cpu Device (cpu, cuda, auto)
COMPUTE_TYPE int8 Type de calcul (int8, float16, float32)
LANGUAGE fr Langue par défaut
CPU_THREADS 4 Nombre de threads CPU
PORT 8200 Port d'écoute
HOST 0.0.0.0 Host d'écoute

Modèles disponibles

Modèle Taille Qualité Vitesse
tiny 39 MB Basse Très rapide
base 74 MB Moyenne Rapide
small 244 MB Bonne Modérée
medium 769 MB Très bonne Lente
large-v3 3.1 GB Excellente Très lente

🔧 Configuration Open WebUI

Admin Panel → Settings → Audio

STT:
  Engine: OpenAI
  URL: http://192.168.1.11:8200/v1
  Model: whisper-1
  Language: fr

🧪 Tests

# Test health
curl http://localhost:8200/health

# Test transcription
curl -X POST http://localhost:8200/v1/audio/transcriptions \
  -F "file=@audio.mp3" \
  -F "language=fr" \
  -F "response_format=json"

# Test avec format texte
curl -X POST http://localhost:8200/v1/audio/transcriptions \
  -F "file=@audio.mp3" \
  -F "language=fr" \
  -F "response_format=text"

📁 Structure du projet

effi-stt/
├── main.py              # Serveur FastAPI
├── Dockerfile           # Image Docker
├── docker-compose.yml   # Configuration Docker Compose
├── requirements.txt     # Dépendances Python
└── README.md           # Documentation

🚀 Améliorations futures (TODO)

  • Support GPU ROCm pour AMD
  • Streaming des résultats (transcription en temps réel)
  • Support du format SRT/VTT avec timestamps
  • Endpoint de détection de langue
  • Métriques et monitoring (Prometheus)
  • Support de la traduction (transcribe + translate)

📝 Notes

  • Le modèle est téléchargé automatiquement au premier démarrage
  • Le cache est persisté dans un volume Docker
  • En CPU sur Intel J5040: ~5-10s pour 5s d'audio avec large-v3

🏗️ Développement

# Mode développement (hors Docker)
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py

# Build Docker manuel
sudo docker build -t effi-stt:local .
sudo docker run -p 8200:8200 effi-stt:local

Créé avec ❤️ pour Effi