Blog Post

Die Sprachsteuerung des „Kleinen Mannes“ (Respeaker Core V2 + Kalliope + Edomi)


Speak to me
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:

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:

Die Idee der Sprach-Verarbeitung und -Steuerung ist recht simpel – nehmen wir an, wir wollen das Licht einschalten:

  1. Wir aktivieren Kalliope mit einem (voreingestelltem) Signalwort
  2. In das Mikrofon gesprochene Sprache wird von Kalliope erkannt (STT = Speech-To-Text) [„Schalte Licht ein!“]
  3. Text (JSON-String) wird von Kalliope über MQTT an Edomi übertragen [Licht-EIN]
  4. Edomi verarbeitet den Text und löst ggf. Aktionen aus [Aktorkanal für Licht eingeschaltet]
  5. 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--4gb.img.xz) installieren wir laut Anleitung.

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

(Fast) Jedes Haushaltsgerät ins (KNX-)Smart-Home direkt einbinden!

Leider kann man im Leben zum Einen nicht alles vorplanen und berücksichtigen, zum Anderen…

„Visu Porn“: Visualisierung in unserem Smart-Home

Ich schaue mir gerne förmlich recht voyeuristisch andere Visus an. Eine sehr gute Inspirationsquelle…

Magic Mirror im KNX-Smart-Home

Wenn es eine Sache im Internet gibt, die das Pornografie-Angebot übersteigt, dann sind es…

KNX Visualisierung – Erste Gehversuche

Liebe Freunde der optischen Leckerlies – das hier könnte hässlich werden… Denn heute geht…

Heim-LAN: Netzwerkschrank, Switch, Patchpanel & Co.

Das Netzwerk-Thema ist doch größer, als man es anfangs einschätzt: Nachdem wir die Netzwerkverkabelung…

KNX: ETS-Gruppenadressen – Die geordnete Struktur im Einfamilienhaus

Jedes ernsthaft betriebene KNX-Projekt benötigt eine geordnete Gruppenadressen-Struktur. Es sei denn ihr setzt die…

KNX: „ETS Inside“ – Heilsbringer oder Mogelpackung?

Wir wollen uns heute in aller Kürze mit dem neuen KNX Inbetriebnahme-Tool ETS Inside…

ETS5 Professional (fast) kostenlos? KNX kostengünstig konfigurieren

Liebe KNX-Freunde, ich muss es euch eigentlich nicht erklären: Jede KNX-Installation benötigt zur (initialen)…

Netzwerkleitung verlegen: Schritt-für-Schritt-Anleitung

Letzes Mal sprachen wir über die theoretischen Grundlagen der Netzwerk-Vekabelung (LAN). Wie versprochen beschäftigen…

Taster ohne Abdeckung
Taster-Konzept: Praktischer Versuchsaufbau (Hands-On)

So, Freunde der Sonne: Wir haben ja bereits vor langer Zeit versprochen das Taster-Konzept…

Intelligenter Briefkasten: Version 2.0 – „Arduino-Edition“

Wer unseren bescheidenen Blog verfolgt, kennt unser Lieblings-Projekt: Den „Intelligenten Briefkasten“. Wir haben schon…

Berührungslos Schalten – Kapazitive Sensoren

Liebe Freunde der beeindruckenden Features, heute haben etwas Bemerkenswertes für euch, das nicht jeder…

KNX-Testaufbau (Mini-Testboard) mit Raspberry Pi und knxd

Verwandte Themen

Wie ihr vielleicht in einem früheren Beitrag schon gelesen habt, haben wir uns für…

Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (kurz & gut)

Der kostengünstige Einplatinen-Rechner Raspberry Pi lässt sich für viele Dinge (miss-)brauchen. Mitunter messen wir…

Smarter Briefkasten
Intelligenter Briefkasten: Version 1.5 – „RED-Edition“

Liebe Freunde und verehrte Briefträger, gebt es zu: Gibt es etwas schöneres als eine…

Smart E-Mailbox
Schatz, du hast Post! Intelligenter Briefkasten 1.0 [TEIL 2/2]

Bereits im ersten Teil des Posts haben wir den ersten Prototypen des Smarten Briefkastens…

Smart Mail Box
Schatz, du hast Post! Intelligenter Briefkasten 1.0 [TEIL 1/2]

Heute gibt es eine Weltpremiere! Wir stellen heute einen vernetzten Briefkasten vor, der selbständig…