Sprachsteuerung mit Snips

Hallo,

hat sich schon mal jemand mit Snips beschäftigt?

Bei Fhem gibt es ein Modul, welches einiges unterstützt. Ich finde, das hört sich alles ganz gut an, und es wird auch deutsch unterstützt. Das charmante daran ist, es findet alles lokal statt, also weder Amazon, noch Google hören mit.

Homekit finde ich auch interessant, aber der Homepod ist „sauteuer“ so dass man nicht mal eben mehrere Räume damit ausstattet. Da ich schon einige Sonos Devices installiert habe, wären mit so etwas wie Echo Dots ausreichend, um eine Sprachbedienung umzusetzen.

Ich werde am Wochenende mal einen Pi mit Respeaker Microfon-Board aufsetzen und erste Tests fahren.

Da die Steuerung über MQTT angebunden werden kann wird wohl entweder das hier bereitgestellte Script, oder evtl. das von Kai angepasste Modul mit dem Gateway nutzbar sein.

Ich teile dann mal meine Erfahrung.

Gruß
Christian

Servus Christian

Der eigentliche Knackpunkt bei Selbstbauten ist nicht so sehr die Spracherkennung (dafür gibt es genug Softare und APIa) sondern ganz simpel und einfach das Mikrofon. Mit den handelsüblichen Mikrofonen wird es zwar funktionieren, aber hinsichtlich Gebrauchsfähigkeit wird das für unsere Anwendungszwecke unbrauchbar. Wer trägt schon freiwillig ein Mikro mit sich rum, oder stellt sich hin und spricht direkt rein ?

Das Mikro ist auch die große Stärke der Alexas. Die haben nämlich ein sehr gut designetes Fernfeldmikrofonarray eingebaut. Nur mit sowas ist es möglich irgendwo in den Raum zu sprechen und trotz Hintergrundgeräuschen noch genügend Nutzsignal für eine gute Erkennung zu generieren.

Ich war schon vor über 25 Jahren von Spracheingabe fasziniert, hab damals viel mit dem IBM ViaVioce experimentiert. Die Erkennung war schon damals durchaus ausreichend, aber halt nur wenn man direkt ins Mikrofon sprach. Gute Fernfeldmikrofone waren nicht zu bekommen, zumindest nicht für leistbares Geld. Danach machte ich immer mal wieder neue Versuche, letztendlich scheiterte immer am Mikro. Wie gesagt, wenn man direkt reinsprechen muß ist das für Hausautomatisierung unbrauchbar.

gruß
bb

Guten Morgen.

Ich experimentierte gerade mit Matrix Voice und MyCroft. Läuft noch recht instabil, aber zumindest kann ich schon per Symcon API und Sprache Skripte starten. Das Mikrofon funktioniert auch aus ca. 4 Metern Entfernung um eine Ecke herum noch sehr ordentlich.

Gruß
Thorsten

Gesendet von meinem NEM-L51 mit Tapatalk

Hallo,

Mit Mycroft und einem Respeaker Mikrofon-Array habe ich auch schon experimentiert.
Das war im letzten Jahr im Sommer, da hatte ich aber die Umstellung auf Deutsch nicht hinbekommen.

Was mir an Snips gut gefällt ist die lokale Erkennnung.

Die Mikrofon-Array bekommt man ja. Entweder eben die Respeaker oder Matrix Module, das sollte also nicht mehr das Problem sein.
Ich werde mal einen Test machen, und Berichten.

Gruß
Christian

Snips klingt gut, aber ich habe deutliche Zweifel, dass lokale Spracherkennung auf einem Raspberry offline wirklich sauber funktionieren kann. Mit akzeptabler Fehlerquote.

Gesendet von meinem NEM-L51 mit Tapatalk

Hallo,

also ich habe heute mal etwas mit Snips gespielt.
Ich habe einen Pi 3 mit dem Respeaker 4 Mic Modul genommen. Der Pi hängt per WLAN im Netz und es ist ein Lautsprecher angeschlossen.

Ich habe Snips nach Anleitung installiert, noch die LEDs mit einem Script konfiguriert, und sonst keine weiteren Einstellungen gemacht.
Im ruhigen Zimmer wird man super verstanden. Läuft direkt daneben Musik muss man lauter Reden, aber das ist bei Alexa auch so. Selbst wenn ich ein stockwerk tiefer bin, kann ich mit lauter Stimmer Snips aktivieren. Die LEDs werden super angesteuert, so dass man auch ein optisches Feedback hat.

Die integrierte TTS ist nicht sehr schön, da kann man aber natürlich auch Google odr Polly einbinden, dann ist man aber nicht mehr ohne Cloud-Anbindung. Es soll aber auch die Stimmer von Mycroft funktionieren, habe ich aber noch nicht getestet.

