iamstrong commited on
Commit
df7c28d
Β·
verified Β·
1 Parent(s): 2c6e764

Upload 5 files

Browse files
Files changed (2) hide show
  1. app.py +62 -75
  2. calm.mp3 +0 -0
app.py CHANGED
@@ -1,13 +1,12 @@
1
-
2
  import gradio as gr
3
  from gtts import gTTS
4
  import tempfile
5
  import json
6
  import datetime
7
- import random
8
  import os
 
9
 
10
- # Supported languages and codes
11
  lang_codes = {
12
  "english": "en", "hindi": "hi", "marathi": "mr", "bengali": "bn",
13
  "tamil": "ta", "telugu": "te", "malayalam": "ml", "spanish": "es",
@@ -16,48 +15,35 @@ lang_codes = {
16
 
17
  user_info = {"name": "", "age": "", "language": "english", "mood": ""}
18
  chat_history = []
19
- journal_entries = []
20
 
21
  def welcome_screen():
22
- return "🧠 Welcome to StrongMind Therapist!
23
- Your safe space to talk, heal, and grow."
24
 
25
  def set_preferences(name, age, language, mood):
26
  user_info["name"] = name
27
  user_info["age"] = age
28
  user_info["language"] = language.lower()
29
  user_info["mood"] = mood
30
- greeting = f"Welcome {name}! Let's begin your therapy session in {language}. You said you're feeling {mood}. I'm here to listen."
31
- return greeting
32
 
33
  def generate_reply(user_input):
34
  user_input = user_input.lower()
 
35
  if any(word in user_input for word in ["suicide", "kill", "die", "harm", "cut"]):
36
- return ("πŸ’” I believe you're very hurt, but I can't provide help in this situation.\n"
37
- "Please contact a professional therapist:\n"
38
- "πŸ“ž Dr. Meera Kapoor – +91 9876543210\n"
39
- "πŸ“ž Dr. Arjun Das – +91 9123456780\nYou are not alone πŸ’š")
40
-
41
- if any(word in user_input for word in ["sad", "anxiety", "angry", "unwell", "hate", "stress"]):
42
- responses = [
43
- "Hey, it’s okay to feel this way. I’m right here. Let's talk. 🌻",
44
- "Don’t worry, we’ll get through this together. Tell me what’s bothering you. πŸ’›",
45
- "I'm here for you. You can tell me anything. πŸ’¬"
46
- ]
47
- return random.choice(responses)
48
-
49
- if any(word in user_input for word in ["what should i do", "advice", "guide", "suggest"]):
50
- return ("🧠 When you're confused, take 3 deep breaths and write down small steps you can take. "
51
- "Would you like help listing some ideas?")
52
-
53
- if "joke" in user_input or "make me happy" in user_input:
54
- return random.choice([
55
- "πŸ˜„ Why don’t scientists trust atoms? Because they make up everything!",
56
- "πŸ˜‚ I told my computer I needed a break, and it said: β€˜Why? I’m not the one overloaded!’",
57
- "😹 Why did the student eat his homework? Because the teacher said it was a piece of cake!"
58
- ])
59
-
60
- return "Thanks for sharing. I'm listening, tell me more. 🌈"
61
 
62
  def get_therapist_reply(audio, text_input):
63
  try:
@@ -93,40 +79,34 @@ def get_therapist_reply(audio, text_input):
93
  except Exception as e:
94
  return f"⚠️ Error: {str(e)}", None
95
 
96
- def save_journal(text):
97
- journal_entries.append({
98
- "entry": text,
99
- "time": datetime.datetime.now().isoformat()
100
- })
101
- with open("journal.json", "w") as f:
102
- json.dump(journal_entries, f, indent=2)
103
- return "πŸ“ Journal saved!"
104
-
105
- def study_tips():
106
- return "\n".join([
107
- "πŸ“Œ Break tasks into small parts",
108
- "⏰ Take a 5-min break every 25 mins (Pomodoro)",
109
- "🧘 Do breathing before starting work",
110
- "πŸ“΄ Keep phone away while studying",
111
- "βœ… Reward yourself after completing tasks"
112
- ])
113
-
114
- # Gradio UI
115
- with gr.Blocks(theme=gr.themes.Soft(), css="body { background-color: #ffe6f0 }") as app:
116
- gr.Markdown("## 🌸 StrongMind Therapist 2.0 Pro")
117
- gr.Markdown(welcome_screen())
118
- gr.Audio(value="calm.mp3", autoplay=True, visible=False)
119
 
120
  with gr.Tab("πŸ› οΈ Start"):
121
- name = gr.Textbox(label="Your Name")
122
- age = gr.Textbox(label="Your Age")
123
- lang = gr.Dropdown(choices=list(lang_codes.keys()), label="Preferred Language")
124
- mood = gr.Textbox(label="How are you feeling today?")
 
125
  start = gr.Button("βœ… Start Session")
126
  welcome_msg = gr.Textbox(label="System Message")
127
  start.click(set_preferences, inputs=[name, age, lang, mood], outputs=welcome_msg)
128
 
129
- with gr.Tab("πŸ’¬ Therapist Chat"):
130
  audio = gr.Audio(type="filepath", label="πŸŽ™οΈ Speak")
131
  text_input = gr.Textbox(label="⌨️ Or type here")
132
  btn = gr.Button("🧘 Get Response")
@@ -134,22 +114,29 @@ with gr.Blocks(theme=gr.themes.Soft(), css="body { background-color: #ffe6f0 }")
134
  voice_out = gr.Audio(label="πŸ”Š Voice Reply")
135
  btn.click(get_therapist_reply, inputs=[audio, text_input], outputs=[response, voice_out])
136
 
137
- with gr.Tab("πŸ“” Journaling"):
138
- journal_text = gr.Textbox(label="Write your thoughts", lines=5)
139
- journal_btn = gr.Button("Save Journal")
140
- journal_status = gr.Textbox(label="Status")
141
- journal_btn.click(save_journal, inputs=journal_text, outputs=journal_status)
142
-
143
- with gr.Tab("πŸ“š Study Tips"):
144
- tip_btn = gr.Button("Get Tips")
145
- tip_output = gr.Textbox(label="Focus & Study Tips")
146
- tip_btn.click(fn=study_tips, outputs=tip_output)
 
 
 
 
 
 
 
 
 
 
 
147
 
148
  with gr.Tab("πŸ“œ Chat History"):
149
- def show_history():
150
- if not chat_history:
151
- return "No chats yet."
152
- return "\n\n".join([f"πŸ•’ {c['time']}\nYou: {c['user']}\nBot: {c['reply']}" for c in chat_history])
153
  history_btn = gr.Button("πŸ“‚ Load Past Chats")
154
  history_output = gr.Textbox(label="πŸ—‚οΈ Your Past Conversations", lines=20)
155
  history_btn.click(show_history, outputs=history_output)
 
 
1
  import gradio as gr
2
  from gtts import gTTS
3
  import tempfile
4
  import json
5
  import datetime
 
6
  import os
7
+ import base64
8
 
9
+ # Language codes for voice support
10
  lang_codes = {
11
  "english": "en", "hindi": "hi", "marathi": "mr", "bengali": "bn",
12
  "tamil": "ta", "telugu": "te", "malayalam": "ml", "spanish": "es",
 
15
 
16
  user_info = {"name": "", "age": "", "language": "english", "mood": ""}
17
  chat_history = []
 
18
 
19
  def welcome_screen():
20
+ return "🧠 Welcome to StrongMind Therapist!\nYour safe space to talk, heal, and grow."
 
21
 
22
  def set_preferences(name, age, language, mood):
23
  user_info["name"] = name
24
  user_info["age"] = age
25
  user_info["language"] = language.lower()
26
  user_info["mood"] = mood
27
+ return f"Welcome {name}! Let's begin your therapy session in {language}. You said you're feeling {mood}. I'm here to listen."
 
28
 
29
  def generate_reply(user_input):
30
  user_input = user_input.lower()
31
+
32
  if any(word in user_input for word in ["suicide", "kill", "die", "harm", "cut"]):
33
+ return (
34
+ "πŸ’” I believe you're very hurt, but I can't provide help in this situation.\n"
35
+ "Please contact a professional therapist:\n"
36
+ "πŸ“ž Dr. Meera Kapoor – +91 9876543210\n"
37
+ "πŸ“ž Dr. Arjun Das – +91 9123456780\nYou are not alone πŸ’š"
38
+ )
39
+ elif any(word in user_input for word in ["sad", "anxiety", "angry", "unwell", "hate", "stress"]):
40
+ return "Hey, no need to worry. I'm here for you. Just tell me more β€” we’ll figure it out together. 🧑"
41
+ elif any(word in user_input for word in ["what should i do", "advice", "guide", "suggest"]):
42
+ return "🧠 When you're confused, take 3 deep breaths and write down small steps you can take. Would you like help listing ideas?"
43
+ elif "joke" in user_input or "make me happy" in user_input:
44
+ return "πŸ˜„ Why don't scientists trust atoms? Because they make up everything!"
45
+ else:
46
+ return "Thanks for sharing. I'm here with you. You can keep talking β€” I’m listening."
 
 
 
 
 
 
 
 
 
 
 
47
 
48
  def get_therapist_reply(audio, text_input):
49
  try:
 
79
  except Exception as e:
80
  return f"⚠️ Error: {str(e)}", None
81
 
82
+ def show_history():
83
+ if not chat_history:
84
+ return "No chats yet."
85
+ return "\n".join([f"πŸ•’ {c['time']}\nYou: {c['user']}\nBot: {c['reply']}\n" for c in chat_history])
86
+
87
+ with gr.Blocks(css="body {background-color: #ffe6f0;}") as app:
88
+ with open("calm.mp3", "rb") as f:
89
+ audio_bytes = f.read()
90
+ encoded = base64.b64encode(audio_bytes).decode()
91
+ gr.HTML(f"""
92
+ <audio autoplay loop hidden>
93
+ <source src="data:audio/mp3;base64,{encoded}" type="audio/mp3">
94
+ </audio>
95
+ """)
96
+
97
+ gr.Markdown("## 🌿 StrongMind Therapist 2.0")
 
 
 
 
 
 
 
98
 
99
  with gr.Tab("πŸ› οΈ Start"):
100
+ gr.Markdown(welcome_screen())
101
+ name = gr.Textbox(label="πŸ‘€ Your Name")
102
+ age = gr.Textbox(label="πŸŽ‚ Your Age")
103
+ lang = gr.Dropdown(choices=list(lang_codes.keys()), label="🌐 Preferred Language")
104
+ mood = gr.Textbox(label="🧠 How are you feeling today?")
105
  start = gr.Button("βœ… Start Session")
106
  welcome_msg = gr.Textbox(label="System Message")
107
  start.click(set_preferences, inputs=[name, age, lang, mood], outputs=welcome_msg)
108
 
109
+ with gr.Tab("πŸ’¬ Chat"):
110
  audio = gr.Audio(type="filepath", label="πŸŽ™οΈ Speak")
111
  text_input = gr.Textbox(label="⌨️ Or type here")
112
  btn = gr.Button("🧘 Get Response")
 
114
  voice_out = gr.Audio(label="πŸ”Š Voice Reply")
115
  btn.click(get_therapist_reply, inputs=[audio, text_input], outputs=[response, voice_out])
116
 
117
+ with gr.Tab("πŸ““ Journal"):
118
+ journal = gr.Textbox(label="✍️ Write your thoughts", lines=8)
119
+ save_journal = gr.Button("πŸ’Ύ Save Entry")
120
+ status = gr.Textbox(label="πŸ—‚οΈ Status")
121
+ def save_entry(text):
122
+ with open("journal.txt", "a", encoding="utf-8") as f:
123
+ f.write(f"{datetime.datetime.now()}\n{text}\n\n")
124
+ return "Saved to journal.txt βœ…"
125
+ save_journal.click(save_entry, inputs=journal, outputs=status)
126
+
127
+ with gr.Tab("πŸ“˜ Study Tips"):
128
+ def tips():
129
+ return (
130
+ "🧠 Study Tips:\n"
131
+ "1. Pomodoro method: 25 min study, 5 min break\n"
132
+ "2. Eliminate distractions (put phone away)\n"
133
+ "3. Summarize what you learned out loud\n"
134
+ "4. Stay hydrated and eat light snacks\n"
135
+ "5. Sleep well!"
136
+ )
137
+ gr.Button("πŸ“š Show Tips").click(tips, outputs=gr.Textbox(lines=8, label="Tips"))
138
 
139
  with gr.Tab("πŸ“œ Chat History"):
 
 
 
 
140
  history_btn = gr.Button("πŸ“‚ Load Past Chats")
141
  history_output = gr.Textbox(label="πŸ—‚οΈ Your Past Conversations", lines=20)
142
  history_btn.click(show_history, outputs=history_output)
calm.mp3 ADDED
File without changes