nora_chat.py hinzugefügt

This commit is contained in:
2026-07-06 22:01:22 +00:00
parent ca55db3f46
commit 776ff62ce3
+136
View File
@@ -0,0 +1,136 @@
import asyncio
import os
import time
import traceback
from edge_tts import Communicate
from agent import Agent
from util.logger import get_logger
logger = get_logger("NORA CHAT")
# =========================
# CONFIG
# =========================
TTS_VOICE = "de-DE-AmalaNeural"
# =========================
# CHAT ASSISTANT
# =========================
class NoraChat:
def __init__(self):
logger.info("Initialisiere N.O.R.A Chat...")
self.agent = Agent()
self.running = True
logger.info("N.O.R.A Chat bereit ✔")
# =========================
# MAIN LOOP
# =========================
async def run(self):
logger.info("Starte Chat-Modus")
while self.running:
try:
user_input = input("\nDu: ")
if user_input.lower() in [
"exit",
"quit",
"stop",
"beenden"
]:
logger.info("Beende NORA")
break
if not user_input.strip():
continue
logger.info(f"USER: {user_input}")
# Agent Anfrage
response = await self.agent.run(user_input)
logger.info(f"NORA: {response}")
print(f"\nNORA: {response}")
# Sprach-Ausgabe
await self.speak(response)
except KeyboardInterrupt:
break
except Exception:
logger.error(traceback.format_exc())
# =========================
# TTS
# =========================
async def speak(self, text):
try:
filename = f"response_{int(time.time())}.mp3"
tts = Communicate(
text,
voice=TTS_VOICE
)
await tts.save(filename)
# Ausgabe über Standard-Audio
os.system(
f"mpg123 -q {filename}"
)
os.remove(filename)
except Exception:
logger.error("TTS Fehler")
logger.error(traceback.format_exc())
# =========================
# MAIN
# =========================
async def main():
nora = NoraChat()
await nora.run()
if __name__ == "__main__":
asyncio.run(main())