switching to high quality piper tts and added label translations
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
from ultralytics import YOLO
|
||||
import random
|
||||
|
||||
# Lädt das Modell (Nano-Version ist schnell & reicht für Tassen/Teller)
|
||||
model = YOLO("models/yolo11n.pt")
|
||||
|
||||
# Deutsch-Übersetzung für gängige Objekte
|
||||
label_map = {
|
||||
"cup": "eine Tasse",
|
||||
"bottle": "eine Flasche",
|
||||
"cell phone": "ein Handy",
|
||||
"person": "einen Menschen (vermutlich Matthias, der schon wieder nichts tut)",
|
||||
"laptop": "einen Laptop",
|
||||
"chair": "einen Stuhl",
|
||||
"remote": "eine Fernbedienung",
|
||||
"keyboard": "eine Tastatur",
|
||||
"mouse": "eine Maus",
|
||||
"bicycle": "ein Fahrrad"
|
||||
}
|
||||
|
||||
def analyze_image_with_yolo(image_path):
|
||||
results = model.predict(source=image_path, conf=0.45)
|
||||
|
||||
found_items = []
|
||||
for result in results:
|
||||
for box in result.boxes:
|
||||
label = result.names[int(box.cls)]
|
||||
found_items.append(label)
|
||||
|
||||
description = generate_description(found_items)
|
||||
insult = generate_insult(found_items)
|
||||
|
||||
return f"{description} {insult}"
|
||||
|
||||
def generate_description(items):
|
||||
if not items:
|
||||
return "Ich sehe absolut gar nichts."
|
||||
|
||||
translated_items = [label_map.get(item, f"ein {item}") for item in set(items)]
|
||||
|
||||
if len(translated_items) == 1:
|
||||
return f"Ich sehe {translated_items[0]}."
|
||||
|
||||
last_item = translated_items.pop()
|
||||
return f"Ich sehe {', '.join(translated_items)} und {last_item}."
|
||||
|
||||
def generate_insult(items):
|
||||
# Mapping von Objekten zu nervigen Kommentaren
|
||||
insults = {
|
||||
"cup": [
|
||||
"Matthias, die Tasse auf dem Tisch hat mittlerweile ein eigenes Ökosystem. Räum sie weg!",
|
||||
"Ist das Kunst oder kann das weg? Ich meine die Tasse, Matthias.",
|
||||
"Noch eine Tasse? Willst du ein Café eröffnen oder bist du einfach nur faul?"
|
||||
],
|
||||
"bottle": [
|
||||
"Leergut gehört in die Kiste, nicht in mein Sichtfeld.",
|
||||
"Flasche leer, Kopf leer? Bring das Ding weg."
|
||||
],
|
||||
"cell phone": [
|
||||
"Schon wieder am Handy? Kein Wunder, dass hier nichts vorangeht.",
|
||||
"Digital Detox würde dir gut tun, Matthias. Leg das Ding weg."
|
||||
]
|
||||
}
|
||||
|
||||
# Schauen, ob wir was zum Meckern finden
|
||||
for item, phrases in insults.items():
|
||||
if item in items:
|
||||
return random.choice(phrases)
|
||||
|
||||
if not items:
|
||||
return "Ich bin mir aber sicher, du hast irgendwo Dreck versteckt."
|
||||
|
||||
return "Eigentlich sieht alles okay aus... Das macht mich erst recht misstrauisch."
|
||||
Reference in New Issue
Block a user