Im folgenden habe ich dann, mit etwas abgucken bei der FHEM App eine eigene App erstellt. Dort habe ich drei Variablen Raum, Gerät und Wert definiert und einige Sätze, die man sagen kann definiert. In IPS habe ich mit dem MQTT Client von Kai und einem Script dann die Daten ausgewertet. Man erhält ein Array, auf das man aufbauend die individuelle Umsetzung machen kann.

Ich werde mir das noch weiter ansehen, finde aber schon jetzt, dass es ein guter Ansatz ist.

Bei Fragen bitte fragen.

Gruß
Christian

Hallo,

ich hänge noch ein Thema dran.

<?

$topic = "hermes/dialogueManager/startSession";

$content = '{
	"siteId": "default",
	"init": {
		"type": "notification",
		"text": "Die Temperatur beträgt 10 Grad"
	}
}';

KSMQTT_Publish(57266,$topic,$content,0,0);

?>

Mit dem Script kann man eine Ausgabe von Text auf dem Snips-Device erzeugen.
Ich finde das extrem einfach. Auch der Dialog ist recht einfch möglich.

Gruß
Christian

Hallo Christian.

Ich kann dir da absolut zustimmen.

Wer mit Snips experimentiert und einen 100%igen Alexa Ersatz nur ohne Cloud erwartet, der wird wahrscheinlich etwas enttäuscht. Aber meine Skepsis bezüglich Offline-STT waren zumindest nur minimal begründet. Bin positiv überrascht :).

Manchmal wird bei mir das Wakeword nicht erkannt und ich muss es 2-3 mal versuchen bis es funktioniert. Ist das bei dir auch so?

Spannend ist auch das Multiroom-Konzept (Snips Satellite) was ich vielleicht mit einem Pi Zero und Respeaker 4 probieren würde.

Alles in allem aber deutlich einfacher und vielversprechender als meine bisherigen MyCroft Tests (und auch mit weniger Zeiteinsatz).

Gruß
Thorsten

Ich fange gerade erst mit MQTT wegen Snips an. Mit Kais Modul bekomme ich die Verbindung zum Broker hin und erhalte jede Menge Ausgaben.
Wie kann ich denn bspw. im Handling-Skript des Splitters ein Topic abonnieren und auf die Array-Daten zugreifen?

KSMQTT_Subscribe(nnnnn /[snips_MQTTClient]/, „hermes/asr/textCaptured“, 0);

UPDATE
:
Ich hab’s hier im Beispiel gefunden: IPS_MQTT/Handel.php at master · thomasf68/IPS_MQTT · GitHub

Danke & Gruß
Thorsten

Hallo Thorsten,

ich mache es aktuell sehr rudimentär. Ich habe ein Script an der MQTT Instanz eingetragen:

 <?
 
$topic = "hermes/intent/#";     //Topics die eingelesen werden sollen
$MQTTInstanzID = 57266 ; // ID vom MQTT Client
$msg = "passt";

if($_IPS['SENDER']=='MQTT_CONNECT')
    {
            $topic = "hermes/intent/#";                                                        
            KSMQTT_Subscribe($MQTTInstanzID, $topic, 0);
    }

    if($_IPS['SENDER']=='MQTT_GET_PAYLOAD')
    {
            $msg = $_IPS['MSG'];
            $topic = explode("/", $_IPS['TOPIC']);
            print_r($topic);
            //$msg = json_decode($msg,true);
            print_r($msg);
            SetValueString(27247,$msg);
    }


?> 

Das Script schreibt die Daten des Payload in eine Variable.

Dies kann man lesen und mit $msg = json_decode($msg); in ein Array verarbeiten.

Weiter habe ich das auch noch nicht umgesetzt.

Gruß
Christian

wäre für mich auch interresant :slight_smile:
allerdings hab ich auch mit diversen Offline Systemen rumexperimentiert
und Fazit war immer:
Abhängig von mirofonen war die Spracherkennung relativ gut, sobald dann aber
Hintergrundgeräusche (TV Film, Musik, usw… ) dazukommen ist Ende.

Wie schlägt sich das System dabei so bei euch?

Hallo,

meine ersten Tests gestern waren ganz gut. Ich hatte das Modul neben einem laufenen Lautsprecher mit Musik stehen, und bei lauterer Ansprache wurde ich verstanden. Daraus resultierend, könnte man ja dann ein Absenken des Musikpegels umsetzen. Dann wird der zu sprechende Text besser verstanden, und man muss nur das Codewort lauter sprechen.

Ich denke schon, dass die Mikrofone die man aktuell bekommen kann in der Liga von Echo oder Google Home spielen.
Was wohl laut Snips auch sehr gut gehen soll ist die Kamera für die PS3, dort sind einige Mikrofone eingebaut.

Eine Langzeiterfahrung fehlt mir aber.

Gruß
Christian

Hallo zusammen,

das Thema MQTT ist leider noch echt neu und ich würde gern Snips mal testen. In der snips.toml hab ich
die IP des Brokers eingetragen. Starte ich sam watch wird mir aber localhost angezeigt obwohl der Broker ja
auf einer anderen Maschine läuft. Aktuell scheinen dadurch auch keine Messages anzukommen.

