47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import asyncio
|
|||
|
|
import threading
|
||
|
|
from voice_player import VoiceImagePlayer, edge_speak
|
||
|
|
from speech_to_text import record_voice
|
||
|
|
#from recognition import record_voice
|
||
|
|
from groq_ai import get_response
|
||
|
|
|
||
|
|
async def get_voice_input():
|
||
|
|
return await asyncio.to_thread(record_voice)
|
||
|
|
|
||
|
|
async def ai_loop(player):
|
||
|
|
|
||
|
|
while True:
|
||
|
|
user_text = await get_voice_input()
|
||
|
|
if not user_text:
|
||
|
|
continue
|
||
|
|
|
||
|
|
print("User:", user_text)
|
||
|
|
lowered = user_text.lower().strip()
|
||
|
|
|
||
|
|
if lowered in ["exit", "quit", "goodbye", "bye", "stop","mute"]:
|
||
|
|
edge_speak("Goodbye sir.", player)
|
||
|
|
player.root.after(300, player.root.destroy)
|
||
|
|
break
|
||
|
|
|
||
|
|
response = get_response(user_text)
|
||
|
|
print("AI:", response)
|
||
|
|
|
||
|
|
edge_speak(response, player)
|
||
|
|
|
||
|
|
player.write_log(f"You: {user_text}")
|
||
|
|
player.write_log(f"AI: {response}")
|
||
|
|
|
||
|
|
|
||
|
|
def main_loop():
|
||
|
|
print("")
|
||
|
|
|
||
|
|
player = VoiceImagePlayer("face.png", size=(900, 900))
|
||
|
|
|
||
|
|
def thread_target():
|
||
|
|
asyncio.run(ai_loop(player))
|
||
|
|
|
||
|
|
threading.Thread(target=thread_target, daemon=True).start()
|
||
|
|
player.root.mainloop()
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main_loop()
|