Misty Sprach-Coach # Misty Sprach-Coach > đŸ€– **Misty II Roboter** als interaktiver KI-gestĂŒtzter Sprach-Coach fĂŒr den Bildungsbereich > đŸŽ™ïž Erkennt **FĂŒllwörter** und analysiert das **Sprechtempo** von Sprechproben mithilfe von OpenAI Whisper > 💬 Gibt **direktes** Feedback per Sprache und **Gesichtsausdruck** > 📊 Lehrende können Ergebnisse in Echtzeit auf einem **Web-Dashboard** verfolgen > Dieses Projekt wurde im Rahmen des Moduls *M2 Entwicklung Interaktiver Medien* im Masterstudiengang Medien- und Bildungsmanagement (MBM) an der PĂ€dagogischen Hochschule Weingarten entwickelt. Eine ausfĂŒhrliche des Beschreibung des Projektes findest du hier: [Projektbeschreibung 📄](./Projektbeschreibung_MistySprachCoach.pdf) --- ## Installation & Setup ### Voraussetzungen - Ubuntu-Rechner im gleichen WLAN wie Misty II - Python 3.12 - Virtuelle Umgebung: `~/projekt_env/` - FFmpeg: `sudo apt install ffmpeg` ### Installierte Pakete ```bash pip install -r requirements.txt ``` ### Wichtiger Hinweis vor dem Start ⚠ **Mistys IP-Adresse Ă€ndert sich bei jedem Neustart!** 1. Misty einschalten und hochfahren lassen 2. **Misty App** öffnen → aktuelle IP ablesen 3. IP in `config.py` eintragen: ```python MISTY_IP = "192.168.68.XX" # ← aktuelle IP eintragen ``` Falls die Misty App nicht verfĂŒgbar ist, kann die IP so gefunden werden: ```bash for i in $(seq 50 80); do echo -n "192.168.68.$i: "; curl -s --connect-timeout 1 http://192.168.68.$i/api/device | head -c 20; echo; done ``` --- ## Starten ### Schritt 1 – Mit Server verbinden ```bash ssh misty2@192.168.68.62 # Passwort: misty2 ``` ### Schritt 2 – Umgebung aktivieren ```bash source ~/projekt_env/bin/activate cd ~/misty_stream ``` ### Schritt 3 – Misty IP aktualisieren ```bash nano config.py # IP anpassen → Strg+O → Enter → Strg+X ``` ### Schritt 4 – Dashboard starten (Terminal 1) ```bash python3 dashboard.py ``` Dashboard im Browser aufrufen: ``` http://192.168.68.62:5000 ``` ### Schritt 5 – Coaching starten (Terminal 2 – neues SSH-Fenster) ```bash ssh misty2@192.168.68.62 source ~/projekt_env/bin/activate cd ~/misty_stream python3 start_coaching.py ``` ### Schritt 6 – Coaching nutzen 1. Mistys Fuß drĂŒcken (1. Mal) → Misty sagt „Ich höre dir zu" 2. PrĂ€sentation halten 3. Mistys Fuß drĂŒcken (2. Mal) → Aufnahme stoppt 4. Whisper analysiert die Aufnahme 5. Misty gibt Feedback per Sprache und Gesichtsausdruck 6. Dashboard aktualisiert sich automatisch ### Programm beenden ``` Strg+C ``` Misty setzt automatisch wieder das neutrale Gesicht. --- ## Dashboard Aufruf: `http://192.168.68.62:5000` ### Features - Statusanzeige in Echtzeit (wartend / aufnehmend / analysierend) - Letzte Session: FĂŒllwörter, Sprechtempo, Transkript, Gesicht, Feedback - Sessionverlauf mit Fortschrittsbalken - FĂŒllwörter verwalten: hinzufĂŒgen und entfernen - Fehlermeldung wenn Misty nicht erreichbar - Live-Updates per SSE (Server-Sent Events) – kein Seitenrefresh nötig - Heartbeat: prĂŒft alle 5 Sekunden ob Misty erreichbar ist - Wird beim Start von start_coaching.py automatisch zurĂŒckgesetzt ### FĂŒllwörter anpassen Die FĂŒllwortliste kann direkt im Dashboard verwaltet werden. Änderungen gelten ab der nĂ€chsten Session. Standardliste: ```json ["Ă€h", "Ă€hm", "ehm", "mhm", "hm", "halt", "also", "sozusagen", "irgendwie"] ``` ### Feedback-Logik | FĂŒllwörter | Tempo | Gesicht | |------------|--------------|-------------------| | 0–2 | 90–150 W/min | e_Love.jpg ❀ | | 0–2 | außerhalb | e_Contempt.jpg 😏 | | 3+ | 90–150 W/min | e_Contempt.jpg 😏 | | 3+ | außerhalb | e_Sadness.jpg 😱 | Sprechtempo: - unter 90 W/min → zu langsam - 90–150 W/min → optimal - ĂŒber 150 W/min → zu schnell --- ## Ordnerstruktur ``` misty_stream/ ├── config.py ← Misty IP-Adresse (Achtung! Ändert sich mit jedem Neustart) ├── analyse.py ← KI-Modul: Whisper, FĂŒllwörter, Sprechtempo, Feedback ├── start_coaching.py ← Hauptskript: Bumper-Trigger + Aufnahme + Heartbeat ├── dashboard.py ← Flask-Webserver fĂŒr Dashboard (Port 5000) ├── fuellwoerter.json ← FĂŒllwortliste (ĂŒber Dashboard anpassbar) ├── session_daten.json ← Session wird automatisch erstellt/zurĂŒckgesetzt ├── README.md ├── LICENSE ├── requirements.txt ├── templates/ │ └── dashboard.html ← Dashboard-OberflĂ€che ├── static/ │ ├── e_Love.jpg ← Mistys GesichtsausdrĂŒcke │ ├── e_Contempt.jpg │ ├── e_Sadness.jpg │ └── e_DefaultContent.jpg └── livemodus_experimentell/ ← Live-Stream (experimentell, nicht im Hauptworkflow) ├── misty_start_av.py ├── misty_stop_av.py └── whisper_live_check.py ``` --- ## Bekannte EinschrĂ€nkungen - Mistys IP Ă€ndert sich bei jedem Neustart → immer in Misty App nachschauen - Whisper base-Modell transkribiert nicht immer perfekt – small wĂ€re genauer aber auf dem Server ohne GPU zu langsam - FP16-Warnung im Terminal ist harmlos (kein GPU vorhanden) - Livemodus (RTSP-Stream) wurde entwickelt aber als zu instabil eingestuft → liegt in `livemodus_experimentell/` - Programm nur per Strg+C beendbar --- ## Mögliche Weiterentwicklungen - GrĂ¶ĂŸeres Whisper-Modell (small/medium) auf leistungsstĂ€rkerer Hardware - Livemodus stabilisieren fĂŒr Echtzeit-Feedback - Persistente Datenspeicherung ĂŒber Sessions hinaus - Mehrsprachige UnterstĂŒtzung - Benutzerverwaltung im Dashboard fĂŒr mehrere SchĂŒler --- ## Lizenz [MIT License](./LICENSE.md) – freie Nutzung und Weiterentwicklung erlaubt. Tiffany Brugger, Giulia Carli – PH Weingarten 2026