Vielleicht hat mal jemand Lust und Zeit mir hier ein paar Tips zu geben, aktuell stecke ich irgendwie fest .
Modul MQTT ist installiert und der Broker läuft auf der gleichen Maschine wie IPS.

:banghead:

Thomas

Hallo Thomas,

So wie ich es verstanden haben bringt Snips für sich selbst einen eigen Broker mit. Die einzelnen Module von Snips kommunizieren wohl auch über MQTT.
Nimm erst mal die Daten des Brokers aus der Konfig raus.

Ich habe weiter oben die Scripte gepostet, mit denen ich mich aus IPS heraus mit diesem Broker verbinde. Ich habe bei mir das Modul Tasmota installiert. Dort wird ein KS_MQTT Client mitgeliefert. Davon habe ich eine weitere Instanz eingerichtet, und diese auf Snips eingerichtet. In der Instanz habe ich „Script“ ausgewählt, und mein Mini-Aktionsscript eingetragen.

Damit sollte es dann schon mal gehen.

Man kann wohl auch einen anderen Broker mit Snips konfigurieren, habe ich aber erste mal nicht gemacht.

Viel Erfolg
Christian

Hallo Christian,

besten Dank. Ich werde berichten. Muss mich in das ganze Thema erst einmal einarbeiten, bisher brauchte ich bei KNX und co. kein MQTT, aber da ich eine Abneigung gegen die Datensammler habe, ist Snips ein interessantes Winterprojekt.

Thomas

so. Wollte Erfolg melden.

aber ist natürlich schon ein ganz schöner Aufwand das alles zu programmieren und die Aktionen entsprechend zu vereinbaren. Im Moment ist es eine nette Spielerei, aber ich weiß noch nicht so recht, ob ich mit dem Haus reden will.
Alexa ist nach 2 Tagen direkt im Schrank gelandet :cool:.

Danke für deine Hilfe.

Thomas

Hallo,

Interessant ist auch der Thread zu Snips im FHEM Forum:

SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai

Die App in Snips löst schon vieles, aber eben in Verbindung mit einem Modul in FHEM.

Es liest sich aber sehr interessant.

Gruß
Christian

Hallo Christian.

Hast Du dir das FHEM Modul in Snips „geforkt“?
Ansonsten sieht man glaube ich die Kommandos die es kann nicht gut.

Hast Du es schon gepackt mit der FHEM App eine Lampe in IPS zu schalten, bzw. den Status abzufragen :confused:.
Daran scheitere ich aktuell noch - aber Spaß macht es auf jeden Fall :slight_smile:

Ich verusuche doch nur per Sprache zu sagen „Schalte die Lampe ein“ und per IPS bräuchte ich wenigstens „Lampe“ und „ein“, damit ich im Skript sauber darauf reagieren kann, aber irgendwie fehlt mir hier noch etwas an Verständnis.
Weder in der Console noch im IPS Topic kommt dazu was passendes an?!

Gruß
Thorsten

Hallo Thorsten,

ich habe den Thread im FHEM Forum angefangen zu lesen. Darin wird klar, dass die FHEM App nur ein Grundgerüst darstellt. Erst durch die Konfiguration der „Items“ innerhalb von FHEM wird die App in SNIPS funktionsfähig.

Die Räume und Geräte werden durch FEHM in SNIPS injiziert. Danach kennt SNIPS die Räume und Geräte.
Damit das bei mir funktioniert hatte ich die FHEM App geforkt und angeschaut. Dann habe ich eine eigene App erstellt und damit etwas getestet. Weiter als bis zur Übergabe eine „sinnvollen“ JSON Array bin ich aber noch nicht gekommen.

Ich bin die ganze Woche geschäftlich unterwegs, und abends im Hotel zu müde, um noch daran zu arbeiten.
Vielleicht gibt das Wochenende etwas mehr her.

Im optimalen Fall schaffen wir es uns an die FHEM App anzuhängen, und die Lösung ähnlich zu bauen.

Also in IPS die Geräte definieren, mit Ihren verschiedenen Namen, also so was wie Deckenlicht, Deckenlampe, Licht, Lampe, und alle Räume. Wenn dies dann in die FHEM App injiziert wird kann man sagen Schalte das … im Raum x aus. Die App liefert dann im JSON immer „Licht“ zurück. So zumindest ist es aktuell in FHEM umgesetzt. Also Synonyme für das gleiche Device.

Gruß
Christian

Guten Morgen Christian.

Ich habe Inspiration bei der Umsetzung der Alexa Integration gesucht (In IP-Symcon eine Alexa Steuerung in unter 10min einrichten - YouTube). Ab ca. 1:40 Minute finde ich den Ansatz ganz spannend um die Geräte zu gruppieren.

Zu zweit kann man bei Snips nicht an einer App arbeiten, sonst könnten wir vielleicht zusammen daran werkeln. Wir haben ja wohl ein ähnliches Ziel :).

Gruß
Thorsten