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

Begonnen von Thyraz, 21 Juli 2018, 20:28:48

Vorheriges Thema - Nächstes Thema

Thyraz

Noch ein Hinweis falls jemand Snips auch auf einem X86 System installiert hatte zu dem Zeitpunkt als man noch Jessie statt Stretch verwenden musste:

Gestern wurde eine neue Version vom NLU Modul veröffentlicht, welche ein Update auf die aktuelle Version nötig macht,
sobald man einen neuen Assistenten installieren will (NLU funktioniert sonst nicht mehr).
Mittlerweile ist Stretch ja Pflicht.

Hier mein Weg wie ich mein Jessie System auf Stretch upgedated habe.
Danach dann die neuste Snips Version installiert:


Backup vom System machen

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

sudo nano /etc/apt/sources.list
Hier überall jessie durch stretch ersetzen.
Sollte dann etwa so aussehen:

deb http://ftp.debian.org/debian stretch main contrib non-free
deb http://ftp.debian.org/debian stretch-updates main contrib non-free
deb http://security.debian.org stretch/updates main contrib non-free

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

reboot

sudo systemctl stop snips*
sudo apt-get purge mosquitto
sudo apt-get autoremove
sudo apt-get install mosquitto 

sudo nano /etc/apt/sources.list.d/snips.list
Hier auch jessie durch stretch ersetzen.
Könnte so aussehen:
deb https://debian.snips.ai/stretch stable main

sudo apt-get update
sudo apt-get upgrade snips-platform-voice

reboot

Assistenten updaten/installieren
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Habe die letzten 2 Abende an einem Python Script gebastelt, dass man ähnlich wie snips-tts-polly als Service auf dem Snips Rechner laufen lassen kann,
Um bei einem ASR Inject auch automatisch NLU um die neuen Wörter zu erweitern.
Danach interpretiert Snips die nachträglich hinzugefügten Wörter (Geräte- / Raumbezeichnungen) dann endlich korrekt.

Das Script fängt hierfür die MQTT Nachrichten zum ASR Inject ab und patched damit die NLU Files im Assistenten Verzeichnis.

Muss das mal noch ein wenig weiter testen und evtl. finden sich hier auch noch 1-2 Betatester.
Sieht aber aus als ob das funktionieren würde. :)

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Um meinen Monolog fortzuführen:  ;D

Danke für die Angebote zwecks Betatest.
Aber ich habe gestern Abend doch nochmal an einer anderen Lösung gearbeitet, nachdem die per händischem Inject hinzugefügten Wörder in NLU doch nicht ganz so zuverlässig gearbeitet haben.

Irgendeine Komponente die ich nicht patchen kann scheint da noch reinzuspucken.

Hatte dann eine andere Idee:
Ich bekomme ja über MQTT nicht nur den geparsten Intent zurück, sondern auch den originalen Satz den ASR erkannt hat.

Habe das dann so umgebaut, dass ich in diesem Satz Gerät und Raum gegen Dummywerte austausche die schon in der FHEM App hinterlegt sind und daher von NLU problemlos erkannt werden.
Also aus "Deckenlampe im Wohnzimmer um 10 Prozent heller machen" wird dann "Standardgerät im Standardraum um 10 Prozent heller machen".

Danach schicke ich diesen Satz wieder an NLU, der dann wunderbar geparsed wird.
In dem JSON das ich daraufhin erhalte, tausche ich dann die Werte von Raum und Gerät wieder gegen die gesprochenen aus.

So umgehe ich das Thema NLU Inject komplett, da NLU die neu per ARS Inject angelernten Wörter nie zu sehen bekommt.
Und es erspart euch einen extra Python Service installieren zu müssen.

Werde das heute Abend mal weiter testen, denke aber das dürfte recht schnell einen Stand annehmen den ich releasen kann.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

der-Lolo

Nur damit Du Dir nicht albern vorkommst - es lesen schon noch Leute mit ;-)

mark79

@Thyraz ich bin derzeit mit zigbee2mqtt ausgelastet, weil mich dort ein Fehler fuckst.
Aber ich habe noch Interesse an Snips und wenn ich das behoben habe, werde ich mir wieder Snips vorknöpfen. :)

Ich hatte die Tage mal eine S905X Box mit Coreelec (Kodi) ein Chroot mit Debian installiert und dort Snips installiert.
Weil wir darüber TV schauen und da wäre es ganz cool, wenn dort auch Zeitgleich eine Spracheingabe funktioniert. Dann spart man sich ein Gerät.
Nur arbeitet das wieder mit Pulseaudio und dort muss ich mich erst reinarbeiten.

