Spaces:
Runtime error
Runtime error
File size: 3,800 Bytes
ace640b 96f87e4 ace640b c23173c 1e38ef8 c23173c 1e38ef8 c23173c 1e38ef8 c23173c 1e38ef8 c23173c 1e38ef8 c23173c 1e38ef8 c23173c 1e38ef8 c23173c 1e38ef8 |
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 |
---
title: "Analyse de Sentiment Audio"
emoji: "🎤"
colorFrom: "purple"
colorTo: "indigo"
sdk: gradio
sdk_version: "4.44.1"
app_file: app_with_api.py
pinned: false
---
# Sentiment Audio
Ce projet propose un pipeline complet d'analyse de sentiment à partir de fichiers audio francophones, structuré en quatre composantes principales :
1. **Transcription audio**
- Modèle Wav2Vec2 (`jonatasgrosman/wav2vec2-large-xlsr-53-french`)
- Extraction de vecteurs audio puis décodage CTC
2. **Analyse de sentiment textuel**
- Modèle BERT multilingue (`nlptown/bert-base-multilingual-uncased-sentiment`)
- Fonction `analyze_sentiment(text)` retournant un label (`négatif`, `neutre`, `positif`) et sa confiance
3. **Interface utilisateur Gradio**
- Modes d'entrée : **enregistrement microphone** et **téléversement de fichier**
- Affichage de la transcription et du score de sentiment en temps réel

4. **API REST FastAPI**
- Endpoint `/predict` pour soumettre un fichier audio
- Retour JSON `{ "transcription": ..., "sentiment": {label: confiance} }`
- Documentation interactive Swagger UI (`/docs`)

---
## Structure du projet
```
sentiment_audio_tp/
├── hf_model/ # exports de modèles sauvegardés via save_pretrained
├── models/ # cache local HuggingFace (ignoré par Git)
├── src/
│ ├── __init__.py
│ ├── transcription.py # SpeechEncoder (Wav2Vec2Model)
│ ├── sentiment.py # TextEncoder + analyze_sentiment()
│ ├── multimodal.py # Classifieur multimodal (fusion embeddings)
│ ├── inference.py # CLI (audio → transcription + sentiment)
│ ├── app.py # Interface Gradio
│ └── api.py # Serveur FastAPI
├── requirements.txt # Dépendances du projet
├── render.yaml # Infra as code pour Render
└── README.md # Ce document
```
---
## Installation
1. **Cloner le dépôt**
```bash
git clone <URL_DU_REPO>
cd sentiment_audio_tp
```
2. **Configurer l'environnement**
```bash
python -m venv venv
source venv/bin/activate # macOS/Linux
.\venv\Scripts\Activate.ps1 # Windows PowerShell
```
3. **Installer les dépendances**
```bash
pip install --upgrade pip
pip install -r requirements.txt
```
---
## Utilisation
### CLI d'inférence
```bash
python src/inference.py chemin/vers/audio.wav
# Affiche la transcription et le résultat de sentiment
```
### Interface Gradio
```bash
python -m src.app
```
- Rendez-vous sur `http://127.0.0.1:7861/`
- Choisissez **Enregistrement** ou **Upload**
- Obtenez la transcription et le sentiment en temps réel
### API REST
```bash
uvicorn src.api:app --reload --host 0.0.0.0 --port 8000
```
- Swagger UI : `http://127.0.0.1:8000/docs`
- Tester avec `curl` ou Postman :
```bash
curl -X POST "http://127.0.0.1:8000/predict" \
-F "file=@/chemin/vers/audio.wav"
```
---
## Cas d'usage
- **Prototype rapide** d'analyse de sentiment sur des appels clients, podcasts, interviews
- **Outil de validation** pour analyses qualitatives de contenu audio
- **Proof of Concept** pour architectures multimodales
- **Service back-end** dans un chatbot vocal ou plateforme d'assistance
---
## Extension
- **Fine-tuning multimodal** : entraînement du classifieur fusion sur un dataset annoté
- **Support de nouveaux formats** : MP3, FLAC…
- **Tests et CI** : ajouter des tests `pytest` et pipelines CI/CD
- **Déploiement** : Docker, Kubernetes, monitoring
---
## Licence
Licence **MIT** — libre d'utilisation, modification et redistribution.
|