iamstrong commited on
Commit
737a5df
Β·
verified Β·
1 Parent(s): dc07d92

Upload 4 files

Browse files
Files changed (1) hide show
  1. app.py +50 -29
app.py CHANGED
@@ -1,29 +1,37 @@
1
-
2
  import gradio as gr
3
  from gtts import gTTS
4
  import tempfile
5
  import json
6
  import datetime
7
 
 
8
  lang_codes = {
9
  "english": "en", "hindi": "hi", "marathi": "mr", "bengali": "bn",
10
  "tamil": "ta", "telugu": "te", "malayalam": "ml", "spanish": "es",
11
  "french": "fr", "german": "de"
12
  }
13
 
 
14
  user_info = {"name": "", "age": "", "language": "english", "mood": ""}
15
  chat_history = []
16
 
 
17
  def welcome_screen():
18
- return "🧠 Welcome to StrongMind Therapist!\nYour safe space to talk, heal, and grow."
 
 
19
  def set_preferences(name, age, language, mood):
20
  user_info["name"] = name
21
  user_info["age"] = age
22
  user_info["language"] = language.lower()
23
  user_info["mood"] = mood
24
- greeting = f"Welcome {name}! Let's begin your therapy session in {language}. You said you're feeling {mood}. I'm here to listen."
 
 
 
25
  return greeting
26
 
 
27
  def get_therapist_reply(audio, text_input):
28
  try:
29
  if audio:
@@ -34,10 +42,11 @@ def get_therapist_reply(audio, text_input):
34
  elif text_input:
35
  user_text = text_input
36
  else:
37
- return "Please say or type something to begin.", None
38
 
39
  reply = generate_reply(user_text)
