Interaktiver Sprach-Coach für den Bildungsbereich auf Basis des Misty II Roboters. Erkennt Füllwörter und analysiert das Sprechtempo von Sprachartefakten mithilfe von OpenAI Whisper. Misty gibt direktes Feedback per Sprache und Gesichtsausdruck. Lehrende können Ergebnisse in Echtzeit auf einem Web-Dashboard verfolgen. Entwickelt im Rahmen von Modul M2 im Masterstudiengang Medien- und Bildungsmanagement (MBM) an der PH Weingarten
Find a file
2026-07-22 21:47:23 +02:00
__pycache__ Heartbeat, Error Handling, SSE, Füllwörter-Verwaltung, Sprach-Coach 2026-07-07 13:04:32 +00:00
livemodus first commit 2026-05-06 12:46:05 +00:00
old first commit 2026-05-06 12:46:05 +00:00
static first commit 2026-05-06 12:46:05 +00:00
templates Heartbeat, Error Handling, SSE, Füllwörter-Verwaltung, Sprach-Coach 2026-07-07 13:04:32 +00:00
.gitignore Update Misty Coaching Dashboard und Analyse 2026-05-06 15:33:47 +00:00
analyse.py Update Misty Coaching Dashboard und Analyse 2026-05-06 15:33:47 +00:00
config.py Heartbeat, Error Handling, SSE, Füllwörter-Verwaltung, Sprach-Coach 2026-07-07 13:04:32 +00:00
dashboard.py Update Misty Coaching Dashboard und Analyse 2026-05-06 15:33:47 +00:00
fuellwoerter.json Heartbeat, Error Handling, SSE, Füllwörter-Verwaltung, Sprach-Coach 2026-07-07 13:04:32 +00:00
LICENSE.md LICENSE.md aktualisiert 2026-07-22 20:27:27 +02:00
misty_logo.png Logo hochgeladen 2026-07-22 20:16:35 +02:00
README.md README.md aktualisiert 2026-07-22 21:35:36 +02:00
session_daten.json Heartbeat, Error Handling, SSE, Füllwörter-Verwaltung, Sprach-Coach 2026-07-07 13:04:32 +00:00
start_coaching.py Heartbeat, Error Handling, SSE, Füllwörter-Verwaltung, Sprach-Coach 2026-07-07 13:04:32 +00:00

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 Beschreibung des Projektes findest du hier: Projektbeschreibung 📄


Installation & Setup

Voraussetzungen

  • Misty II Roboter
  • The Misty App (offizielle Begleitapp von Misty II Roboter zur Ermittlung der Wlan-Verbindung und IP-Adresse-Anzeige)
  • Ubuntu-Server im gleichen WLAN wie Misty II
  • Python 3.12
  • FFmpeg

Installation & Setup

Systempakete installieren

sudo apt install ffmpeg

Python-Pakete installieren

pip install -r requirements.txt

Verwendete Pakete:

  • openai-whisper KI-Sprachtranskription
  • requests HTTP-Kommunikation mit Misty API
  • websocket-client WebSocket-Verbindung für Bumper-Ereignisse
  • flask Webserver für das Dashboard
  • numpy Audiodatenverarbeitung

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 und notieren (wird später benötigt)

Falls die Misty App nicht verfügbar ist, kann die IP so gefunden werden:

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

ssh misty2@192.168.68.62
# Passwort: misty2

Schritt 2 Umgebung aktivieren

source ~/projekt_env/bin/activate
cd ~/misty_stream

Schritt 3 Misty IP aktualisieren

nano config.py
# IP anpassen → Strg+O → Enter → Strg+X

Schritt 4 Dashboard starten (Terminal 1)

python3 dashboard.py

Dashboard im Browser aufrufen:

http://192.168.68.62:5000

Schritt 5 Coaching starten

⚠️ Für diesen Schritt ein weiteres PowerShell-Fenster öffnen das aktuelle Terminal läuft für das Dashboard weiter.

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 → Misty sagt „Ich höre dir zu"
  2. Sprechen
  3. Mistys Fuß nochmal drücken → Aufnahme stoppt

Misty analysiert die Aufnahme und gibt Feedback per Sprache und Gesichtsausdruck. Die Ergebnisse werden automatisch im Dashboard angezeigt. Für eine weitere Session einfach wieder den Fuß drücken das Skript läuft dauerhaft und beliebig viele Sessions sind hintereinander möglich.

Programm beenden

Strg+C

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:

["äh", "ähm", "ehm", "mhm", "hm", "halt", "also", "sozusagen", "irgendwie"]

Feedback-Logik

Füllwörter Tempo Gesicht
02 90150 W/min e_Love.jpg ❤️
02 außerhalb e_Contempt.jpg 😏
3+ 90150 W/min e_Contempt.jpg 😏
3+ außerhalb e_Sadness.jpg 😢

Sprechtempo:

  • unter 90 W/min → zu langsam
  • 90150 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 freie Nutzung und Weiterentwicklung erlaubt.

Tiffany Brugger, Giulia Carli PH Weingarten 2026