Update app.py
Browse files
app.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
import os
|
| 3 |
import torch
|
|
|
|
| 4 |
from transformers import pipeline
|
| 5 |
import google.generativeai as genai
|
| 6 |
|
|
@@ -62,32 +63,32 @@ SYSTEM_PROMPT = """आप एक संवेदनशील, सहानुभ
|
|
| 62 |
- आत्मविश्वास बढ़ाएं
|
| 63 |
- "आप अकेली नहीं हैं, हज़ारों महिलाएं इस यात्रा पर हैं"
|
| 64 |
|
| 65 |
-
उत्तर का ढांचा (Markdown
|
| 66 |
|
| 67 |
-
|
| 68 |
|
| 69 |
[संक्षिप्त पुनरावृत्ति + भावनात्मक स्वीकृति - 2-3 वाक्य]
|
| 70 |
|
| 71 |
-
|
| 72 |
|
| 73 |
[आपकी भावनाओं को वैध ठहराएं - 2-3 वाक्य]
|
| 74 |
|
| 75 |
-
|
| 76 |
|
| 77 |
[एक समान केस स्टडी - कैसे किसी ने बाहर निकला - 4-5 वाक्य]
|
| 78 |
|
| 79 |
-
|
| 80 |
|
| 81 |
1. [कदम 1 - स्पष्ट और व्यावहारिक]
|
| 82 |
2. [कदम 2 - स्पष्ट और व्यावहारिक]
|
| 83 |
3. [कदम 3 - स्पष्ट और व्यावहारिक]
|
| 84 |
4. [कदम 4 - स्पष्ट और व्यावहारिक]
|
| 85 |
|
| 86 |
-
|
| 87 |
|
| 88 |
[हेल्पलाइन, NGO, कानूनी सहायता - संक्षिप्त सूची]
|
| 89 |
|
| 90 |
-
|
| 91 |
|
| 92 |
[सशक्तिकरण संदेश + आशा का संदेश - 2-3 वाक्य]
|
| 93 |
|
|
@@ -95,7 +96,7 @@ SYSTEM_PROMPT = """आप एक संवेदनशील, सहानुभ
|
|
| 95 |
- हमेशा आशावादी, सहायक और सशक्तिकरण पर ध्यान दें
|
| 96 |
- कानूनी सलाह न दें - केवल कानूनी सहायता तक निर्देशित करें
|
| 97 |
- भाषा: सरल हिंदी + अंग्रेजी मिश्रण, महिलाओं के दिल तक पहुंचे
|
| 98 |
-
- Markdown formatting
|
| 99 |
- उत्तर संक्षिप्त, स्पष्ट और व्यावहारिक होना चाहिए
|
| 100 |
- प्रत्येक सेक्शन में पर्याप्त जानकारी दें लेकिन बहुत लंबा न हो"""
|
| 101 |
|
|
@@ -139,13 +140,13 @@ def analyze_with_gemini(text):
|
|
| 139 |
|
| 140 |
---
|
| 141 |
|
| 142 |
-
|
| 143 |
|
| 144 |
"{text}"
|
| 145 |
|
| 146 |
---
|
| 147 |
|
| 148 |
-
अब उपरोक्त ढांचे के अनुसार संपूर्ण विश्लेषण और समाधान दें। Markdown formatting
|
| 149 |
|
| 150 |
model = genai.GenerativeModel("gemini-2.0-flash")
|
| 151 |
response = model.generate_content(
|
|
@@ -175,7 +176,7 @@ def process_voice_input(audio):
|
|
| 175 |
"""Main pipeline: Audio → Text → Analysis → Empowerment"""
|
| 176 |
|
| 177 |
if audio is None:
|
| 178 |
-
return "
|
| 179 |
|
| 180 |
try:
|
| 181 |
# STEP 1: Speech to Text
|
|
@@ -185,21 +186,21 @@ def process_voice_input(audio):
|
|
| 185 |
text = transcribe_audio(audio)
|
| 186 |
|
| 187 |
if not text or len(text.strip()) < 5:
|
| 188 |
-
return """
|
| 189 |
|
| 190 |
माफ़ कीजिए, आपकी आवाज़ स्पष्ट रूप से समझ नहीं आई।
|
| 191 |
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
|
| 204 |
# STEP 2: Analysis & Empowerment
|
| 205 |
print("\n" + "="*70)
|
|
@@ -207,68 +208,68 @@ def process_voice_input(audio):
|
|
| 207 |
print("="*70)
|
| 208 |
analysis = analyze_with_gemini(text)
|
| 209 |
|
| 210 |
-
#
|
| 211 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 212 |
|
| 213 |
-
---
|
| 214 |
|
| 215 |
-
|
| 216 |
|
| 217 |
{text}
|
| 218 |
|
| 219 |
-
---
|
| 220 |
|
| 221 |
-
|
| 222 |
|
| 223 |
-
{
|
| 224 |
|
| 225 |
-
---
|
| 226 |
|
| 227 |
-
|
| 228 |
|
| 229 |
-
|
| 230 |
|
| 231 |
-
|
| 232 |
|
| 233 |
-
|
| 234 |
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
|
| 239 |
-
|
| 240 |
|
| 241 |
-
|
| 242 |
|
| 243 |
-
---
|
| 244 |
|
| 245 |
-
|
| 246 |
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
|
| 252 |
-
---
|
| 253 |
|
| 254 |
-
|
| 255 |
|
| 256 |
-
1.
|
| 257 |
-
2.
|
| 258 |
-
3.
|
| 259 |
-
4.
|
| 260 |
|
| 261 |
-
---
|
| 262 |
|
| 263 |
-
|
| 264 |
|
| 265 |
आप मजबूत हैं। आप सम्मान की हकदार हैं। आपका जीवन अनमोल है।
|
| 266 |
|
| 267 |
यह संकट अस्थायी है, आप स्थायी हैं। आगे बढ़ें - बस शुरुआत करें।
|
| 268 |
|
| 269 |
-
---
|
| 270 |
|
| 271 |
-
|
| 272 |
|
| 273 |
return output
|
| 274 |
|
|
@@ -276,19 +277,19 @@ def process_voice_input(audio):
|
|
| 276 |
print(f"❌ Pipeline Error: {e}")
|
| 277 |
import traceback
|
| 278 |
traceback.print_exc()
|
| 279 |
-
return f"""
|
| 280 |
|
| 281 |
एक तकनीकी समस्या आई है। कृपया पुनः प्रयास करें।
|
| 282 |
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
|
| 286 |
|
| 287 |
-
|
| 288 |
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
|
| 293 |
# ============================================
|
| 294 |
# GRADIO INTERFACE - DARK TECH THEME
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
import os
|
| 3 |
import torch
|
| 4 |
+
import re
|
| 5 |
from transformers import pipeline
|
| 6 |
import google.generativeai as genai
|
| 7 |
|
|
|
|
| 63 |
- आत्मविश्वास बढ़ाएं
|
| 64 |
- "आप अकेली नहीं हैं, हज़ारों महिलाएं इस यात्रा पर हैं"
|
| 65 |
|
| 66 |
+
उत्तर का ढांचा (सादा टेक्स्ट, कोई Markdown नहीं):
|
| 67 |
|
| 68 |
+
आपकी स्थिति समझी | Situation Understanding
|
| 69 |
|
| 70 |
[संक्षिप्त पुनरावृत्ति + भावनात्मक स्वीकृति - 2-3 वाक्य]
|
| 71 |
|
| 72 |
+
भावनाएं स्वीकार करते हैं | Emotional Validation
|
| 73 |
|
| 74 |
[आपकी भावनाओं को वैध ठहराएं - 2-3 वाक्य]
|
| 75 |
|
| 76 |
+
प्रेरक कहानी | Inspirational Story
|
| 77 |
|
| 78 |
[एक समान केस स्टडी - कैसे किसी ने बाहर निकला - 4-5 वाक्य]
|
| 79 |
|
| 80 |
+
तुरंत करें | Immediate Actions
|
| 81 |
|
| 82 |
1. [कदम 1 - स्पष्ट और व्यावहारिक]
|
| 83 |
2. [कदम 2 - स्पष्ट और व्यावहारिक]
|
| 84 |
3. [कदम 3 - स्पष्ट और व्यावहारिक]
|
| 85 |
4. [कदम 4 - स्पष्ट और व्यावहारिक]
|
| 86 |
|
| 87 |
+
महत्वपूर्ण संपर्क | Important Contacts
|
| 88 |
|
| 89 |
[हेल्पलाइन, NGO, कानूनी सहायता - संक्षिप्त सूची]
|
| 90 |
|
| 91 |
+
याद रखें | Remember
|
| 92 |
|
| 93 |
[सशक्तिकरण संदेश + आशा का संदेश - 2-3 वाक्य]
|
| 94 |
|
|
|
|
| 96 |
- हमेशा आशावादी, सहायक और सशक्तिकरण पर ध्यान दें
|
| 97 |
- कानूनी सलाह न दें - केवल कानूनी सहायता तक निर्देशित करें
|
| 98 |
- भाषा: सरल हिंदी + अंग्रेजी मिश्रण, महिलाओं के दिल तक पहुंचे
|
| 99 |
+
- कोई Markdown formatting नहीं - सादा टेक्स्ट ही उपयोग करें (कोई #, *, **, - नहीं)
|
| 100 |
- उत्तर संक्षिप्त, स्पष्ट और व्यावहारिक होना चाहिए
|
| 101 |
- प्रत्येक सेक्शन में पर्याप्त जानकारी दें लेकिन बहुत लंबा न हो"""
|
| 102 |
|
|
|
|
| 140 |
|
| 141 |
---
|
| 142 |
|
| 143 |
+
महिला का कथन | User's Statement:
|
| 144 |
|
| 145 |
"{text}"
|
| 146 |
|
| 147 |
---
|
| 148 |
|
| 149 |
+
अब उपरोक्त ढांचे के अनुसार संपूर्ण विश्लेषण और समाधान दें। सादा टेक्स्ट में लिखें - कोई Markdown formatting नहीं (कोई #, *, **, - नहीं)। प्रत्येक सेक्शन को स्पष्ट रूप से अलग करें।"""
|
| 150 |
|
| 151 |
model = genai.GenerativeModel("gemini-2.0-flash")
|
| 152 |
response = model.generate_content(
|
|
|
|
| 176 |
"""Main pipeline: Audio → Text → Analysis → Empowerment"""
|
| 177 |
|
| 178 |
if audio is None:
|
| 179 |
+
return "कृपया अपनी आवाज़ रिकॉर्ड करें | Please record your voice\n\nमाइक्रोफोन बटन पर क्लिक करके अपनी आवाज़ रिकॉर्ड करें।\nClick the microphone button to record your voice."
|
| 180 |
|
| 181 |
try:
|
| 182 |
# STEP 1: Speech to Text
|
|
|
|
| 186 |
text = transcribe_audio(audio)
|
| 187 |
|
| 188 |
if not text or len(text.strip()) < 5:
|
| 189 |
+
return """आवाज़ स्पष्ट नहीं सुनाई दी | Could Not Understand Clearly
|
| 190 |
|
| 191 |
माफ़ कीजिए, आपकी आवाज़ स्पष्ट रूप से समझ नहीं आई।
|
| 192 |
|
| 193 |
+
कृपया निम्नलिखित बातों का ध्यान रखें:
|
| 194 |
+
शांत वातावरण में रिकॉर्ड करें
|
| 195 |
+
स्पष्ट और धीरे-धीरे बोलें
|
| 196 |
+
माइक्रोफोन के पास बोलें
|
| 197 |
+
पुनः प्रयास करें
|
| 198 |
+
|
| 199 |
+
Please ensure:
|
| 200 |
+
Record in a quiet environment
|
| 201 |
+
Speak clearly and slowly
|
| 202 |
+
Stay close to the microphone
|
| 203 |
+
Try again"""
|
| 204 |
|
| 205 |
# STEP 2: Analysis & Empowerment
|
| 206 |
print("\n" + "="*70)
|
|
|
|
| 208 |
print("="*70)
|
| 209 |
analysis = analyze_with_gemini(text)
|
| 210 |
|
| 211 |
+
# Clean markdown from analysis - remove all markdown formatting
|
| 212 |
+
clean_analysis = re.sub(r'#{1,6}\s+', '', analysis) # Remove headers
|
| 213 |
+
clean_analysis = re.sub(r'\*\*([^*]+)\*\*', r'\1', clean_analysis) # Remove bold
|
| 214 |
+
clean_analysis = re.sub(r'\*([^*]+)\*', r'\1', clean_analysis) # Remove italic
|
| 215 |
+
clean_analysis = re.sub(r'^\s*[-*+]\s+', '', clean_analysis, flags=re.MULTILINE) # Remove list markers
|
| 216 |
+
clean_analysis = re.sub(r'^\s*\d+\.\s+', '', clean_analysis, flags=re.MULTILINE) # Remove numbered list markers
|
| 217 |
+
|
| 218 |
+
# Format output with clean, plain text structure
|
| 219 |
+
output = f"""महिला सशक्तिकरण सहायक | Women Empowerment Assistant
|
| 220 |
|
|
|
|
| 221 |
|
| 222 |
+
आपने कहा | What You Said
|
| 223 |
|
| 224 |
{text}
|
| 225 |
|
|
|
|
| 226 |
|
| 227 |
+
विस्तृत विश्लेषण एवं समाधान | Comprehensive Analysis & Solutions
|
| 228 |
|
| 229 |
+
{clean_analysis}
|
| 230 |
|
|
|
|
| 231 |
|
| 232 |
+
आपातकालीन हेल्पलाइन | Emergency Helplines
|
| 233 |
|
| 234 |
+
पुलिस आपातकाल | Police Emergency: 100 / 112 (24/7)
|
| 235 |
|
| 236 |
+
महिला हेल्पलाइन | Women Helpline: 181 (24/7)
|
| 237 |
|
| 238 |
+
बाल हेल्पलाइन | Child Helpline: 1098 (24/7)
|
| 239 |
|
| 240 |
+
मानसिक स्वास्थ्य | Mental Health:
|
| 241 |
+
080-46110007
|
| 242 |
+
AASRA: 9820466726
|
| 243 |
|
| 244 |
+
कानूनी सहायता | Legal Aid: NALSA - 15100 (Free Legal Aid)
|
| 245 |
|
| 246 |
+
वूमन पावर सेंटर | Women Power Center: अपने शहर का केंद्र Google पर खोजें
|
| 247 |
|
|
|
|
| 248 |
|
| 249 |
+
आपके लिए महत्वपूर्ण | Important for You
|
| 250 |
|
| 251 |
+
आप अकेली नहीं हैं - भारत में लाखों महिलाएं इसी यात्रा पर हैं
|
| 252 |
+
आपकी आवाज़ मायने रखती है - सुनवाई करवाना आपका अधिकार है
|
| 253 |
+
कानून आपके साथ है - IPC 498A, DV Act, दहेज निषेध अधिनियम
|
| 254 |
+
सहायता उपलब्ध है - NGO, कानूनी, मानसिक स्वास्थ्य सेवाएं
|
| 255 |
|
|
|
|
| 256 |
|
| 257 |
+
अगले कदम | Next Steps
|
| 258 |
|
| 259 |
+
1. विश्वसनीय व्यक्ति से बात करें - माता, बहन, या विश्वसनीय दोस्त को बताएं
|
| 260 |
+
2. हेल्पलाइन पर संपर्क करें - उपरोक्त हेल्पलाइन नंबरों पर तुरंत कॉल करें
|
| 261 |
+
3. दस्तावेज़ सुरक्षित रखें - सभी प्रासंगिक दस्तावेज़ और सबूत सुरक्षित स्थान पर रखें
|
| 262 |
+
4. कानूनी सलाह लें - NALSA (15100) पर कॉल करके मुफ्त कानूनी सहायता प्राप्त करें
|
| 263 |
|
|
|
|
| 264 |
|
| 265 |
+
हमारा संदेश | Our Message
|
| 266 |
|
| 267 |
आप मजबूत हैं। आप सम्मान की हकदार हैं। आपका जीवन अनमोल है।
|
| 268 |
|
| 269 |
यह संकट अस्थायी है, आप स्थायी हैं। आगे बढ़ें - बस शुरुआत करें।
|
| 270 |
|
|
|
|
| 271 |
|
| 272 |
+
गोपनीयता | Privacy: आपकी बातचीत पूरी तरह सुरक्षित और गोपनीय है।"""
|
| 273 |
|
| 274 |
return output
|
| 275 |
|
|
|
|
| 277 |
print(f"❌ Pipeline Error: {e}")
|
| 278 |
import traceback
|
| 279 |
traceback.print_exc()
|
| 280 |
+
return f"""त्रुटि | Error
|
| 281 |
|
| 282 |
एक तकनीकी समस्या आई है। कृपया पुनः प्रयास करें।
|
| 283 |
|
| 284 |
+
यदि समस्या बनी रहे:
|
| 285 |
+
तुरंत महिला हेल्पलाइन 181 पर कॉल करें
|
| 286 |
+
आपातकालीन स्थिति में 100/112 पर कॉल करें
|
| 287 |
|
| 288 |
+
Technical Error: {str(e)}
|
| 289 |
|
| 290 |
+
If the problem persists:
|
| 291 |
+
Call Women Helpline 181 immediately
|
| 292 |
+
For emergencies, call 100/112"""
|
| 293 |
|
| 294 |
# ============================================
|
| 295 |
# GRADIO INTERFACE - DARK TECH THEME
|