Spaces:
Running
Running
File size: 4,471 Bytes
3e08670 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | #!/usr/bin/env python3
"""
Script de vérification et configuration du projet MMS ASR/TTS
"""
import os
import sys
from pathlib import Path
def check_files():
"""Vérifie que tous les fichiers requis existent"""
required_files = [
"app.py",
"requirements.txt",
"Dockerfile",
"README.md",
"DEPLOYMENT.md",
]
print("📋 Vérification des fichiers...")
missing = []
for file in required_files:
if Path(file).exists():
print(f" ✅ {file}")
else:
print(f" ❌ {file} (manquant)")
missing.append(file)
return len(missing) == 0
def check_dependencies():
"""Vérifie les dépendances Python"""
print("\n📦 Vérification des dépendances...")
required_packages = {
"flask": "Flask (API web)",
"torch": "PyTorch (ML)",
"transformers": "Hugging Face Transformers",
"librosa": "Audio processing",
}
for package, description in required_packages.items():
try:
__import__(package)
print(f" ✅ {package:15} - {description}")
except ImportError:
print(f" ❌ {package:15} - {description} (non installé)")
def show_quick_start():
"""Affiche le guide de démarrage rapide"""
print("\n" + "="*60)
print("🚀 GUIDE DE DÉMARRAGE RAPIDE")
print("="*60)
print("""
1️⃣ Installation des dépendances:
pip install -r requirements.txt
2️⃣ Lancement de l'API:
python app_v2.py
# Ou: bash run.sh
3️⃣ Test des endpoints (dans un autre terminal):
python examples.py
# Ou avec curl:
curl http://localhost:7860/health
curl http://localhost:7860/supported-languages
curl -X POST -H "Content-Type: application/json" \\
-d '{"text": "Hello", "language": "eng"}' \\
http://localhost:7860/tts --output audio.wav
4️⃣ Déploiement sur Hugging Face Spaces:
- Voir DEPLOYMENT.md pour les instructions détaillées
📂 Structure du projet:
.
├── app.py # API Flask principale (v1)
├── app_v2.py # API Flask optimisée (v2) ⭐ RECOMMANDÉ
├── requirements.txt # Dépendances
├── Dockerfile # Conteneur Docker
├── docker-compose.yml # Orchestration Docker
├── client.py # Client Python pour tester
├── examples.py # Exemples d'utilisation
├── test_api.py # Tests unitaires
├── run.sh # Script de lancement
├── README.md # Documentation générale
└── DEPLOYMENT.md # Guide de déploiement
🔧 Développement:
pip install -r requirements-dev.txt
pytest test_api.py -v
black .
flake8 .
📚 Documentation:
- App v2 est la version recommandée (meilleure gestion d'erreurs)
- Supporte 100+ langues pour l'ASR
- Supporte 8 langues pour le TTS
- Compatible GPU/CPU
- Cache des modèles pour performance
🌐 Endpoints disponibles:
GET / → Documentation
GET /health → État du service
GET /models-info → Infos détaillées
GET /supported-languages → Langues supportées
POST /asr → Audio → Texte
POST /tts → Texte → Audio (retourne WAV)
📊 Langues TTS:
- beh (Biali)
- bba (Baatombu)
- ddn (Dendi)
- ewe (Éwé)
- gej (Mina)
- tbz (Ditammari)
- yor (Yoruba)
- eng (English)
💡 Tips:
- La première requête peut être lente (chargement des modèles)
- Utilise GPU pour de meilleures performances
- Cache les modèles automatiquement après le chargement
- Limite: 30s pour audio ASR, 1000 chars pour TTS
""")
def main():
"""Fonction principale"""
print("\n🎯 Configuration du projet MMS ASR/TTS\n")
# Vérifie les fichiers
files_ok = check_files()
# Vérifie les dépendances
check_dependencies()
# Affiche le guide de démarrage
show_quick_start()
# Status final
print("\n" + "="*60)
if files_ok:
print("✅ Configuration complète! Prêt à démarrer!")
print("="*60)
print("\n👉 Prochaine étape: python app_v2.py\n")
return 0
else:
print("⚠️ Certains fichiers manquent. Vérifie l'installation.")
print("="*60)
return 1
if __name__ == "__main__":
sys.exit(main())
|