import tkinter as tk from tkinter import messagebox import asyncio from ai_system.ai_core import AICore import speech_recognition as sr import pyttsx3 class AIApplication(tk.Tk): def __init__(self): super().__init__() self.ai = AICore() self.speech_recognizer = sr.Recognizer() self.title("AI Assistant - Final Version") self.geometry("1200x700") self._init_ui() def _init_ui(self): self.query_entry = tk.Entry(self, width=100) self.query_entry.pack(pady=10) tk.Button(self, text="Submit", command=self._submit_query).pack() self.response_area = tk.Text(self, width=120, height=30) self.response_area.pack(pady=10) tk.Button(self, text="Voice Input", command=self._listen_voice_command).pack() def _submit_query(self): query = self.query_entry.get() if not query: return async def process(): result = await self.ai.generate_response(query, 1) self.response_area.insert(tk.END, f"Response: {result['response']} ") asyncio.run_coroutine_threadsafe(process(), asyncio.get_event_loop()) def _listen_voice_command(self): with sr.Microphone() as source: print("Listening for voice command...") audio = self.speech_recognizer.listen(source) try: command = self.speech_recognizer.recognize_google(audio) self.query_entry.delete(0, tk.END) self.query_entry.insert(0, command) self._submit_query() except: print("Voice command not recognized.") if __name__ == "__main__": app = AIApplication() app.mainloop()