Für das Problem mit dem PS3 Eye habe ich wohl auch eine Lösung gefunden: https://github.com/mvp/uhubctl
Der Tipp kam hier aus dem Forum, damit kann man einzelne USB Ports aus/einschalten, also Stromlos machen.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Thyraz

#110
Die neue Version ist jetzt auf Github verfügbar.

ACHTUNG: FHEM SKILL MUSS GELÖSCHT/NEU HINZUGEFÜGT WERDEN UND SNIPSMAPPING HAT SICH GEÄNDERT
Daher bitte genau lesen, diese Version ist leider nicht abwärtskompatibel. ;)

Aber der Reihe nach:

1) Das Format vom snipsMapping Attribut hat sich etwas geändert:
Der Name des Intents und die Optionen werden jetzt mit einem Doppelpunkt getrennt.
Es gibt dafür bei Intents die den aktuellen Wert rücklesen müssen nun die Option currentVal.


Beispiel voher:

GetNumeric=pct,type=Helligkeit


Beispiel neues Format:

GetNumeric:currentVal=pct,type=Helligkeit


Dies müsst ihr leider bei allen Geräten die ihr schon hinzugefügt habt ändern.
Sorry für die Umstände, aber das aktuelle Format wäre mit den kommenden neuen Standardintents immer sinnloser geworden, da es teilweise einfach keinen zugehörigen Wert zum zurücklesen gibt.


2) Die Attribute snipsName und snipsRoom sind jetzt erstmal zwingend bei jedem Device notwendig.
Der Fehm-Device-Name wird nicht mehr erkannt um die Spracherkennung nicht durcheinander bringen (viele haben hier ja eher kryptische Namen.
Ihr könnt dafür jetzt im snipsName Attribut kommagetrennt mehrere Namen für das Gerät festlegen:

Beispiel:
attr <device> snipsName Deckenlampe,Wohnzimmerlampe,Kronleuchter

Mehreren Geräten den gleichen Namen zuzuordnen ist weiterhin kein Problem.
Ihr solltet sie halt über verschiedene snipsRooms ansprechen können.


3) Ihr müsst die FHEM App in eurem Snips Assistenten nicht mehr forken.
Eure Gerätenamen werden vom FHEM Modul in euren Assistenten "injiziert".
Nach der heutigen Anpassung werdet ihr hier also nichts mehr ändern müssen.

Dazu müsst ihr erstmal snips-asr-inject auf dem Snips Rechner installieren falls ihr das noch nicht getan habt:
https://github.com/Thyraz/Snips-Fhem#wichtig-asr-injection-installieren

Dann auf https://console.snips.ai/home/apps die bisherige FHEM App löschen.
Ebenfalls die eventuell geforkten Intents löschen: https://console.snips.ai/home/intents
Unter https://console.snips.ai/home/slot-types zumindest die Slot Types de.fhem.Device und de.fhem.Room löschen.

Danach könnt ihr die aktuelle Version der FHEM App neu hinzufügen:
Auf http://console.snips.ai eine neue App aus dem Store zu eurem Assistenten hinzufügen.
Oben den Haken only show apps with actions entfernen und nach FHEM suchen.
Dann die App hinzufügen. (Diesmal nicht mehr forken)

Kopiert danach euren Assistenten wieder auf euren Snips Rechner wie in der Github Readme zum Modul beschrieben und startet Snips neu.

4) Neuer set Befehl updateModel für das Modul:
Dieser set Befehl erstellt eine Liste mit all euren snipsNames und snipsRoom und fügt sie der Spracherkennung eures Snips Assistenten hinzu.
Snips ist also danach in der Lage die Wörter zu verstehen.

Da dies lokal auf den aktuell auf eurem Snips Rechner installierten Assistenten eingespielt wird,
müsst ihr updateModel erneut ausführen falls ihr einen neuen Assistenten (oder eine neue Version eures Assistenten) einspielt.

Ebenfalls solltet ihr updateModel erneut ausführen wenn ihr neue Geräte zu Snips hinzugefügt habt, oder Geräte- und Raumbezeichnungen verändert habt, damit Snips die neuen Wörter lernt.


Hoffe das war alles. :)
Doku auf Github und hier im ersten Post sollten auch angepasst sein.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

jowe

