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

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

Vorheriges Thema - Nächstes Thema

nanocosmos

Ich hatte mir jetzt einen Respeaker 2 Clone bestellt und wollte diesen auf einem Pi Zero testen.
Snips und ebenso den Assistenten (mit dem FHEM Skill) installiert.
Leider erkennt er nicht mehr als das Hotword "Hey Snips":
[Dialogue] session with id 'd7d433d9-8971-489a-a64b-1cb8f9014b56' was ended on site default. The session was ended because one of the component didn't respond in a timely manner.
[17:05:28] Watching on localhost:1883 (MQTT)
[17:05:39] [Hotword] detected on site default, for model hey_snips
[17:05:39] [Asr] was asked to stop listening on site default
[17:05:39] [Hotword] was asked to toggle itself 'off' on site default
[17:05:39] [Dialogue] session with id '1b8f328f-952b-4616-9fd9-3aa9bfda25b6' was started on site default
[17:05:39] [AudioServer] was asked to play a wav of 41.1 kB with id '29d5672f-e420-4304-bbf4-3c9ca5dcbcc1' on site default
[17:05:40] [AudioServer] finished playing wav with id '29d5672f-e420-4304-bbf4-3c9ca5dcbcc1'
[17:05:40] [Asr] was asked to listen on site default
[17:05:56] [Dialogue] session with id '1b8f328f-952b-4616-9fd9-3aa9bfda25b6' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[17:05:56] [Asr] was asked to stop listening on site default
[17:05:56] [Hotword] was asked to toggle itself 'on' on site default


Bei meinem ersten Testaufbau (Pi2 mit Playstation Mirko) hatte das ganz wunderbar funktioniert.

Hoffe jemand hat einen Tipp. Habe schon diverse Google Links durch und bei snips selbst auch noch keine Lösung gefunden.

Roman

Hi nanocosmos,

sehe ich richtig und du willst Snips komplett auf einem PiZero laufen lassen?

Das wird wahrscheinlich nicht gehen, dazu ist der Zero zu schwach.
Der PiZero sollte als Satellit konfiguriert werden ( nur Audio-server und Hotword).
Der Rest sollte mindestens auf einem Raspberry 3 laufen.

Dann sollte das auch klappen.

Gruß
Roman

nanocosmos

Hallo Roman,

Vielen Dank für den Tipp!
Hatte es vorher auf dem Pi2 laufen, da hat es wunderbar funktioniert. Aber der BCM2835 vom Zero ist anscheinend doch deutlich weniger performant als der BCM2836 vom Pi2.

Klasse wäre ein Snips Docker Container. [emoji2]

Viele Grüße
Daniel

nanocosmos

Habe im Docker hub ein Snips Docker gefunden.
Leider sind die Infos etwas dürftig. [emoji848][emoji2]
Hat jemand von euch das schon zum Laufen bekommen?
Welche Pfade, Ports usw. muss man mappen?

Besten Dank und viele Grüße
Daniel

bennebartsch

Zitat von: nanocosmos am 02 Mai 2019, 20:43:26
Habe im Docker hub ein Snips Docker gefunden.
Leider sind die Infos etwas dürftig. [emoji848][emoji2]
Hat jemand von euch das schon zum Laufen bekommen?
Welche Pfade, Ports usw. muss man mappen?

Besten Dank und viele Grüße
Daniel

Ich hatte es mal probiert, dann aber meine eigene Dockerfile geschrieben. Kannst du vermutlich nicht 1 zu 1 verwenden, aber vielleicht hilft es ja jemandem:
Dockerfile:

FROM debian:stretch
MAINTAINER Benedikt Bartscher (benedikt@bartscher.me)

