Spaces:
Runtime error
Runtime error
# Step 2: Import Libraries and Set Up Models | |
import gradio as gr | |
from transformers import pipeline | |
from gtts import gTTS | |
import os | |
import IPython.display as ipd | |
# Load sentiment analysis and text generation models | |
sentiment_model = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english") | |
text_gen_model = pipeline("text-generation", model="microsoft/DialoGPT-medium") | |
# Step 3: Define the Response Function | |
def virtual_psychologist(input_text): | |
# Check for empty or invalid input | |
if not input_text.strip(): | |
return "Please provide some input about how you're feeling.", None, None | |
# Step 1: Sentiment Analysis | |
sentiment = sentiment_model(input_text)[0] | |
label = sentiment['label'] | |
confidence = sentiment['score'] | |
# Step 2: Display Sentiment Information | |
sentiment_feedback = f"Your input sentiment is detected as **{label}** with confidence {confidence:.2f}.\n\n" | |
# Step 3: Generate a Response Based on Sentiment | |
if confidence > 0.7: # Threshold for confident sentiment analysis | |
if label == 'POSITIVE': | |
response = "I'm glad you're feeling positive! Tell me more about what’s bringing you joy, and let’s keep this energy up together." | |
elif label == 'NEGATIVE': | |
# Check for sensitive keywords like "suicide" or "worthless" | |
if "suicide" in input_text.lower() or "worthless" in input_text.lower(): | |
response = ("I'm really sorry you're feeling this way, but please know you're not alone. " | |
"It's really important to talk to someone who can provide support. Would you like to share more " | |
"about what's been making you feel this way? You matter, and it's okay to reach out for help.") | |
else: | |
response = "It sounds like you're going through a tough time. Want to share more about what’s on your mind? I'm here to help you navigate through it." | |
else: | |
response = "You seem to be feeling neutral. Do you have anything specific on your mind that you'd like to talk about?" | |
else: | |
response = "I'm not quite sure I understand. Could you elaborate a bit more? I'm here to listen." | |
# Step 4: Generate a Longer Response for the User | |
generated_text = text_gen_model(response, max_length=100, num_return_sequences=1)[0]['generated_text'] | |
# Combine sentiment feedback and generated text into the final output | |
full_response = sentiment_feedback + generated_text | |
# Convert response to speech using gTTS | |
tts = gTTS(text=full_response, lang='en') | |
tts.save("response.mp3") | |
# Return the response text and audio file path | |
response_type = "Supportive Response" if "suicide" in input_text.lower() or "worthless" in input_text.lower() else "General Response" | |
# Return response as text, response type, and audio file path for Gradio | |
return full_response, response_type, "response.mp3" | |
# Step 5: Create a Gradio interface for the app | |
interface = gr.Interface( | |
fn=virtual_psychologist, | |
inputs=gr.Textbox(lines=5, placeholder="How are you feeling today?"), | |
outputs=[gr.Textbox(), gr.Textbox(), gr.Audio()], | |
title="Virtual Psychologist Assistant", | |
description="Share your feelings, and this assistant will analyze your sentiment and respond as a supportive psychologist." | |
) | |
# Step 6: Launch the Gradio interface | |
interface.launch() | |