41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
import asyncio
|
|
import threading
|
|
from voice_player import VoiceImagePlayer, edge_speak
|
|
from speech_to_text import record_voice
|
|
from groq_ai import get_response
|
|
from aircraft_module import handle_aircraft_command
|
|
|
|
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
|
|
|
|
handled = handle_aircraft_command(user_text, player)
|
|
if handled:
|
|
continue
|
|
|
|
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():
|
|
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()
|