RUN apt-get update
RUN apt-get install -y git gnupg2 apt-transport-https dbus supervisor dirmngr pulseaudio pulseaudio-utils mpg123 python3 python3-pip mosquitto-clients curl
RUN echo "deb https://debian.snips.ai/stretch stable main" > /etc/apt/sources.list.d/snips.list
#RUN apt-key adv --recv-keys F727C778CCB0A455
#RUN apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455
RUN apt-get update
RUN apt-get install -y snips-platform-voice snips-watch snips-injection --allow-unauthenticated

# snips-sam nodejs
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g snips-sam

# TTS
RUN pip3 install toml paho-mqtt boto3 awscli pygame
RUN aws configure set default.region eu-central-1
RUN aws configure set region eu-central-1 --profile testing
RUN aws configure set profile.testing2.region eu-central-1
RUN aws configure set preview.cloudsearch true
#RUN git clone https://github.com/Thyraz/snips-tts-polly.git /opt/snips-tts-polly
ADD ./snips-tts-polly /opt/snips-tts-polly
RUN cp /opt/snips-tts-polly/snips-tts-polly.py /usr/bin

ADD credentials /root/.aws/credentials
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ADD snips-feedback-off /usr/bin/snips-feedback-off
ADD default.pa /etc/pulse/default.pa
ADD ./jarvis /etc/snips/jarvis

ENTRYPOINT ["/usr/bin/supervisord"]


Man kann dann beliebige Komponenten von Snips in der supervisord.conf angeben, hier mal ein Beispiel:

[program:snips-nlu]
command=/usr/bin/snips-nlu
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0


Und zu allerletzt noch meine docker-compose.yml (sorry etwas chaotisch und privileged):

version: '2'

services:
    mysnips:
        restart: always
        container_name: mysnips
        build: mysnips
        privileged: true
        ports:
            - "9898:1883"
        volumes:
            - ./assistant:/usr/share/snips/assistant
            - ./snips.toml:/etc/snips.toml
            - /var/run/pulse/.config/pulse/cookie:/root/.config/pulse/cookie
            - /var/run/pulse:/run/user/1000/pulse
            - /etc/asound.conf:/etc/asound.conf
            #- /tmp/pulsesocket:/tmp/pulsesocket:rw
            - /dev/snd:/dev/snd
            #- /etc/pulse/default.pa:/etc/pulse/default.pa
            #- /etc/pulse/:/etc/pulse/
            #- ~/.config/pulse/cookie:/root/.config/pulse/cookie
            #- ${XDG_RUNTIME_DIR}/pulse/native/:${XDG_RUNTIME_DIR}/pulse/native/
        environment:
            - PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native

AKropsch

Hallo Zusammen,

ich klinke mich mit ein  :)

Snips läuft bei mir auf RPI 3b+ mit PS3Eye als Micro , der FHEM auf dem Server im Keller. Sprachausgabe mit Polly-TTS. Zur Zeit läuft Alles wunderbar. Internet Radio (über MPD Modul), Staubsauger, Rollos, Lichter...
Bin fleißig dabei es mit Leben zu füllen und der WAF Steigt Täglich  ;D
Vielen Dank @Thyraz für Deine Arbeit!

Grüße Andreas

drhirn

Weil ich mich im Thread mal beschwert habe, dass mich Snips nicht versteht: Das war ein Problem mit dem ReSpeaker-Hat. Habe die Treiber neu installiert und seitdem kann ich mich wieder problemlos mit Snips unterhalten.

FhemPiUser

habe jetzt auch Snips ausprobiert und zumindest textCommand ging auf Anhieb, bin begeistert. Vielen Dank Thyraz für die klasse Arbeit!

Eine Frage habe ich: Die Raumerkennung geht nicht. Sam watch schreibt immer nur "standardgerät" und "standardraum" bei textcommands. Ich nehme an es liegt daran, dass ich mit fhem noch auf Jessie bin und daher snips-injection nicht installieren konnte? Dre rpi mit snips ist aber auf Stretch mit aktuellem snips-injection. Muss sips-injection auch auf dem fhem rpi installiert sein? Das würde bedeuten, ich muss den fhem rpi jetzt auf stretch umstellen (wollte eigentlich auf buster warten...)?