Hi Thyraz,
Vielen Dank für das Modul! Bin sehr gespannt auf die inject Funktion. Soweit ich das auf Discord verstanden habe hast du damit als Erster überhaupt inject in einem Modul verwendet. Daher wie gesagt vielen Dank. Werde leider erst in den nächsten Tagen zum Testen kommen, werde dann aber Mal Feedback geben wie es funktioniert

Thyraz

#112
Nächstes Update auf Github verfügbar:

Hab die Idee von jowe umgesetzt, dass man Snips per Text-Kommandos steuern kann.
Hatte das eigentlich eher mit geringerer Prio auf der Todo-Liste,
aber mit dem Feature muss ich mir bei der Modul-Entwicklung und den resultierenden Tests nicht mehr den Mund fusselig reden. ;)

Es gibt einen neues set Befehl textCommand über den man Snips (genauer gesagt das NLU Modul) mit Befehlen füttern kann.
Die Antwort erfolgt dann in das Reading textResponse.

Könnte man z.B. mit Telegram verbinden (DOIF Definition):

([Telegram:"msgText.*"])
  (set Snips textCommand [Telegram:msgText])
DOELSEIF ([Snips:"textResponse.*"])
  (set Telegram msg [Snips:textResponse])


Dann werden Nachrichten die über Telegram an Fhem gesendet werden an NLU weitergeleitet, das Kommando in Fhem verarbeitet und die Antwort wieder an Telegram zurückgesendet.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

mark79

#113
Hi Thyraz,

ich habe Snips aktualisiert (apt-get) und die neuen Änderung vorgenommen, auch in der Console alles gelöscht und neu hinzufügt.

Aber nun ist die Texterkennung um einiges schlechter geworden und Snips versteht mich kaum mehr.
Muss man diesen erst wieder trainieren oder habe ich irgendwo was falsch gemacht?

Ich habe den Satz aus 1 Meter Entfernung: "Hey Snips, schalte die Stehlampe an" an die 5x gesagt, aber richtig erkannt hat er es nicht.

[14:44:50] [Hotword] detected on site default, for model hey_snips
[14:44:50] [Asr] was asked to stop listening on site default
[14:44:50] [Hotword] was asked to toggle itself 'off' on site default
[14:44:50] [Dialogue] session with id '9c0bc822-e6cb-42e3-9ee0-3b8f369bcf4a' was started on site default
[14:44:51] [Asr] was asked to listen on site default
[14:44:55] [Asr] captured text "schalte die stellen * ein" in 4.0s
[14:44:55] [Asr] was asked to stop listening on site default
[14:44:57] [Nlu] was asked to parse input "schalte die stellen unknownword ein"
[14:44:57] [Nlu] detected intent Thyraz:SetOnOff with probability 0.349 for input "schalte die stellen * ein"
              Slots ->
                 Value -> an
[14:44:57] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.349
              Slots ->
                 Value -> an
[14:44:57] [Nlu] was asked to parse input "schalte die stellen unknownword ein"
[14:44:57] [Nlu] detected intent Thyraz:SetOnOff with probability 0.349 for input "schalte die stellen * ein"
              Slots ->
                 Value -> an
[14:44:57] [Dialogue] was ask to end session with id 9c0bc822-e6cb-42e3-9ee0-3b8f369bcf4a by saying 'Da ist etwas schief gegangen.'
[14:44:57] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:44:57] [Dialogue] session with id '9c0bc822-e6cb-42e3-9ee0-3b8f369bcf4a' was ended on site default. The session ended as expected
[14:44:57] [Asr] was asked to stop listening on site default
[14:44:57] [Hotword] was asked to toggle itself 'on' on site default
[14:45:02] [Hotword] detected on site default, for model hey_snips
[14:45:02] [Asr] was asked to stop listening on site default
[14:45:02] [Hotword] was asked to toggle itself 'off' on site default
[14:45:02] [Dialogue] session with id '3ce46e28-8a66-444b-8337-1e50f45c497c' was started on site default
[14:45:03] [Asr] was asked to listen on site default
[14:45:06] [Asr] captured text "an" in 3.0s
[14:45:06] [Asr] was asked to stop listening on site default
[14:45:08] [Nlu] was asked to parse input "an"
[14:45:08] [Nlu] detected intent Thyraz:SetOnOff with probability 0.580 for input "an"
              Slots ->
                 Value -> an
[14:45:08] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.580
              Slots ->
                 Value -> an
