switching to high quality piper tts and added label translations

This commit is contained in:
Matthias Hinrichs
2026-01-29 23:48:19 +01:00
commit d80c619df9
3934 changed files with 1451600 additions and 0 deletions
+73
View File
@@ -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."