Spaces:
Sleeping
Sleeping
File size: 3,055 Bytes
fd64912 8f34be7 b4bd0de 9216a0a 162b1ba 8f34be7 4d516ad 162b1ba 9dfe35d 8f34be7 9216a0a 8f34be7 9dfe35d 8f34be7 9216a0a 9dfe35d 8f34be7 9216a0a 9dfe35d 7645fdc 9216a0a 9dfe35d d7596e9 162b1ba 7645fdc 4d516ad 162b1ba 7645fdc 4d516ad 9dfe35d 7645fdc 503bff0 4d516ad 162b1ba 4d516ad 9216a0a 80d269f 162b1ba 9216a0a 7645fdc 4d516ad 9dfe35d 7645fdc 4d516ad 9dfe35d 8f34be7 7645fdc 9216a0a 9dfe35d 8f34be7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
import streamlit as st
from transformers import pipeline
from gtts import gTTS
from pytube import Search
import os
# Initialize conversational models
conversational_bot = pipeline("text-generation", model="microsoft/DialoGPT-medium")
sentiment_analysis = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
motivational_response = pipeline("text-generation", model="huggingtweets/motivational")
# Set up Streamlit page
st.set_page_config(page_title="Grief and Loss Support Bot", page_icon="πΏ", layout="centered")
st.markdown("""
<style>
.css-1d391kg { background-color: #F3F7F6; }
.css-ffhzg2 { font-size: 1.5em; font-weight: 500; color: #4C6D7D; }
.stTextInput>div>div>input { background-color: #D8E3E2; }
.stButton>button { background-color: #A9D0B6; color: white; border-radius: 5px; }
.stButton>button:hover { background-color: #8FB79A; }
.stTextInput>div>label { color: #4C6D7D; }
</style>
""", unsafe_allow_html=True)
# Title
st.title("Grief and Loss Support Bot πΏ")
st.subheader("Your compassionate companion in tough times π")
# Get user input
user_input = st.text_input("Share what's on your mind...", placeholder="Type here...", max_chars=500)
# Check if user has entered text
if user_input:
# Run sentiment analysis for crisis detection
sentiment = sentiment_analysis(user_input)[0]
# Use conversational bot for responses
response = conversational_bot(user_input, max_length=150)[0]['generated_text']
# Display response
st.text_area("Bot's Response:", response, height=150)
# Generate motivational message
motivation = motivational_response(user_input, max_length=150)[0]['generated_text']
st.text_area("Motivational Response:", motivation, height=150)
# Text-to-speech output for both responses
tts = gTTS(response + " " + motivation, lang='en')
audio_file = "response.mp3"
tts.save(audio_file)
st.audio(audio_file, format="audio/mp3") # Removed use_container_width=True
# Suggest a productive activity based on detected keywords
if any(keyword in user_input.lower() for keyword in ["lonely", "lost", "sad"]):
st.info("Here's a suggestion to help you cope:")
hobbies = ["journaling", "yoga", "painting"]
activity = st.selectbox("Choose an activity you'd like to try:", hobbies)
# Search YouTube for videos related to the selected activity
search = Search(activity)
search_results = search.results[:3] # limit results to 2 videos
for video in search_results:
st.write(f"[{video.title}]({video.watch_url})")
# Crisis resources
crisis_keywords = ["help", "suicide", "depressed", "emergency", "hurt", "lost"]
if any(keyword in user_input.lower() for keyword in crisis_keywords):
st.warning("It seems like you might be in distress. Please reach out to a crisis hotline or a trusted individual.")
st.write("[Find emergency resources here](https://www.helpguide.org/find-help.htm)")
|