[14:45:08] [Nlu] was asked to parse input "an"
[14:45:08] [Nlu] detected intent Thyraz:SetOnOff with probability 0.580 for input "an"
              Slots ->
                 Value -> an
[14:45:08] [Dialogue] was ask to end session with id 3ce46e28-8a66-444b-8337-1e50f45c497c by saying 'Da ist etwas schief gegangen.'
[14:45:08] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:45:08] [Dialogue] session with id '3ce46e28-8a66-444b-8337-1e50f45c497c' was ended on site default. The session ended as expected
[14:45:08] [Asr] was asked to stop listening on site default
[14:45:08] [Hotword] was asked to toggle itself 'on' on site default
[14:45:14] [Hotword] detected on site default, for model hey_snips
[14:45:14] [Asr] was asked to stop listening on site default
[14:45:14] [Hotword] was asked to toggle itself 'off' on site default
[14:45:14] [Dialogue] session with id 'f4fa1acc-2321-4465-9e36-a0ed77b0caa9' was started on site default
[14:45:15] [Asr] was asked to listen on site default
[14:45:19] [Asr] captured text "das wohnzimmerlampe an" in 3.0s
[14:45:19] [Asr] was asked to stop listening on site default
[14:45:21] [Nlu] was asked to parse input "das wohnzimmerlampe an"
[14:45:21] [Nlu] detected intent Thyraz:GetOnOff with probability 0.488 for input "das wohnzimmerlampe an"
              Slots ->
                 Status -> an
[14:45:21] [Dialogue] New intent detected Thyraz:GetOnOff with probability 0.488
              Slots ->
                 Status -> an
[14:45:24] [Nlu] was asked to parse input "das 'standardgerät' an"
[14:45:24] [Nlu] detected intent Thyraz:GetOnOff with probability 0.663 for input "das 'standardgerät' an"
              Slots ->
                 Device -> Standardgerät
                 Status -> an
[14:45:24] [Dialogue] was ask to end session with id f4fa1acc-2321-4465-9e36-a0ed77b0caa9 by saying 'Da ist etwas schief gegangen.'
[14:45:24] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:45:24] [Dialogue] session with id 'f4fa1acc-2321-4465-9e36-a0ed77b0caa9' was ended on site default. The session ended as expected
[14:45:24] [Asr] was asked to stop listening on site default
[14:45:24] [Hotword] was asked to toggle itself 'on' on site default
[14:45:29] [Hotword] detected on site default, for model hey_snips
[14:45:29] [Asr] was asked to stop listening on site default
[14:45:29] [Hotword] was asked to toggle itself 'off' on site default
[14:45:29] [Dialogue] session with id '64d7ed83-2f0d-43f2-866c-f0834fdd5221' was started on site default
[14:45:30] [Asr] was asked to listen on site default
[14:45:35] [Asr] captured text "schalte die wohnzimmerlampe ab" in 4.0s
[14:45:35] [Asr] was asked to stop listening on site default
[14:45:36] [Nlu] was asked to parse input "schalte die wohnzimmerlampe ab"
[14:45:36] [Nlu] detected intent Thyraz:SetOnOff with probability 0.975 for input "schalte die wohnzimmerlampe ab"
              Slots ->
                 Value -> aus
[14:45:36] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.975
              Slots ->
                 Value -> aus
[14:45:36] [Nlu] was asked to parse input "schalte die 'standardgerät' ab"
[14:45:36] [Nlu] detected intent Thyraz:SetOnOff with probability 1.000 for input "schalte die 'standardgerät' ab"
              Slots ->
                 Device -> Standardgerät
                  Value -> aus
[14:45:36] [Dialogue] was ask to end session with id 64d7ed83-2f0d-43f2-866c-f0834fdd5221 by saying 'Ok'
[14:45:36] [Tts] was asked to say "Ok"
[14:45:36] [Dialogue] session with id '64d7ed83-2f0d-43f2-866c-f0834fdd5221' was ended on site default. The session ended as expected
[14:45:36] [Asr] was asked to stop listening on site default
[14:45:36] [Hotword] was asked to toggle itself 'on' on site default


Internals:
   IODev      myBroker
   NAME       WZ_Stehlampe
   NR         152
   STATE      OFF
   TYPE       MQTT_DEVICE
   READINGS:
     2018-08-19 01:53:17   state           OFF
     2018-08-19 14:58:32   transmission-state subscription acknowledged
   message_ids:
   publishSets:
     :
       topic      cmnd/4ch/POWER4
       values:
         ON
         OFF
   sets:
     OFF       
     ON         
   subscribe:
     stat/4ch/POWER4
   subscribeExpr:
     ^stat\/4ch\/POWER4$
   subscribeQos:
     stat/4ch/POWER4 0
   subscribeReadings:
     stat/4ch/POWER4:
       cmd       
       name       state
