logu29's picture
Update app.py
8505c64 verified
raw
history blame
2.18 kB
import gradio as gr
from textblob import TextBlob
from deepface import DeepFace
import moviepy.editor as mp
import cv2
import tempfile
import os
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"Text Sentiment: {sentiment} (Polarity: {polarity:.2f}
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)}"
def analyze_video(video_file):
try:
tmpdir = tempfile.mkdtemp()
clip = mp.VideoFileClip(video_file)
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)}"
with gr.Blocks() as demo:
gr.Markdown("# 🧠 Emotion and Sentiment Analyzer")
with gr.Tab("Text Analysis"):
text_input = gr.Textbox(label="Enter Text")
text_output = gr.Textbox(label="Sentiment Result")
text_btn = gr.Button("Analyze Text")
text_btn.click(analyze_text, inputs=text_input, outputs=text_output)
with gr.Tab("Image Analysis"):
img_input = gr.Image(type="filepath", label="Upload Face Image")
img_output = gr.Textbox(label="Emotion Result")
img_btn = gr.Button("Analyze Image")
img_btn.click(analyze_image, inputs=img_input, outputs=img_output)
with gr.Tab("Video Analysis"):
video_input = gr.Video(label="Upload Face Video")
video_output = gr.Textbox(label="Emotion Result")
video_btn = gr.Button("Analyze Video")
video_btn.click(analyze_video, inputs=video_input, outputs=video_output)
demo.launch()