Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin speech parser

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
    KNXfriend
    Forums-Einsteiger

  • KNXfriend
    antwortet
    Vielen Dank und großes Lob für Dein tolles Plugin!

    Ich hatte über die kommenden Feiertage geplant etwas mit Sprachsteuerung anzufangen und nun hast Du eine solch schöne Lösung erstellt.
    Dein Ansatz gefällt mir richtig gut!
    Der Vorteil mit dem System umgangssprachlich zu kommunizieren ohne starre Syntax befolgen zu müssen ist eine richtige Erleichterung.
    Auch ohne Voice-Steuerung kann man SmartHome jetzt super einfach über HTTP steuern.

    Ich bin übrigens Deiner Empfehlung gefolgt und habe die Namen der Items vereinheitlicht. Damit werden die Regeln viel übersichtlicher.

    Anstelle von Tasker habe ich Automagic benutzt. Die Google Voice Recognition und Voice-Ausgabe ist in Automagic schon mit drin. Die Tasker-Plugins laufen auch in Automagic und ich habe das AutoVoice Plugin kurz angetestet, bin aber nicht sicher ob es hier einen zusätzlichen Vorteil bietet.

    Eine Idee habe ich bezüglich der Ein/Aus-Befehle:
    Könntest Du die auch alternativ weglassen und dann den Schaltzustand einfach wechseln?
    Dadurch würden schon Einwortbefehle wie z.B. "Flurlicht" reichen.

    P.S.
    In der README.md Doku muss der class_name in der plugin.conf mit Großbuchstaben geschrieben werden:

    class_name = Speech_Parser
    class_path = plugins.speech
    config_file = /usr/smarthome/etc/speech.py
    ip = 0.0.0.0
    #acl = w.x.y.z
    port = 2788

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    auch ich bin sehr beeindruckt und werde das sicherlich auch ausprobieren. Allerdings bin ich derzeit mitten im Umzug. Und bis ich wieder irgendwas "innovatives" machen kann, ohne geköpft zu werden, haben wir wohl Q2/2015

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Wow. Ich bin beeindruckt! Danke.

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    @JuMi2006
    OK, da hast du natürlich recht.
    Ich bin gespannt was andere Tests ergeben...

    Einen Kommentar schreiben:

  • JuMi2006
    Forums-Einsteiger

  • JuMi2006
    antwortet
    Doch ... aber das lässt sich sicherlich nicht in 30 Minuten zwischen Feierabend, Kinderbespaßung und den anderen lustigen Pflichten einrichten und testen. Steht aber (zumindest bei mir) auf der Liste! Tolle Arbeit!

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    Hallo Markus,

    von mir aus spricht nichts dagegen, nur sollte es vorher noch jemand testen.
    Aber so wie es aussieht ist die nahtlose Sprachsteuerung mit einem Android Smartphone nicht so der Renner...

    Einen Kommentar schreiben:

  • callidomus
    Forums-Einsteiger

  • callidomus
    antwortet
    Hallo Axel,

    sieht interessant aus.
    Da ich keine Androids-Devices verwende, ist es leider nichts für mich.

    Wenn es bei soweit ist, können wir es auch gerne in das git integrieren.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • panzaeron
    hat ein Thema erstellt Plugin speech parser.

    Plugin speech parser

    Hallo,

    im Anhang habe ich ein abgewandeltes Network-Plugin angehängt, welches ich zum Parsen von Android Sprachbefehlen benutze um Aktionen im Haus auszulösen. In der ZIP-Datei ist das so genannte speech-Plugin und eine benötigte Beispiel-Konfigurationsdatei enthalten. Die Struktur passt zum RaspberryPi-Image (und auch nur darunter getestet). Eine Anleitung ist im plugin-Ordner (Readme.md) enthalten und auch die Beispiel-Konfigurationsdatei ist ausführlich kommentiert. Letzteres besteht aus drei Abschnitten.
    Der erste Abschnitt enthält Listen die Begriffe und Rückgabewerte beinhalten, z.B. werden Begriffe unter unterschiedlichen Namen angesprochen, das Licht in einem Raum als "Beleuchtung", "Lampe", "Licht", "Leuchte" usw. In der Konfigurationsdatei gibt es für die häufigsten Fälle Wortkombinationen die als Basis für die eigene Sprachsteuerung verwendet werden können.
    Der zweite Abschnitt sind die Regeln nach denen die Items angesprochen werden. Im wesentlichen werden verschiedene vorher definierte Variablen/Listen kombiniert um Aktionen auszuführen, z.B. Raum, Licht, Schalten um die Beleuchtung zu schalten. Beispiele finden sich in der beiliegenden Konfigurationsdatei.
    Der dritte Abschnitt enthält Fehlermeldungen die zurückgegeben werden, wenn z. B. ein Befehl nicht erkannt wurde, hier muss am Anfang nicht verändert werden.

    Vorgeschichte
    Ich wollte für mein Haus eine flexible Sprachsteuerung realisieren, die ohne feste Befehle auskommt. Dabei nutze ich zur Spracheingabe mein Android Smartphone. Erste Versuche mit unterschiedlichen Android-Apps z.B. mit AVIC sind allesamt gescheitert, wobei AVIC noch am nächsten dran war, weil man eigene Befehle definieren kann.
    Am Ende hab ich es mit einer Kombination aus Tasker zusammen mit dem AutoVoice-Plugin und einem abgewandelten network-Plugin in smarthome.pi realisiert. Verwendet wird die "normale" Goggle/Android-Spracherkennung.

    Von der Spracherkennung zur ausführenden Aktion
    1. Spracherkennung mit "OK Google" oder durch betätigen des Mikrofon-Symbols starten.
    2. Befehl sprechen, z.B. "Licht in der Küche einschalten", "Licht in der Küche ein", "Beleuchtung in der Küche einschalten" usw.
    3. Der Befehl wird von Google nicht erkannt und das AutoVoice-Plugin tritt in Aktion.
    4. Das AutoVoice-Plugin übergibt den kompletten Satz an Tasker und es wird an das speech-Plugin per http-URL übertragen.
    5. Das speech-Plugin durchsucht den Text nach vorgegebenen Regeln.
    6. Wenn eine Regel zutrifft dann wird das entsprechende Item gesetzt oder die Logik getriggert.
    7. Am Ende wird noch eine Antwort generiert und über das Smartphone als Sprache ausgegeben.

    Was ist das Plugin nicht
    Es übersetzt keine Sprache direkt in Befehle, sondern ist auf die google/Android Spracherkennung angewiesen. Das bedeutet Sprache die von goggle nicht sauber erkannt wurde kann auch nicht richtig in Befehle umgesetzt werden.

    Hinweise
    • Die Konfiguration ist am einfachsten, wenn die Items in Smarthome.py einer festen Struktur folgen, z. B. die Hauptbeleuchtung in einem Raum ist immer "stockwerk.raum.beleuchtung.schalten" oder alle Rollläden in einem Raum "stockwerk.raum.rollladen.fahren" und "stockwerk.raum.rollladen.position" usw. Dann genügt ein oder zwei Regeln um alle Lampen im Haus zu schalten.
    • Am Anfang immer erst mit einem Befehl anfangen und wenn es funktioniert Stück für Stück erweitern, es ist viel Try and Error insbesondere am Anfang notwendig.
    • Verschiedene Interpratationen der Spracherkennung bei einzelnen Wörtern berücksichtigen, z. B. wird Rollladen häufig als Rolladen übertragen.
    • Die Reihenfolge der Befehle sollten vom speziellen zum allgemeinen angeordnet sein, d.h. erst die Wandleuchte dann die allgemeine Beleuchtung. Wenn die Reihenfolge egal ist, dann sollten die häufig benutzten Befehle am Anfang stehen (etwas schneller).
    • Die Sicherheit ist relativ niedrig, weil die Befehle von Google-Servern in Text umgesetzt werden und die Kommunikation zwischen Smartphone und speech-Plugin eine normale http-URL ist. Man könnte auf dem Smartphone eine andere Spracherkennungsapp installieren, aber mir ist keine bekannt die so leistungsfähig wie die von google.
    • Rückmeldungen können ebenfalls abgefragt werden, z. B. "Wie warm ist es im Büro?" und die Temperatur wird ausgegeben: "Die Lufttemperatur im Büro beträgt 23 Grad." (siehe Beispiel "Temperatur" in der Konfigurationsdatei).

    Angemerkt sei noch, dass das mein erster Versuch mit Python und der objektorientierten Programmierung ist, Verbesserungsvorschläge sind willkommen.

    Da das Anhängen des Plugins nicht funktioniert, habe ich es hier hinterlegt:
    http://dav.square7.ch/speech.zip

    Angehängte Dateien
    Zuletzt geändert von panzaeron; 20.04.2015, 23:50. Grund: Externer Download ergänzt
Lädt...
X