Spaces:
Build error
Build error
import gradio as gr | |
from textblob import TextBlob | |
from deepface import DeepFace | |
import tempfile | |
import os | |
import cv2 | |
import moviepy.editor as mp | |
# Sentiment Analysis for Text | |
def analyze_text(text): | |
blob = TextBlob(text) | |
polarity = blob.sentiment.polarity | |
sentiment = "Positive" if polarity > 0 else "Negative" if polarity < 0 else "Neutral" | |
return f"Sentiment: {sentiment} (Polarity: {polarity:.2f})" | |
# Emotion Analysis for Image (Face Recognition) | |
def analyze_image(image): | |
try: | |
result = DeepFace.analyze(image, actions=['emotion'], enforce_detection=False) | |
dominant_emotion = result[0]['dominant_emotion'] | |
return f"Detected Emotion: {dominant_emotion}" | |
except Exception as e: | |
return f"Error: {str(e)}" | |
# Emotion Analysis for Video (Face Recognition) | |
def analyze_video(video): | |
try: | |
tmpdir = tempfile.mkdtemp() | |
clip = mp.VideoFileClip(video) | |
frame = clip.get_frame(clip.duration / 2) | |
frame_path = os.path.join(tmpdir, "frame.jpg") | |
cv2.imwrite(frame_path, cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)) | |
result = DeepFace.analyze(frame_path, actions=['emotion'], enforce_detection=False) | |
dominant_emotion = result[0]['dominant_emotion'] | |
return f"Video Emotion: {dominant_emotion}" | |
except Exception as e: | |
return f"Error: {str(e)}" | |
# Gradio Blocks UI | |
with gr.Blocks(theme="huggingface") as demo: | |
gr.Markdown("# 🎭 Sentiment & Emotion Decoder", elem_id="header") | |
gr.Markdown("Upload your text, face image, or video to decode emotions and sentiments!") | |
with gr.Tabs(): | |
# Text Sentiment Analysis Tab | |
with gr.TabItem("📜 Text Sentiment"): | |
text_input = gr.Textbox(label="Enter Text Here", placeholder="Type your social media post here...") | |
text_button = gr.Button("🔍 Analyze Sentiment") | |
text_output = gr.Label(label="Sentiment Result") | |
text_button.click(analyze_text, inputs=text_input, outputs=text_output) | |
# Image Emotion Analysis Tab | |
with gr.TabItem("📸 Face Emotion Image"): | |
img_input = gr.Image(type="filepath", label="Upload Face Image") | |
img_output = gr.Label(label="Emotion Result") | |
img_button = gr.Button("🔍 Analyze Image") | |
img_button.click(analyze_image, inputs=img_input, outputs=img_output) | |
# Video Emotion Analysis Tab | |
with gr.TabItem("🎥 Face Emotion Video"): | |
video_input = gr.Video(label="Upload Face Video") | |
video_output = gr.Label(label="Emotion Result") | |
video_button = gr.Button("🔍 Analyze Video") | |
video_button.click(analyze_video, inputs=video_input, outputs=video_output) | |
# Launch the Interface | |
demo.launch() | |