Child pages
  • Informatikprojekt Open-Source-Sprachassistenten (WS 20/21)

Informatikprojekt Open-Source-Sprachassistenten (WS 20/21)


Aktuelles zum Informatikprojekt

  • Inhaltliches Kickoff der Veranstaltung ist am Donnerstag 17. September von 14:00 - 17:00. Hier sind die Einwahldaten: 
  • Als Anmeldung zählt der Beitritt zu diesem ILIAS-Kurs. Dort treten Sie dann bitte einer der Gruppen für die Subteams bei. Es gibt mehrere Gruppen "Block-Team <n>" und "Semesterbegleitendes Team <n>".

Diese Seite gibt einen kompletten Überblick über Ziel, Organisation und Bewertung des Informatikprojekts "Open-Source-Sprachassistenten" im Wintersemester 20/21.

Einführung

Sprachassistenten wie Alexa und Google Assistant sind aus unserem Alltag kaum noch wegzudenken. Es gibt aber Bereiche, wo man sie aus datenschutzrechtlichen Bedenken vielleicht lieber nicht einsetzen möchte - wenn es um sehr persönliche Daten geht, zum Beispiel, oder bei besonders schutzbedürftigen Personen. 

Hier gibt es aber durchaus ernstzunehmende Alternativen - Open-Source-Sprachassistenten wie beispielsweise Jasper, Rhasspy, Mycroft, Almond und andere. (Eine prima Übersicht bietet dieser Artikel). Diese setzen in der Regel auf lokaler Hardware wie einem Raspi auf und sind daher potentiell sehr interessante "Maker"-Lösungen. 

In diesem Informatikprojekt wollen wir in kleinen Teams von 3-4 Studierenden jeweils einen Proof-of-Concept umsetzen, um zu testen, wie gut diese Frameworks in der Praxis funktionieren - wie umfangreich ist das Framework, wie robust ist es, wie gut ist es dokumentiert. Am Schluss machen wir eine gemeinsame Präsentation, wo die Teams ihre Ergebnisse vorstellen. Das Ergebnis ist ein einfaches, aber funktionsfähiges sprachsensitives System, das Sie dann praktisch demonstrieren, und die eigenen Erfahrungen mit dem Framework.

Wenn Sie in dem Projekt mitmachen und dann Geschmack daran gefunden haben, gibt es in diesem Rahmen (oder in anderen Themenstellungen des INTIA-Projekts) eine Menge an Projektthemen im Anschluss an das Informatikprojekt. Somit wäre ein fließender Übergang zu Praxisprojekt und Bachelorarbeit gut denkbar.

Kontext

Das Informatikprojekt führe ich im Rahmen des Forschungsprojektes INTIA durch, ein BMBF-gefördertes interdisziplinäres Projekt aus vier Professor*innen der TH Köln und sieben Mitarbeiter*innen. Hier entwickeln wir einen Innovationskoffer, mit dem Jugendliche und Fachkräfte aus Einrichtungen der sozialen Arbeit selbstständig Prototypen erstellen und erproben können. Ein Teilaspekt davon ist ein Hardware- und Software-Baukasten, mit dem diese Prototypen gebaut werden können. Sprachassistenten sollen einen Baustein abbilden, der alternative Eingabe- und Ausgabemöglichkeiten bietet. Die etablierten Lösungen wie Alexa und Google Assistant sind hier datenschutztechnisch nicht geeignet, weil es um einen sehr privaten Raum und um Menschen geht, die besonders schutzbedürftig sind. Daher wollen wir (als ein Teil-Forschungsziel von INTIA) solche Open-Source Sprachassistenten als datenschutzkonforme Alternative zu existierenden Lösungen evaluieren.

Was Sie im Rahmen dieses Informatikprojektes machen, fließt also direkt in eine praktische Umsetzung von digitalen Hilfsmitteln in der Behinderten- und Erziehungshilfe ein. State-of-the-Art-Technologieentwicklung wird in unserem Projekt direkt mit schützenswerten Personengruppen in der Praxis eingesetzt und evaluiert. Ihre Arbeit landet also nicht in der Schublade.

Uns interessiert die technische Eignung existierender Softwarestacks. Dafür definieren wir zusammen mit Ihnen ein MVP (Minimum Viable Product) aus dem Bereich Smart Home, das dann von Ihnen mit einem Framework Ihrer Wahl im Team umgesetzt wird. In diesem Szenario soll gezeigt werden, dass der umgesetzte Sprachassistent Anweisungen erkennt, die wichtigen Informationen extrahiert und daraufhin eine einfache Handlung (z.B. "Licht an") ausführt. Daran anschließend bewerten Sie aus Ihrer Sicht die Eignung für das konkrete Szenario.

Zum Weiterlesen in das Thema empfiehlt sich der oben schon genannte Blog-Post von Kathy Reid: https://makezine.com/2020/03/17/private-by-design-free-and-private-voice-assistants/. Dieser bietet einen grundlegenden Einblick in das Thema und die existierenden Open-Source-Lösungen.

Aufwand

Der Umfang von 10 CP (300h) wird sich bei diesem Projekt in etwa wie folgt verteilen: 

Aktivität

Aufwand (h)

in Arbeitstagen

Kickoff, Teamorganisation, Einlesen, DevEnv405
Enwicklungszeit19224
Dokumentation der Entwicklungserfahrung405
Abschlusspräsentation mit Vorbereitung283,5
Summe300 (10 CP)37,5

Umsetzung