Attributes:
   DbLogExclude .*
   IODev      myBroker
   KU_Kaffee  Nacht_Schaltung
   WZ_Alexa   WZ_abends_on
   WZ_Bilderrahmen WZ_TV_Abends
   WZ_Stehlampe WZ_TV_Abends
   alias      Stehlampe
   devStateIcon ON:FS20.on OFF:FS20.off
   eventMap   { dev=>{ 'true'=>'on', 'false'=>'off' }, usr=>{ '^on$'=>'true', '^off$'=>'false' }, fw=>{ '^on$'=>'on', '^off$'=>'off' } }
   group      Licht
   icon       light_floor_lamp
   publishSet ON OFF cmnd/4ch/POWER4
   room       3_Wohnzimmer,Snips
   snipsMapping SetOnOff:valueOff=OFF,cmdOn=ON,cmdOff=OFF

   snipsName  Bogenlampe, Stehlampe
   snipsRoom  Wohnzimmer
   stateFormat state
   subscribeReading_state stat/4ch/POWER4
   useSetExtensions 1
   userattr   KU_Kaffee KU_Kaffee_map WZ_Alexa WZ_Alexa_map WZ_Bilderrahmen WZ_Bilderrahmen_map WZ_Stehlampe WZ_Stehlampe_map lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 structexclude
   webCmd     ON:OFF


Dann gibt es bei mir ein Problem mit updateModel. Wenn ich das ausführe, rennt snips-asr-injection auf allen CPU 4 Cores Amok und die Last steigt über 6. Das hört nicht mehr auf, ich hatte es 10 Minuten laufen und dann den Snips Container neugestartet.
Das lässt sich immer wieder reproduzieren.

Wenn ich /usr/bin/snips-asr-injection -v per Console starte und updateModel über Fhem auslöse, bekomme ich das hier angezeigt:

[16:45:20.003202] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T125136" with date time 2018-08-19T12:51:36Z
[16:45:20.003358] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T115125" with date time 2018-08-19T11:51:25Z
[16:45:20.003536] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T125057" with date time 2018-08-19T12:50:57Z
[16:45:20.003635] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T124706" with date time 2018-08-19T12:47:06Z
[16:45:20.003721] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T115106" with date time 2018-08-19T11:51:06Z
[16:45:20.003805] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T131410" with date time 2018-08-19T13:14:10Z
[16:45:20.003890] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T121344" with date time 2018-08-19T12:13:44Z
[16:45:20.003974] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T121000" with date time 2018-08-19T12:10:00Z
[16:45:20.004059] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T144423" with date time 2018-08-19T14:44:23Z
[16:45:20.004152] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180818T205802" with date time 2018-08-18T20:58:02Z
[16:45:20.004242] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T123346" with date time 2018-08-19T12:33:46Z
[16:45:20.004323] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T120947" with date time 2018-08-19T12:09:47Z
[16:45:20.004810] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T142949" with date time 2018-08-19T14:29:49Z
[16:45:20.005017] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T115153" with date time 2018-08-19T11:51:53Z
[16:45:20.005504] DEBUG:snips_asr_injection_hermes::prepare: Copying model to inject at path "/var/lib/snips/injections/20180818T200921/inj_20180819T144520"
[16:45:20.145607] DEBUG:snips_asr_injection_hermes::core   : Number of new words: 0
[16:45:20.145729] DEBUG:snips_asr_injection_hermes         : Generating missing words pronunciations
[16:45:22.212165] DEBUG:snips_asr_injection_hermes::core   : Updating pronunciations' graph
[16:45:22.212349] DEBUG:snips_asr_injection_hermes::core   : Updating entities' graph
[16:45:22.214879] DEBUG:snips_asr_injection_hermes::core   : Injections performed with success
[16:45:22.218956] DEBUG:snips_asr_injection_hermes::core   : Number of new words: 0
[16:45:22.219079] DEBUG:snips_asr_injection_hermes         : Generating missing words pronunciations
[16:45:25.801882] DEBUG:snips_asr_injection_hermes::core   : Updating pronunciations' graph
[16:45:25.801984] DEBUG:snips_asr_injection_hermes::core   : Updating entities' graph
[16:45:25.803531] DEBUG:snips_asr_injection_hermes::core   : Injections performed with success
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Thyraz