40
 
 
41
  chat_entry = {
42
  "user": user_text,
43
  "reply": reply,
@@ -49,6 +58,7 @@ def get_therapist_reply(audio, text_input):
49
  with open("chat_history.json", "w") as f:
50
  json.dump(chat_history, f, indent=4)
51
 
 
52
  lang_code = lang_codes.get(user_info["language"], "en")
53
  tts = gTTS(text=reply, lang=lang_code)
54
  audio_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
@@ -58,58 +68,69 @@ def get_therapist_reply(audio, text_input):
58
  except Exception as e:
59
  return f"⚠️ Error: {str(e)}", None
60
 
 
61
  def generate_reply(user_input):
62
  user_input = user_input.lower()
 
63
  if any(word in user_input for word in ["suicide", "kill", "die", "harm", "cut"]):
64
  return (
65
- "πŸ’” I believe you're very hurt, but I can't provide help in this situation.
66
- "
67
- "Please contact a professional therapist:
68
- "
69
- "πŸ“ž Dr. Meera Kapoor – +91 9876543210
70
- "
71
- "πŸ“ž Dr. Arjun Das – +91 9123456780
72
- You are not alone πŸ’š"
73
  )
 
74
  if any(word in user_input for word in ["sad", "anxiety", "angry", "unwell", "hate", "stress"]):
75
- return "Hey, no need to worry. I'm here for you. Just tell me more β€” we’ll figure it out together. 🧑"
 
76
  if any(word in user_input for word in ["what should i do", "advice", "guide", "suggest"]):
77
  return (
78
- "🧠 When you're confused, take 3 deep breaths and write down small steps you can take. "
79
- "Would you like help listing some ideas?"
80
  )
81
- if "joke" in user_input or "make me happy" in user_input:
82
- return "πŸ˜„ Why don't scientists trust atoms? Because they make up everything!"
83
- return "Thank you for sharing. I'm here with you. You can keep talking β€” I’m listening."
84
 
85
- with gr.Blocks(css="body { background-color: #ffe6f0; }") as app:
86
- gr.Markdown("## 🌸 StrongMind Therapist with Nature Sounds")
87
- gr.Audio(label="🎡 Calm Nature Music", value="calm_nature.mp3", interactive=False)
 
88
 
 
 
 
 
 
 
89
  with gr.Tab("πŸ› οΈ Start"):
90
- name = gr.Textbox(label="Your Name")
91
- age = gr.Textbox(label="Your Age")
92
- lang = gr.Dropdown(choices=list(lang_codes.keys()), label="Preferred Language")
93
- mood = gr.Textbox(label="How are you feeling today?")
94
  start = gr.Button("βœ… Start Session")
95
- welcome_msg = gr.Textbox(label="System Message")
96
  start.click(set_preferences, inputs=[name, age, lang, mood], outputs=welcome_msg)
97
 
 
98
  with gr.Tab("πŸ’¬ Chat"):
99
  audio = gr.Audio(type="filepath", label="πŸŽ™οΈ Speak")
100
- text_input = gr.Textbox(label="⌨️ Or type here")
101
  btn = gr.Button("🧘 Get Response")
102
  response = gr.Textbox(label="πŸ’¬ Therapist's Reply")
103
  voice_out = gr.Audio(label="πŸ”Š Voice Reply")
104
  btn.click(get_therapist_reply, inputs=[audio, text_input], outputs=[response, voice_out])
105
 
 
106
  with gr.Tab("πŸ“œ Chat History"):
107
  def show_history():
108
  if not chat_history:
109
  return "No chats yet."
110
- return "\n".join([f"πŸ•’ {c['time']}\nYou: {c['user']}\nBot: {c['reply']}\n" for c in chat_history])
 
 
111
  history_btn = gr.Button("πŸ“‚ Load Past Chats")
112
- history_output = gr.Textbox(label="πŸ—‚οΈ Your Past Conversations", lines=20)
113
  history_btn.click(show_history, outputs=history_output)
114
 
 
 
 
115
  app.launch()
 
 
1
  import gradio as gr
2
  from gtts import gTTS
3
  import tempfile
4
  import json
5
  import datetime
6
 
7
+ # 🌐 Language support dictionary
8
  lang_codes = {
9
  "english": "en", "hindi": "hi", "marathi": "mr", "bengali": "bn",
10
  "tamil": "ta", "telugu": "te", "malayalam": "ml", "spanish": "es",
11
  "french": "fr", "german": "de"
12
  }
13
 
14
+ # 🧠 Store user info and chat history
15
  user_info = {"name": "", "age": "", "language": "english", "mood": ""}
16
  chat_history = []
17
 
18
+ # 🌸 Welcome screen message
19
  def welcome_screen():
20
+ return "🧠 Welcome to StrongMind Therapist!\nYour peaceful space to talk, heal, and grow πŸ’–"
21
+
22
+ # βœ… Set user preferences
23
  def set_preferences(name, age, language, mood):
24
  user_info["name"] = name
25
  user_info["age"] = age
26
  user_info["language"] = language.lower()
27
  user_info["mood"] = mood
28
+ greeting = (
29
+ f"Welcome {name}! Let's begin your therapy session in {language.title()}. "
30
+ f"You said you're feeling {mood}. I’m here to support you 🌱"
31
+ )
32
  return greeting
33
 
34
+ # πŸ’¬ Therapist reply generator
35
  def get_therapist_reply(audio, text_input):
36
  try:
37
  if audio:
 
42
  elif text_input:
43
  user_text = text_input
44
  else:
45
+ return "Please speak or type something to begin.", None
46
 
47
  reply = generate_reply(user_text)
48
 
49
+ # πŸ’Ύ Save chat
50
  chat_entry = {
51
  "user": user_text,
52
  "reply": reply,
 
58
  with open("chat_history.json", "w") as f:
59
  json.dump(chat_history, f, indent=4)
60
 
61
+ # 🎧 Convert reply to voice
62
  lang_code = lang_codes.get(user_info["language"], "en")
63
  tts = gTTS(text=reply, lang=lang_code)
64
  audio_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
 
68
  except Exception as e:
69
  return f"⚠️ Error: {str(e)}", None
70
 
71
+ # πŸ€– Smart response generator
72
  def generate_reply(user_input):
73
  user_input = user_input.lower()
74
+
75
  if any(word in user_input for word in ["suicide", "kill", "die", "harm", "cut"]):
76
  return (
77
+ "πŸ’” I believe you're very hurt, but I can't provide help in this situation.\n"
78
+ "Please contact a professional therapist:\n"
79
+ "πŸ“ž Dr. Meera Kapoor – +91 9876543210\n"
80
+ "πŸ“ž Dr. Arjun Das – +91 9123456780\nYou are not alone πŸ’š"
 
 
 
 
81
  )
82
+
83
  if any(word in user_input for word in ["sad", "anxiety", "angry", "unwell", "hate", "stress"]):
84
+ return "🌈 I hear you. Let's take a deep breath together. You’re not alone β€” tell me more, I'm here for you."
85
+
86
  if any(word in user_input for word in ["what should i do", "advice", "guide", "suggest"]):
87
  return (
88
+ "🧭 When you're unsure, take a moment to pause and reflect. Try breaking your problem into small steps. "
89
+ "Would you like help listing ideas?"
90
  )
 
 
 
91
 
92
+ if any(word in user_input for word in ["joke", "make me happy", "funny"]):
93
+ return "πŸ˜„ Why don’t eggs tell each other secrets? Because they might crack up!"
94
+
95
+ return "πŸͺ· Thank you for sharing. You are brave. Keep going, I'm right here listening."
96
 
97
+ # 🎨 Build the Gradio interface
98
+ with gr.Blocks(theme=gr.themes.Base(primary_hue="pink", secondary_hue="pink")) as app:
99
+ gr.Markdown("## 🧠 StrongMind Therapist")
100
+ gr.Markdown(welcome_screen())
101
+
102
+ # 🎚️ Preference tab
103
  with gr.Tab("πŸ› οΈ Start"):
104
+ name = gr.Textbox(label="πŸ‘€ Your Name")
105
+ age = gr.Textbox(label="πŸŽ‚ Your Age")
106
+ lang = gr.Dropdown(choices=list(lang_codes.keys()), label="🌐 Preferred Language")
107
+ mood = gr.Textbox(label="🧘 How are you feeling today?")
108
  start = gr.Button("βœ… Start Session")
109
+ welcome_msg = gr.Textbox(label="πŸ“ System Message")
110
  start.click(set_preferences, inputs=[name, age, lang, mood], outputs=welcome_msg)
111
 
112
+ # πŸŽ™οΈ Chat tab
113
  with gr.Tab("πŸ’¬ Chat"):
114
  audio = gr.Audio(type="filepath", label="πŸŽ™οΈ Speak")
115
+ text_input = gr.Textbox(label="⌨️ Or type your feelings")
116
  btn = gr.Button("🧘 Get Response")
117
  response = gr.Textbox(label="πŸ’¬ Therapist's Reply")
118
  voice_out = gr.Audio(label="πŸ”Š Voice Reply")
119
  btn.click(get_therapist_reply, inputs=[audio, text_input], outputs=[response, voice_out])
120
 
121
+ # πŸ—‚ Chat history
122
  with gr.Tab("πŸ“œ Chat History"):
123
  def show_history():
124
  if not chat_history:
125
  return "No chats yet."
126
+ return "\n".join([
127
+ f"πŸ•’ {c['time']}\nYou: {c['user']}\nBot: {c['reply']}\n" for c in chat_history
128
+ ])
129
  history_btn = gr.Button("πŸ“‚ Load Past Chats")
130
+ history_output = gr.Textbox(label="πŸ“„ Your Past Conversations", lines=20)
131
  history_btn.click(show_history, outputs=history_output)
132
 
133
+ # 🌿 Background music (optional hidden audio player)
134
+ gr.Audio(value="calm_nature.mp3", autoplay=True, visible=False)
135
+
136
  app.launch()