Wir bieten zwei Formen der Umsetzung des Informatikprojekts an. Ein Teilteam muss sich als Ganzes für eine der beiden Formen entscheiden. 

  1. Als Blockprojekt mit Entwicklungszeitraum vom 21. September bis 30. Oktober mit 4 Arbeitstagen pro Woche.
    1. Wenn der reguläre Vorlesungsbetrieb Anfang November beginnt, sind Sie also mit dem Hauptteil des Projekts durch.
    2. Den "freien Tag" (z.B. freitags) legen Sie selbst im Team fest. 
    3. Ergänzung nach dem Feedback aus der Infoveranstaltung: Wir können den Block in Absprache so anpassen, dass z.B. eine Klausurlernphase möglich ist (beispielsweise durch 2 Wochen Pause mittendrin)
  2. Semesterbegleitend mit 2d/Woche ab November. 
    1. Die beiden Tage legen Sie im Team fest (z.B. immer Di+Mi)
    2. An den Tagen sollten Sie sich dann nur mit dem Projekt beschäftigen, und keine andere Lehrveranstaltung (oder Arbeit) haben.

Weitere Randbedingungen: 

  • In jedem Fall setzen wir das Projekt agil um. Wir stellen für alle Teams einen Scrum Master und einen Product Owner sowie Zugang zu entsprechenden Tools. Die Sprintlängen passen wir dann jeweils an die Form an. Das Teilteam muss sich vorab auf feste Arbeitstage einigen und führt morgens ein Standup durch. 
  • Austausch im Team und Projektbetreuung findet wegen der immer noch akuten Covid-19-Bedrohung remote statt. Wir würden hier gern bei Discord bleiben, das sich bei ST2 sehr bewährt hat. 
  • Arbeit und Dokumentation findet auf GitHub statt
  • Technik in Form von Raspberry PIs wird zur Verfügung gestellt

Learning Outcome und Benotung

Learning Outcome

  • Als Software-Entwickler*in kann ich mich in neue IT-Technologien einarbeiten und deren Eignung bewerten, indem ich
    1. die Ziele für die neue Technologie erfasse, 
    2. daraus Kriterien zur Bewertung ableite, 
    3. ein kleines aber umfassendes Anwendungszenario für einen Proof-of-Concept (PoC) konzipiere, 
    4. mich parallel zur Entwicklung durch Recherche in die neue Technologie einarbeite, 
    5. dieses Szenario im Team implementiere, in einem agilen Projekt-Setup, 
    6. die Ergebnisse des PoC in einer Form festhalte, dass andere (mein Team, Projektmanager, Vorgesetzte) meine Bewertung nachvollziehen können,
    7. die Dokumentation erlaubt, dass andere meine PoC-Ergebnisse reproduzieren können (Installation, Environment, Start), und
    8. mein PoC-Projekt dann in einer gut verständlichen, lebendigen Präsentation vorstelle, 
  • so dass meine Beurteilung von neuen IT-Technologien meine (Team-)Kolleg*innen überzeugt. 

Benotung

Die Note setzt sich aus folgenden Teilen zusammen: 

  • 50%: Qualität und Funktionalität des Codes
    • Lesbarer und sinnvoller Code
    • sinnvolle Modularisierung
    • ggfs. Tests (als Bonus)
    • Robustheit des PoC-Systems
    • funktionaler Umfang des PoC
  • 35%: Nachvollziehbare, vollständige Dokumentation
    • Kriterien
    • Vor- und Nachteile der Technologie
    • Fallstricke
    • "How-To"
    • abschließende Eignungs-Bewertung
  • 15%: Präsentation
    • Vollständigkeit
    • Konsistenz
    • Lebendigkeit

Organisatorische Randbedingungen

  • Code: pro Team ein Repo auf Github (wird gestellt)
  • Doku: Github-Pages
    • Lokale Installation von Jekyll sinnvoll (es gibt Gem für Github Pages)
  • Dev-Env: jedes Team selbst
  • Wir stellen Discord-Server zur Verfügung
  • agile Tools:
    • Backlog: JIRA
    • Retro: Miro
  • Hardware: abholen bei Yggi
    • ein Raspi pro Team
    • voreingerichtet, mit SD-Card vor-aufgespiel

Ziele und Szenario für das Projekt

Ziele und Kriterien

Szenario - Tagesablauf (Nach MVP)

  1. Dein Sprachassistent Weckt dich → Licht an, Wecker Klingelt
  2. Du gehst arbeiten → Licht aus, Musik aus
  3. Du kommst nach hause → Licht an, E-Mails abrufen, Timer für Pizza, Nachrichten-Googeln
  4. Fernseher → Licht dimmen, fernsehwunsch auswählen, Google-Frage: "Wer ist Thomas Gottschalk"
  5. Zu Bett gehen → Reminder zum Schlafen gehen, Wecker stellen

Agenda für Kickoff am 17.09.

Das Kickoff gibts als Video-Aufzeichnung: 

  • Ziele und Szenario für das Projekt (Yggi)
  • Formalien (Benotung) (Stefan)
  • Dev-Env
    • Umgang mit Raspi (Yggi)
    • Einführung in Git, Github, IntelliJ / VS Code (Marc)
  • Agiles Vorgehen im Projekt (Marc)
    • JIRA als Tool (Stefan)
  • Technik-Pakete, die man evaluieren kann, vorstellen (Yggi)
  • Erstmal nur für die Blockteams: 
    • Projektorganisation (Arbeitstage, Sprint-Planung/Review), 3 Sprints zu je 2 Wochen
    • Aufteilung der Technologien (wer macht was)