Wall06 commited on
Commit
5d0d9f3
·
verified ·
1 Parent(s): 073eb85

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -0
app.py CHANGED
@@ -11,6 +11,7 @@ from sentinelhub import SHConfig
11
  from groq import Groq
12
  import google.generativeai as genai
13
  import tempfile
 
14
 
15
  # -------------------- ENVIRONMENT VARIABLES --------------------
16
  HF_API_KEY = os.getenv("HF_API_KEY")
@@ -18,6 +19,7 @@ GROQ_API_KEY = os.getenv("GROQ_API_KEY")
18
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
19
  SENTINEL_CLIENT_ID = os.getenv("SENTINEL_CLIENT_ID")
20
  SENTINEL_CLIENT_SECRET = os.getenv("SENTINEL_CLIENT_SECRET")
 
21
 
22
  # -------------------- SENTINEL CONFIG --------------------
23
  config = SHConfig()
@@ -25,6 +27,14 @@ if SENTINEL_CLIENT_ID and SENTINEL_CLIENT_SECRET:
25
  config.client_id = SENTINEL_CLIENT_ID
26
  config.client_secret = SENTINEL_CLIENT_SECRET
27
 
 
 
 
 
 
 
 
 
28
  # -------------------- AI FUNCTIONS --------------------
29
  def gemini_summary(text):
30
  try:
@@ -78,6 +88,32 @@ def smart_summary(text):
78
  errors.append(f"HF: {err}")
79
  return "⚠ SYSTEM FAILURE. DEBUG LOG:\n" + "\n".join(errors)
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  # -------------------- MATH & LOGIC --------------------
82
  def calculate_wqi(pH, do, nutrients):
83
  wqi = (7 - abs(7 - pH)) * 0.2 + (do/14) * 0.5 + (10 - nutrients) * 0.3
@@ -346,6 +382,17 @@ with gr.Blocks(title="FlumenIntel") as demo:
346
  lines=20,
347
  interactive=False
348
  )
 
 
 
 
 
 
 
 
 
 
 
349
 
350
  with gr.TabItem("📥 Export"):
351
  gr.Markdown("### Download Verified PDF")
 
11
  from groq import Groq
12
  import google.generativeai as genai
13
  import tempfile
14
+ from elevenlabs.client import ElevenLabs
15
 
16
  # -------------------- ENVIRONMENT VARIABLES --------------------
17
  HF_API_KEY = os.getenv("HF_API_KEY")
 
19
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
20
  SENTINEL_CLIENT_ID = os.getenv("SENTINEL_CLIENT_ID")
21
  SENTINEL_CLIENT_SECRET = os.getenv("SENTINEL_CLIENT_SECRET")
22
+ ELEVENLABS_API_KEY = os.getenv("ELEVENLABS_API_KEY")
23
 
24
  # -------------------- SENTINEL CONFIG --------------------
25
  config = SHConfig()
 
27
  config.client_id = SENTINEL_CLIENT_ID
28
  config.client_secret = SENTINEL_CLIENT_SECRET
29
 
30
+ # -------------------- ELEVENLABS SETUP --------------------
31
+ el_client = None
32
+ if ELEVENLABS_API_KEY:
33
+ try:
34
+ el_client = ElevenLabs(api_key=ELEVENLABS_API_KEY)
35
+ except:
36
+ pass
37
+
38
  # -------------------- AI FUNCTIONS --------------------
39
  def gemini_summary(text):
40
  try:
 
88
  errors.append(f"HF: {err}")
89
  return "⚠ SYSTEM FAILURE. DEBUG LOG:\n" + "\n".join(errors)
90
 
91
+ # -------------------- AUDIO FUNCTION --------------------
92
+ def generate_audio_report(text):
93
+ """Safely generates audio. Returns None on failure instead of crashing."""
94
+ if not text:
95
+ return None
96
+
97
+ # If client isn't ready (missing key), exit safely
98
+ if not el_client:
99
+ return None
100
+
101
+ try:
102
+ # Generate audio (limit length to save credits/speed up)
103
+ audio_stream = el_client.generate(
104
+ text=text[:500],
105
+ voice="Brian",
106
+ model="eleven_multilingual_v2"
107
+ )
108
+
109
+ # Save to a temporary file
110
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as f:
111
+ for chunk in audio_stream:
112
+ f.write(chunk)
113
+ return f.name
114
+ except:
115
+ return None
116
+
117
  # -------------------- MATH & LOGIC --------------------
118
  def calculate_wqi(pH, do, nutrients):
119
  wqi = (7 - abs(7 - pH)) * 0.2 + (do/14) * 0.5 + (10 - nutrients) * 0.3
 
382
  lines=20,
383
  interactive=False
384
  )
385
+ # --- AUDIO BUTTON ADDED HERE ---
386
+ with gr.Row():
387
+ audio_btn = gr.Button("🔊 Listen to Report (ElevenLabs)")
388
+ audio_out = gr.Audio(label="Player", type="filepath")
389
+
390
+ audio_btn.click(
391
+ fn=generate_audio_report,
392
+ inputs=ai_summary,
393
+ outputs=audio_out
394
+ )
395
+ # -------------------------------
396
 
397
  with gr.TabItem("📥 Export"):
398
  gr.Markdown("### Download Verified PDF")