delta8585

Hallo,

Vielen dank für das tolle Modul.
Ich habe es mittlerweile hinbekommen das ich Lampen schalten kann.  8)

Aber:
Ich brauche etwas Hilfe beim Mapping.
Ich verstehe das leider nicht. :(

Ich möchte gerne verschiedene Lichtszenen schalten und benutze dazu das LightScene Modul.
Hier gibt es 4 verschiedene Möglichkeiten: Ein / Aus / Hell / Dunkel.

Was muss ich denn hier für das snipsMapping eintragen?

Vielen Dank
Gruß
Johannes


drhirn

Ich hab das nicht über ein Mapping gemacht, sondern über "Channels". Also, eigentlich beides.
Intent MediaChannels

Und dann halt das Attribut snipsChannels wie folgt befüllt

Hell=set <Name der LightScene> scene <Name der Szene>
Dunkel=set <Name der LightScene> scene <Name der Szene>


Das Mapping habe ich für Ein/Aus verwendet

SetOnOff:cmdOn=set <Name der LightScene> scene <Name der Szene>,cmdOff=set <Name der LightScene> scene <Name der Szene>

JensS

Wie bekomme ich es hin, dass sich SNIPS nicht mir mpd um die Tonausgabe des ReSpeaker 2-Mics Pi HAT zankt? Aktuell höre ich die Antworten von SNIPS nur, wenn ich vorher "Radio Pause" sage.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

FhemPiUser

bei mir stellt fhem snips noch immer nicht meine raum- und gerätename zur verfügung, obwohl ich snips-injection installiert habe auf dem snips rpi.

snips scheint alles richtig zu erkennen, denn das reading lastntentpayload ist

{"Device":" temperatur","Room":"wohnzimmer","input":"wie ist die temperatur vom thermometer im wohnzimmer","intent":"GetNumeric","probability":null,"requestType":"voice","sessionId":"...","siteId":"default"}

sam watch sagt

[Nlu] was asked to parse input "wie ist die temperatur vom thermometer im wohnzimmer"
[20:11:41] [Nlu] detected intent Thyraz:GetNumeric with confidence score 0.941 for input "wie ist die temperatur vom thermometer im wohnzimmer"
              Slots ->
                 Type -> Temperatur (confidence: 1.000)
[20:11:41] [Dialogue] New intent detected Thyraz:GetNumeric with confidence 0.941
              Slots ->
                 Type -> Temperatur (confidence: 1.000)
[20:11:42] [Nlu] was asked to parse input "wie ist diestandardgerät vomstandardgerät im standardraum"
[20:11:42] [Nlu] detected intent Thyraz:GetNumeric with confidence score 0.813 for input "wie ist diestandardgerät vomstandardgerät im standardraum"
              Slots ->
                 Room -> Standardraum


fhem log sagt

Parsed value: wohnzimmer for key: Room
2019.05.21 21:26:34.305 5: Parsed value: temperatur for key: Device


er erkennt raum und gerät also, aber irgendwie geht es auf dem weg zu snips wieder verloren.

oder muss snips-injection auch auf dem rpi von fhem installiert sein?

Update: auch wenn er standardgerät im log schreibt, scheint er den raum und das gerät zu verstehen und ich kann geräte in verschiedenen räumen schalten.

nanocosmos

Würde meine Snips Satelitten und den RPI mit der Snips Base gerne als Spotify / Radio Player  nutzen.
Hat jemand von euch sowas schon im Einsatz?

Hatte mich mal eingelesen und mit mopidy soll es wohl einfach möglich sein, Spotify auf dem Raspi zu nutzen.

jowe

Ich kann dafür den Logitech Media Server und das Squeezebox Modul empfehlen. Funktioniert super, inclusive synchronem multiroom audio

nanocosmos