audio-sentiment / README.md
alec228's picture
Fix: Compatibilité Gradio 4.44.1 - Suppression argument 'info' non supporté
96f87e4

A newer version of the Gradio SDK is available: 5.44.1

Upgrade
metadata
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
      Interface Gradio
  4. API REST FastAPI

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

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

    git clone <URL_DU_REPO>
    cd sentiment_audio_tp
    
  2. Configurer l'environnement

    python -m venv venv
    source venv/bin/activate   # macOS/Linux
    .\venv\Scripts\Activate.ps1  # Windows PowerShell
    
  3. Installer les dépendances

    pip install --upgrade pip
    pip install -r requirements.txt
    

Utilisation

CLI d'inférence

python src/inference.py chemin/vers/audio.wav
# Affiche la transcription et le résultat de sentiment

Interface Gradio

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

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 :

    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.