Auch im neuen Jahr habe ich natürlich wieder einige Ideen, was ich noch alles umsetzen und verbessern möchte.

Neben meiner Gartenbeleuchtung und Bewässerung möchte ich vor allem mein Haus per Sprache steuern. Doch nach den letzten Datenskandalen bei Amazon (siehe z.B. heise.de) möchte ich mir auf keinen Fall eine solche Wanze in mein Haus (vielleicht sogar in jeden Raum) hohlen.

Daher muss ein System her wo
a) ich als Individuum nicht eindeutig identifizierbar bin
b) die Spracherkennung komplett lokal stattfindet

Wie sich einige vielleicht erinnern habe ich schon einmal versucht so ein System im großen Stil selbst aufzuziehen und habe dafür sogar eine Kickstarter Kampagne gemacht (die leider nicht finanziert wurde).

Jetzt werde ich einen neuen Versuch wagen – aber deutlich kleiner. Es gibt mittlerweile diverse Frameworks für Sprachassistenten:

  • MyCroft
  • Snips
  • Jarvis
  • Hound
  • PocketSphinx

Ich bin noch weiterhin in der Evaluierungsphase, aber nach aktuellem Stand überlege ich folgendes zu tun:

  • Einen Fork von MyCroft erstellen und die Verknüpfungen zur Cloud entfernen (was nach den Aussagen auf deren Homepage auch so erlaubt ist)
  • Ein eigenes, neuronales Netz (DeepSpeech) für deutsche Sprache trainieren (oder sollte ich online eines finden dieses benutzen)
  • MyCroft zusammen mit meiner lokalen Spracherkennung nutzbar machen

Einen Fork von Mycroft zu erstellen und diesen offline lauffähig zu machen wird dabei nicht das große Problem sein. Aktuell stehe ich beim neuronalen Netz.

Nachdem ich mich jetzt umfangreich mit dem Thema KI, neuronale Netze und Spracherkennung auseinander gesetzt habe, habe ich mir von “The Spoken Wikipedia” und “VoxForge” rund ca. 250 Stunden deutsche Sprachsamples geladen und diese so umgewandelt, das ich mit DeepSpeech ein neuronales Netz trainieren konnte (hat auf meiner Hardware 3.78 Wochen gedauert).
Die Spracherkennung war schon sehr gut, allerdings nur wenn ich nahe an dem Mikrofron stand. In der Praxis wird aber später z.B. Raumhall die Sprache verändern. Auch darauf muss ich das Netz trainieren. Ich habe also alle Sprachsamples mit Raumhall angereichert (digital natürlich) und trainiere aktuell wieder. Vermutlich wird es ca. 2 Monate dauern, da ich jetzt fast doppelt so viele Sprachdaten habe. Mir ist bewusst das ich auch in der Cloud viel schneller trainieren könnte, jedoch habe ich zu Hause Solarstrom und kann somit (fast) kostenfrei das Netz trainieren.

Und ich setze große Hoffnung in das Mozilla Common Voice Projekt und möchte alle einladen dort mitzumachen. Dort werden Sprachdaten gesammelt und geprüft und dann allen kostenlos zur Verfügung gestellt. Englisch ist bereits fertig und zum Download bereit, an Deutsch wird noch gearbeitet (Stand jetzt 191 Stunden vorhanden). Sobald Deutsch zum Download angeboten wird, werde ich erneut ein Netz trainieren (müssen) um die Erkennung noch weiter zu verbessern. Vielleicht wird Mozilla beim DeepSpeech Projekt auch direkt ein trainiertes Modell für Deutsch zum Download anbieten. (so wie für Englisch geschehen). Dann kann ich mir das Training selbst sparen.

Ansonsten werde ich das Projekt so aufziehen, wie schon bei meinem Listen2Me Projekt geplant:

  • Ein “potenter” Server im Haus (i3, 8 GB, …)
  • In jedem Raum ein Beakon (Pi mit Fernfeld Mikrofon)

Die Beakons senden die Sprache als Stream an den Server, der wandelt die Sprache in Text um und übergibt diesen dann an den digitalen Assistenten. Sobald ich erste sinnvolle Resultate habe, werde ich umgehend einen weiteren Beitrag schreiben.