VocalisAI - Prototype d’outil local d’analyse de conversations téléphoniques pour la MAIF, développé dans le cadre du use case MAIF – AI4Industry.
- Prétraitement audio (VAD),
- Transcription avec diarisation,
- Synthèse structurée des appels,
- Interface web Flask.
- Python 3.12+ (voir
.python-version/pyproject.toml) - uv (voir https://docs.astral.sh/uv/)
- GPU recommandé (CUDA ou Apple Silicon MPS) pour WhisperX et les modèles LLM
- Hugging Face token (pour PyAnnote / diarisation WhisperX)
- Ollama (voir https://ollama.com/)
- FFmpeg 7 (voir https://www.ffmpeg.org/)
uv syncDans un terminal à part, lancez Ollama:
ollama serveTélécharger le modèle llama3 :
ollama run llama3Configurer le token Hugging Face dans .env (voir exemple .env.sample) :
HF_TOKEN=<token>Depuis la racine du projet :
uv run flask --app web/main.py runL’interface est accessible sur : http://127.0.0.1:5000
-
Accéder à l’interface web
-
Charger un fichier audio (WAV, MP3, FLAC, etc.)
-
Lancer l’analyse
-
Les résultats affichés incluent :
- transcription avec diarisation
- résumé structuré MAIF
- métadonnées audio
.
├── code_tests/ # Scripts et tests exploratoires
├── web/
│ ├── __init__.py
│ ├── main.py # Point d’entrée Flask
│ ├── processor.py # Pipeline principal (audio → texte → résumé)
│ ├── preprocessing.py # Prétraitement audio (VAD rVADfast)
│ ├── summarize.py # Synthèse structurée via LLM
│ ├── patch_lightning.py # Monkey-patch PyTorch / Lightning (compatibilité WhisperX)
│ ├── templates/
│ │ └── index.html # Interface utilisateur
│ └── static/
│ ├── script.js # Logique frontend (upload, requêtes)
│ └── style.css # Styles CSS
├── .env # Variables d’environnement (HF_TOKEN, etc.)
├── .env.sample
├── .gitignore
├── .python-version
├── pyproject.toml
├── uv.lock
└── README.md
- Initialise le serveur Flask
- Gère les routes HTTP
- Orchestration globale du pipeline
- Prétraitement audio
- Voice Activity Detection (rVADfast)
- Normalisation, mono, resampling 16 kHz
- Fallback sécurisé si aucun speech détecté
-
Pipeline principal :
- appel du prétraitement
- transcription WhisperX
- gestion diarisation
- collecte des résultats
-
Extraction des métadonnées audio
- Génération de résumés structurés MAIF
- Utilise
transformers+ modèle LLM local - Format strict (problématique, résumé, actions, etc.)
- Monkey-patch de
lightning_fabric.utilities.cloud_io - Contournement du problème
torch.load(weights_only=True) - Nécessaire avec certaines versions de PyTorch / WhisperX
- Flask
- HTML / CSS / JavaScript
- WhisperX : transcription + diarisation
- PyTorch
- PyAnnote (via WhisperX)
- rVADfast : Voice Activity Detection
- audiofile, librosa, numpy
- transformers
- AutoModelForCausalLM
- Modèles LLM locaux (GPU / MPS)
- python-dotenv
- Pydantic
- Variables d’environnement via
.env
- Les modèles sont téléchargés au premier lancement
- La diarisation nécessite un token Hugging Face
- Le traitement peut être long sur CPU
- Projet prototype / expérimental, non destiné à la production
- Pipeline fonctionnel
- Interface web opérationnelle
- Prétraitement audio robuste
- Optimisations GPU / perfs en cours
- Gestion des erreurs WhisperX dépendante des versions PyTorch
