Fluospark128 commited on
Commit
bbd08dd
·
verified ·
1 Parent(s): 6e0afc7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -52
app.py CHANGED
@@ -1,53 +1,50 @@
1
-
2
- # app.py
3
  import gradio as gr
4
- #from eeg_model import simulate_eeg_data, predict_mental_state
5
- from generative_model import generate_response
6
- from audio_utils import record_audio
7
- from tts_utils import nigerian_accent_tts
8
- from conversation_memory import ConversationMemory
9
-
10
- memory = ConversationMemory()
11
-
12
- # Logic
13
- def chat(user_text=None, record_audio_flag=False):
14
- if record_audio_flag:
15
- user_text = record_audio()
16
-
17
- if not user_text:
18
- return "No input detected.", None
19
-
20
- # 1. Predict mental state
21
- eeg_features = simulate_eeg_data()
22
- mental_state = predict_mental_state(eeg_features)
23
-
24
- # 2. Generate response with memory
25
- history = memory.get_formatted_history()
26
- ai_response = generate_response(mental_state, user_text, history)
27
-
28
- # 3. Update memory
29
- memory.add_exchange(user_input=user_text, bot_response=ai_response)
30
-
31
- # 4. Nigerian Accent TTS
32
- nigerian_accent_tts(ai_response, mental_state)
33
-
34
- return ai_response, "response.mp3"
35
-
36
- # Gradio app
37
- with gr.Blocks() as demo:
38
- gr.Markdown("# EEG Mental State Chatbot with Nigerian Voice (Upgraded)")
39
-
40
- with gr.Row():
41
- user_input = gr.Textbox(label="Type your message")
42
- record_audio_flag = gr.Checkbox(label="Use Microphone?", value=False)
43
-
44
- with gr.Row():
45
- submit_btn = gr.Button("Send")
46
-
47
- with gr.Row():
48
- chatbot_response = gr.Textbox(label="Chatbot response")
49
- chatbot_audio = gr.Audio(label="Chatbot voice", type="filepath")
50
-
51
- submit_btn.click(chat, inputs=[user_input, record_audio_flag], outputs=[chatbot_response, chatbot_audio])
52
-
53
- demo.launch()
 
 
 
1
  import gradio as gr
2
+ import google.generativeai as genai
3
+ import os
4
+ from gtts import gTTS
5
+ import random
6
+ from tempfile import NamedTemporaryFile
7
+ from dotenv import load_dotenv
8
+
9
+ load_dotenv()
10
+ API_KEY = os.getenv("GEMINI_API_KEY") or "YOUR_GEMINI_API_KEY"
11
+
12
+ genai.configure(api_key=API_KEY)
13
+ model = genai.GenerativeModel("gemini-1.5-pro")
14
+
15
+ def predict_emotion():
16
+ return random.choice(["positive", "neutral", "negative"])
17
+
18
+ def chat_with_ai(audio):
19
+ if audio is None:
20
+ return "No audio provided", None
21
+
22
+ import speech_recognition as sr
23
+ recognizer = sr.Recognizer()
24
+ with sr.AudioFile(audio) as source:
25
+ audio_data = recognizer.record(source)
26
+ try:
27
+ text = recognizer.recognize_google(audio_data)
28
+ except sr.UnknownValueError:
29
+ return "Sorry, I couldn't understand the audio.", None
30
+
31
+ emotion = predict_emotion()
32
+ prompt = f"The user is feeling {emotion}. Respond appropriately.\nUser said: {text}"
33
+ response = model.generate_content(prompt).text
34
+
35
+ # Convert response to audio
36
+ tts = gTTS(text=response, lang='en', tld='com.ng')
37
+ temp_audio = NamedTemporaryFile(delete=False, suffix=".mp3")
38
+ tts.save(temp_audio.name)
39
+
40
+ return response, temp_audio.name
41
+
42
+ iface = gr.Interface(
43
+ fn=chat_with_ai,
44
+ inputs=gr.Audio(source="microphone", type="filepath", label="Speak"),
45
+ outputs=[gr.Textbox(label="AI Response"), gr.Audio(label="AI Voice")],
46
+ title="Voice-Based AI Assistant",
47
+ description="Speak to the AI and get an emotional, spoken response."
48
+ )
49
+
50
+ iface.launch()