Spaces:
Runtime error
Runtime error
A newer version of the Gradio SDK is available:
5.43.1
🔌 API REST - Analyse de Sentiment Audio
📋 Vue d'ensemble
L'API REST permet d'intégrer l'analyse de sentiment audio dans vos applications. Elle est accessible via les endpoints suivants :
Base URL : https://huggingface.co/spaces/<username>/sentiment-audio-analyzer
🚀 Endpoints disponibles
1. GET / - Informations générales
curl https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/
Réponse :
{
"message": "API Multimodale de Transcription & Sentiment",
"version": "1.0",
"endpoints": {
"docs": "/api/docs",
"predict": "/api/predict",
"health": "/api/health"
},
"supported_formats": ["wav", "flac", "mp3"]
}
2. GET /api/health - Vérification de l'état
curl https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/health
Réponse :
{
"status": "healthy",
"models_loaded": true,
"timestamp": "2024-01-01T00:00:00Z"
}
3. POST /api/predict - Analyse audio
curl -X POST "https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict" \
-F "file=@audio.wav"
Paramètres :
file
: Fichier audio (WAV, FLAC, MP3, max 50MB)
Réponse :
{
"transcription": "je suis très content de ce produit",
"sentiment": {
"négatif": 0.05,
"neutre": 0.10,
"positif": 0.85
},
"filename": "audio.wav",
"file_size": 123456
}
4. POST /api/predict_text - Analyse textuelle
curl -X POST "https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict_text" \
-H "Content-Type: application/json" \
-d '{"text": "je suis très content de ce produit"}'
Paramètres :
text
: Texte à analyser (string)
Réponse :
{
"text": "je suis très content de ce produit",
"sentiment": {
"négatif": 0.05,
"neutre": 0.10,
"positif": 0.85
}
}
📖 Exemples d'utilisation
Python avec requests
import requests
# Analyse audio
url = "https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict"
files = {"file": open("audio.wav", "rb")}
response = requests.post(url, files=files)
result = response.json()
print(f"Transcription: {result['transcription']}")
print(f"Sentiment: {result['sentiment']}")
# Analyse textuelle
url = "https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict_text"
data = {"text": "je suis très content de ce produit"}
response = requests.post(url, json=data)
result = response.json()
print(f"Sentiment: {result['sentiment']}")
JavaScript avec fetch
// Analyse audio
const formData = new FormData();
formData.append('file', audioFile);
fetch('https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Transcription:', data.transcription);
console.log('Sentiment:', data.sentiment);
});
// Analyse textuelle
fetch('https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict_text', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
text: 'je suis très content de ce produit'
})
})
.then(response => response.json())
.then(data => {
console.log('Sentiment:', data.sentiment);
});
Node.js avec axios
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
// Analyse audio
const formData = new FormData();
formData.append('file', fs.createReadStream('audio.wav'));
axios.post('https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict', formData, {
headers: formData.getHeaders()
})
.then(response => {
console.log('Transcription:', response.data.transcription);
console.log('Sentiment:', response.data.sentiment);
});
// Analyse textuelle
axios.post('https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/predict_text', {
text: 'je suis très content de ce produit'
})
.then(response => {
console.log('Sentiment:', response.data.sentiment);
});
⚠️ Gestion des erreurs
Erreur 400 - Fichier invalide
{
"detail": "Seuls les fichiers audio WAV/FLAC/MP3 sont acceptés."
}
Erreur 400 - Fichier trop volumineux
{
"detail": "Fichier trop volumineux. Taille maximale: 50MB"
}
Erreur 500 - Erreur serveur
{
"detail": "Erreur lors de l'analyse: [description de l'erreur]"
}
🔧 Configuration
Headers recommandés
Content-Type: multipart/form-data # Pour /api/predict
Content-Type: application/json # Pour /api/predict_text
Limites
- Taille fichier : 50MB maximum
- Formats supportés : WAV, FLAC, MP3
- Langue : Français (optimisé)
- Rate limiting : Selon les limites HF Spaces
📊 Codes de réponse
Code | Description |
---|---|
200 | Succès |
400 | Erreur de requête (fichier invalide, trop volumineux) |
500 | Erreur serveur (modèles, traitement) |
🎯 Cas d'usage
1. Intégration chatbot
def analyze_user_audio(audio_file):
response = requests.post(API_URL, files={"file": audio_file})
result = response.json()
if result["sentiment"]["positif"] > 0.7:
return "Je suis ravi que vous soyez satisfait !"
elif result["sentiment"]["négatif"] > 0.7:
return "Je comprends votre préoccupation. Comment puis-je vous aider ?"
else:
return "Merci pour votre retour."
2. Analyse de feedback clients
def analyze_customer_feedback(audio_files):
results = []
for audio in audio_files:
response = requests.post(API_URL, files={"file": audio})
results.append(response.json())
# Statistiques
positive_count = sum(1 for r in results if r["sentiment"]["positif"] > 0.5)
return f"Taux de satisfaction: {positive_count/len(results)*100:.1f}%"
3. Monitoring en temps réel
import time
def monitor_audio_stream():
while True:
# Capture audio
audio_data = capture_audio()
# Analyse
response = requests.post(API_URL, files={"file": audio_data})
result = response.json()
# Alerte si sentiment négatif
if result["sentiment"]["négatif"] > 0.8:
send_alert("Sentiment très négatif détecté")
time.sleep(30) # Analyse toutes les 30 secondes
🔗 Documentation interactive
Accédez à la documentation interactive Swagger UI :
https://huggingface.co/spaces/<username>/sentiment-audio-analyzer/api/docs
📞 Support
Pour toute question ou problème :
- Consultez les logs dans l'interface HF Spaces
- Vérifiez la documentation Swagger
- Testez avec l'interface Gradio
API développée avec FastAPI et optimisée pour Hugging Face Spaces