Die Sprachsteuerung des “Kleinen Mannes” (Respeaker Core V2 + Kalliope + Edomi)
Let me know
Where you are headin’ or where you might go
Speak to me
Say it loud
Yell to the ones who are out there cause I’m somewhere in the crowd
(Speak To Me, Anna Graceman)
Liebe Freunde der Sonne! Ihr habt ein Smart Home mit erlesensten Technik-Spielereien vom Feinsten, aber eure Freunde, Nachbarn, Schwiegermütter und sonstigen Gäste nehmen diese wunderbare Errungenschaft der Technik eures Heims nicht wahr? Die Besucher kommen nicht mal auf die Idee die tollen Vorzüge und Features eines intelligenten Heims anzuerkennen oder gar von ihnen zu profitieren? Euch fehlt die euch zustehende Huldigung eurer technologischen Führerschaft?!
Das wirksamste Mittel gegen diese schnöde Ignoranz: Protzige Angeberei! Und wie kann man in so einem Fall vortrefflich angeben? Mit futuristischer Technologie, die man sonst nur aus Science-Fiction-Filmen kennt, natürlich!
Mit Maschinen sprechen – Befehle und Anweisungen geben und per “Geisterhand” ausführen lassen. Das ist Sprachsteuerung.
“*COMPUTER!* … Hol’ mir ein Bier!”
Leider sind aktuelle, kommerzielle Sprachsteuerungs-Lösungen (ProKNX, enertex SynOhr® MultiSense KNX – Premium) mit KNX-Anbindung in der Regel kaum erschwinglich. Der “kleine (Angeber-) Mann” muss also zwangsläufig zur Selbstbau-Alternative greifen! Und so machen wir es auch. Ein Versprechen vorab: Es wird spektakulär und gleichzeitig unschlagbar billig sein!
Hardware-Aufbau
Folgende “Gerätschaften” benötigen wir für den Aufbau:
- Respeaker Core V2
- Micro-SD-Karte (16 GB)
- Aktive Lautsprecher
- Laufende Edomi-Instanz
Seeed’s ReSpeaker Core v2.0 ist ein Kleinstrechner, der speziell für die Sprachverarbeitung optimiert wurde. Mit einem 6-fachen Mikrofon-Array und zahlreichen Schnittstellen ist er für die Sprachsteuerung gerade zu prädestiniert. Die SD-Karte wird als Speicher-Medium für das Betriebssystem sowie alle anfallenden Daten verwendet. Ein beliebiger aktiver Lautsprecher ist für den akustischen Output zuständig.
Idee zur Umsetzung (Software)
Hier benötigen wir:
- Respeaker Betriebssystem (Debian) als Basis und Schnittstelle zur Hardware
- Kalliope Project für die Sprachverarbeitung
- Edomi für Smart-Home-Aktionen
Die Idee der Sprach-Verarbeitung und -Steuerung ist recht simpel – nehmen wir an, wir wollen das Licht einschalten:
- Wir aktivieren Kalliope mit einem (voreingestelltem) Signalwort
- In das Mikrofon gesprochene Sprache wird von Kalliope erkannt (STT = Speech-To-Text) [“Schalte Licht ein!”]
- Text (JSON-String) wird von Kalliope über MQTT an Edomi übertragen [Licht-EIN]
- Edomi verarbeitet den Text und löst ggf. Aktionen aus [Aktorkanal für Licht eingeschaltet]
- OPTIONAL: Kalliope empfängt Text über MQTT von Edomi und gibt u. a. gesprochene Sprache aus (TTS = Text-To-Speech) [“Das Licht ist nun an!”]
Spracheingabe (STT) ➡ Kalliope Synapse (light.yml/get.yml/...) ➡ Edomi ➡ Kalliope Synapse (announce.yml) ➡ Sprachausgabe über Kalliope (TTS) und/oder (Beliebige) Aktionen
Da wir hier nur einen Prototypen als kleine Machbarkeitsstudie einsetzen, betreiben wir – der Einfachheit halber – keinen eigenen MQTT-Broker, sondern nutzen einen kostenlosen Dienst (https://www.cloudmqtt.com/) online.
Das Respeaker Debian OS (respeaker-debian-9-lxqt-sd-
Kalliope wird ebenfalls nach Anleitung der Macher installiert und konfiguriert. Abweichend zum Standard-Signalwort (“Kalliope“) nutzen wir unser eigenes Aktivierungs-Wort, das in der Alltagssprache in der Regel nicht vorkommt. Über https://snowboy.kitt.ai/ kann man kostenlos sein eigenes Trigger-Wort trainieren oder ein bestehendes herunterladen und nutzen. Als eine bescheidene Hommage an eine beliebte Akte-X-Folge fiel unsere Trigger-Wort-Wahl auf:
C H U P A C A B R A (/ˌtʃʰupəˈkʰabɹə/)
Grrrrrhh…
Kalliope speist sich gänzlich aus sog. Yaml-Konfigurationsdateien (.yml). Neben der settings.yml
, die die Grundkonfiguration regelt, gibt es eine brain.yml
. Diese fasst alle Input- und Output-Aktionen in sog. “Synapses” ein. Die Synapsen reagieren mit sog. “Signals” auf Eingaben und kommunizieren in Form von sog. “Neurons” mit der Aussenwelt. Kalliope ist mit weiteren, eingebauten Features natürlich viel mächtiger als hier knapp dargestellt. Für unseren Aufbau genügt aber diese vereinfachte/verkürze Skizzierung:
Für die deutsche Sprache bietet Kalliope ein DE-Starter-Kit an, das alle notwendigen Voreinstellungen sowie Umsetzungsbeispiele auf Deutsch bereits mitbringt.
Beispiel einer Synapse (light.yml) zum Schalten des Lichts:
--- - name: "s-licht" signals: - order: "Schalte Licht im {{arg_Lokation}} jetzt {{arg_Aktion}}" - order: "Schalte Licht in {{arg_Lokation}} jetzt {{arg_Aktion}}" - order: "Schalte Licht in der {{arg_Lokation}} jetzt {{arg_Aktion}}" neurons: - mqtt_publisher: broker_ip: "m21.cloudmqtt.com" port: 13166 username: "SECRET" password: "SECRET" topic: "assi/set" payload: "{\"Gewerk\": \"Beleuchtung\",\"Bereich\": \"Schalten\",\"Lokation\": \"{{arg_Lokation}}\",\"Aktion\": \"{{arg_Aktion}}\",\"Retour\": \"0\"}"
Edomi tut ihr Übriges um über den MQTT-Broker den JSON-String zu zerlegen und anschließend die passende Aktion auszulösen (In diesem Beispiel nur Arbeitszimmer-Licht implementiert):
Und so kann es dann beispielhaft ablaufen:
(Anm. d. Red.: Wir bitten die grausige Bild- und Ton-Qualität untertänigst zu entschuldigen. Mangels passender Ausrüstung und Qualifizierung auf diesem Gebiet sind die Resultate entsprechend bescheiden… ?)
Fazit
Pro:
Billig!
Contra:
Teile in der Verarbeitung (Speach-To-Text) in der Cloud! Umstellung auf lokale STT-Verarbeitung (pocketsphinx) hat für die deutsche Sprache nicht funktioniert. ?
Trigger(-Word) wird zum Teil zu leicht ausgelöst (False Positives) z.B. durch Husten.
Verarbeitungslogik muss mühsam für alle möglichen Gewerke/Lokationen usw. manuell aufgebaut werden.
Empfangs-Gerät/Instanz nur auf einen Raum beschränkt, jeder weitere Raum erfordert eine eigenständige Kalliope-Installation/Konfiguration.
(Noch) Zu geringe Kalliope-Community(-Interaktion).
Das abschließende Resumé fällt ernüchternd aus: Klar, eine Milliarden-schwere Performance a la Amazon Alexa oder Google Home kann man nicht erwarten – dennoch überwiegend leider die Contras. Der “quick & dirty” Prototypen-Bau hat Spass gemacht und funktioniert in Grundzügen auch. Die Schwiegermutter damit beeindrucken wird aber eher schwierig. Wir werden diesen Ansatz in dieser Form daher nicht weiter verfolgen und andere Alternativen in Betracht ziehen!
*CHUPACABRA!* … sudo shutdown now
[…] sein: Wir haben uns erst vor Kurzem mit der Sprachsteuerung im Smart-Home beschäftigt. Der erste Prototyp in diese Richtung war nicht sehr viel […]
[…] ist in einem Smart Home die sowohl die innovativste, als auch die intuitivste Methode zur Interaktion mit der […]
Hey,
ich bin ein wenig angefressen. Ich habe nach der Möglichkeit gesucht, offline meine Lichter ein- und auszuschalten. Dabei bin ich auf diese vermeindlich “aktuelle” Seite gestoßen, denn bei Google wird diese als 10.05.2023 veröffentlicht angezeigt.
Das fast alle Projekte die hier benannt sind, schon 2020 aufgehört haben zu existieren, ist dann irgendwie doof.
René, willkommen im Internet.