#114
Da geht wohl wirklich was beim ASR Inject schief.

Du hast ja wahrscheinlich auch schon diese Zeilen in deinen zitierten Logzeilen gesehen:
Zitat
schalte die stellen unknownword ein
Da das Anlernen nicht geklappt hat, erkennt er den ersten Teil von "Stehlampe" notgedrungen zu "stellen", beim zweiten Teil ist er dann ratlos. ;)

Und wenn das ASR nicht geklappt hat ist auch logisch, dass Snips dich nicht mehr versteht.
Ich hab praktisch alle Device-Namen aus der Snips-Fhem-App rausgenommen, da die richtigen Namen ja vom ASR Inject kommen sollen.
Snips-Fhem ist im Auslieferungszustand jetzt also ziemlich ahnungslos was Gerätebezeichnungen angeht...

Ist jetzt die Frage ob das ein Bug seitens meines Moduls ist, sprich ob ich Blödsinn an ASR schicke und das somit nur schiefgehen kann,
oder ob das ein Bug seitens Snips ist (die hohe Prozessorlast ist zumindest mal komisch).


Kannst du mal im Snips-Modul das verbose Attibut auf 5 setzen und dann updateModel nochmal ausführen?
Dann die Logausgaben (im Fhem Logfie) hier posten?
An sich sollte da irgendwo Injecting data to ASR: ... vorkommen.
Da sollte man den JSON String sehen den ich an ASR Inject übergebe.

Dann sieht man ob das in Ordnung aussieht und ich kann mal bei mir testen was passiert wenn ich den gleichen String bei mir an ASR sende.


Was du außerdem mal testen kannst:
(Zuerst Snips mit sudo systemctl stop snips* beenden.)
Alle Injections werden unter /var/lib/snips/injections abgelegt.
Hier einfach mal alle Unterordner löschen.
Dann den Assistenten unter /usr/share/snips/assistent am Besten auch nochmal löschen und neu aufspielen.
Entweder händisch runterladen und nach /usr/share/snips/assistent kopieren, oder über sam install assistant falls sam installiert ist.

Danach den Rechner neu starten und den ASR Inject über set <snipsDevice> updateModel nochmal ausführen.
Evtl. ist ja nur irgendwas an dem letzten Inject korrupt und das Rücksetzen hilft.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

jowe

Hi Thyraz,
ich habe heute Morgen die neue Version eingespielt.
Bei mir hat das inject leider auch noch nicht funktioniert, habe allerdings auch nicht viel Zeit zum ausprobieren gehabt. Mir ist allerdings aufgefallen, dass der Set Befehl "textCommand" nicht zur Verfügung steht. Auch in der 10_SNIPS.pm auf git finde ich die Funktion nicht. Kann es sein, dass auf git nicht die aktuellste Version liegt?

Thyraz

Ohje, tatsächlich.  :o

Hab gerade die aktuelle Version von meinem Handy aus vom FHEM Server geladen und auf Github gepushed.

Aber ich glaub die Änderung war nur das mit textCommand, nichts was updateModel betrifft.
Falls es damit auch nicht geht, auch mal die Schritte mit Verbose 5 ausführen wie in meiner Antwort an mark79.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

jowe

Super, danke. Ich hoffe ich komme heute Abend oder morgen dazu, die Version einzuspielen und kurz zu testen. Melde mich dann wieder.

kud

Also mein Logeintrag sieht so aus
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["rasenmäher","Temperatur","Wasser","Sensor","Licht"]}],["add",{"de.fhem.Room":["Wohnzimmer","Küche","Treppe","Garten","garten","Keller","Büro"]}]]

Spracheingabe : Wie ist die Temperatur im Wohnzimmer"

Sam-Watch :
[Asr] captured text "wie ist die temperatur im unknownword wärmer" in 3.0s
...
[Nlu] was asked to parse input wie ist die temperatur im unknownword wärmer


In meinem Verzeichnis /var/lib/snips gibt es nur ein Unterverzeichnis skills . Mehr ist nicht drin und ja ich habe apt-get install -y snips-asr-injection
ausgeführt.

tomster

Ich hab grad die neue Version gezogen. Mit 2 Testdevices hat die "Injection" augenscheinlich wunderbar funktioniert.
Cooles Feature!