Dies ist eine alte Version des Dokuments!
Snips - Sprachsteuerung
Im Januar 2020 an Sonos verkauft und damit nicht mehr nutzbar
Die Konsole, in der unter anderem die eingegebenen Sätze zur Spracherkennung umgewandelt wurden, wurde zum 31.01.2020 abgeschaltet. Danach kann man nichts mehr entwickeln oder anpassen.
Meine Erfahrungen bis Februar 2020
Zufällig bin ich über Snips gestolpert, also mal ausprobieren.
Aktuell läuft es unter Raspbian, mit einer PlayStation Eye als Mikrofon.Ich nutze nicht die aktuelle Version von SNIPS, sondern 64.0. Warum? Das ist auf dem Rest der Seite zu finden. Meine Erfahrungen mit dem selber weiterentwickeln von snips-Modulen, auch von anderen ist auf einer eigenen Seite.
Erst meine Erfahrung mit Kali, drunter meine Erfahrung mit Buster und zum Schluß mit Raspbian-Lite
Irgendwann kam beim sudo apt-get update die Meldung, dass irgendwelche public keys nicht mehr gültig sind.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://raspbian.snips.ai/stretch stable InRelease: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY 531DD1A7B702B14D W: Fehlschlag beim Holen von https://raspbian.snips.ai/stretch/dists/stable/InRelease Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY 531DD1A7B702B14D
Dann musste man 'sudo apt-key adv –fetch-keys https://raspbian.snips.ai/531DD1A7B702B14D.pub' machen und alles war wieder gut.
Kali-Linux hat nicht wirklich sound-Ausgabe. Also gesucht und
apt-get install libasound2 alsa-utils alsa-oss alsamixer
Danach hat die Anleitung aus https://onesmarthome.de/lokale-sprachsteuerung-mit-openhab-2-und-snips-ai/ soweit funktioniert. Hier noch der Code dazu.Wie hier unschwer zu erkennen ist, braucht man nodejs was mich an anderer stelle fast zur Verzweiflung getrieben hat. Aber es geht ob die Vorarbeiten es gebracht haben, kann ich nicht sagen.
apt-get update apt-get upgrade curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - apt-get install -y nodejs npm install -g snips-sam sam connect kali.fritz.box sam status sam init sam setup audio sam test microphone sam test speaker sam sound-feedback on (geht nicht - error: bash: mosquitto_pub command not found, also erst mal ohne)
und schon muss ich wieder aufgeben (in Kali). sam status ergibt 'Platform nicht installiert' und nach sam init kommt zwar kein Fehler, aber die Plattform ist immer noch nicht installiert und sam install assistant bringt irgendwann 'snips-skillserver.service not loaded'
Buster installieren, dann code (s.o.) unter 'sudo su'
hier ging der sam connect kali.fritz.box nicht, musste wie in der Anleitung sam connect raspberrypi.local nutzen
oh mann, ich hab mal wieder alles mögliche installiert, ohne reboot und erst ging es nicht. also fast alles auf der Seite:
https://ourcodeworld.com/articles/read/406/how-to-enable-the-sound-on-kali-linux (ist zwar für Kali, aber nachdem es hier nicht ging…)
und
https://unix.stackexchange.com/questions/257322/no-audio-on-kali-linux
— wenn das geht, sind wir schon weiter. aber nicht viel. aufnehmen geht, abspielen geht, aber sam erkennt das Mikrofon immer noch nicht: ✖ Error fetching audio capture device: No capture devices found. Check if your mic is correctly plugged.
$ sudo nano /etc/asound.conf pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:0,0" } capture.pcm { type plug slave.pcm "hw:1,0" } } arecord -f cd out.wav aplay out.wav
https://github.com/snipsco/snips-record-personal-hotword
Es geht vorwärts. Auf der Webseite von snips steht, was man machen muss, damit es unter buster läuft. Auch im Wiki.
Hier wird genauestens erklärt, wie man das WakeWord 'berechnet'. Schön wäre es, wenn man mehr als 3 mal eingeben könnte… https://mc.ai/machine-learning-on-voice-a-gentle-introduction-with-snips-personal-wake-word-detector/
Erste Gehversuche mit eigenem python script. gut: https://medium.com/snips-ai/voice-controlled-lights-with-a-raspberry-pi-and-snips-822e53d7ede6
hier noch infos, die man in seinem python script ausgeben kann: https://github.com/tschmidty69/homeassistant-config/blob/master/snips/snips_listener.py
snips-watch -vvv
sudo ln -s /etc/systemd/system/multi-user.target.wants/smart-lights.service /etc/systemd/system/smart-lights.service
Nachdem der eigene TTS nicht funktioniert hat, probiere ich es jetzt nach Anleitung. Das Problem war, dass die Soundausgabe nach 0.1 Sekunden aufgehört hat ohne Fehler. Sonst ging alles!
Raspbian-Lite herunterladen und installieren.
Installiert nach Anleitung. Hatte vergessen, in der snips-web Konsole wieder auf 'hey snips' umzustellen → es ging gar nicht. Nachdem ich umgestellt und wieder deployed hatte (url auf der webconsole), kommt immer mal wieder der Fehler, dass der audio-server nichts spielen konnte. Lösung: zurück auf eine ältere version. Aktuell hatte ich 0.64.0. mit 0.63.3 geht es. Siehe https://forum.snips.ai/t/audio-server-reported-an-error-on-site-default-an-error-happened-while-trying-to-play-some-audio/3741/33
sudo apt install snips-audio-server=0.63.3 sudo apt install snips-tts=0.63.3
Weitere Hinweise gab es hier: https://github.com/snipsco/snips-issues/issues/203#issuecomment-543216242 \ hat mir aber nicht weiter geholfen. Vielleicht geht es jetzt auch unter buster?
es wird portaudio erwähnt. was ist das?
Also das nächste installieren siehe hier: https://app.assembla.com/wiki/show/portaudio/Platforms_RaspberryPi
Geht schon gut los, man soll das nightly build nehmen: http://www.portaudio.com/archives/pa_snapshot.tgz
Nach dem kompilieren und 'sudo make install' und dem sinustest, der ganz schön kratzt, geht der Aufruf in snips erst mal nicht.
Port audio aufnähme und abspielen kann man hiermit testen: /home/pi/portaudio/bin/paex_record
Dann hab ich wieder auf 0.64.0 upgedated. dann ging ein mal nicht und danach ging mit portaudio…
Weitere mögliche workarounds stehen hier: https://github.com/snipsco/snips-issues/issues/203
Mist, irgendein update, wahrscheinlich sam sound setup hat mir die einstellungen im /etc/asound.conf weggeschmissen. Man kann sie auch i .asoundrc schreiben, ich weiss aber nicht, ob man das unter pi oder unter _snips machen muss…
Wakeword, Skript für Aktionen: https://medium.com/snips-ai/voice-controlled-lights-with-a-raspberry-pi-and-snips-822e53d7ede6
Custom TTS: Start mit https://github.com/tschmidty69/snips und anpassen von dem Jarvis https://raw.githubusercontent.com/tschmidty69/homeassistant-config/master/snips/jarvis_says.sh
Zum testen:
sudo su -s /bin/bash - _snips /home/pi/lights_commands/osx_say.sh -w /tmp/test.wav -l en "OK, here I am2" sudo apt-get -y install mosquitto-clients mosquitto_pub -t hermes/tts/say -m '{"siteId":"default","text":"für wie lange?"}'
Damit das mit den Leer- und Sonderzeichen geht, muss ich curl einen encoded string mitgeben. Das war statt 'curl -s http://192.168.178.34:4000/index.js?v=$voice\&q=$text > „$cachefile“'
curl -G –data-urlencode „v=Anna“ –data-urlencode „q=Dies ist ein Test“ curl -s http://192.168.178.34:4000/index.js > „/tmp/xxx“
Mikrofon ging nicht - Lösung war, den aktiven USB-Hub stromlos zu machen *seufz*
Erste api war goye@imailweb.top und 5aaf68caff0975f05825b40c76bf0416 (aber da komme ich nicht mehr dran. Für den Wetterdienst habe ich nomadeye@click2mail.net (temp-mail.org) genutzt 3261b8e136932e626b7282d1fd6998d4
Das Wetter-Modul gibt immer nur das heutige wetter aus! Nutzt python3 in virtual environment. Im Ordner: /var/lib/snips/skills/Snips-Wetter/venv/bin must ich sudo ./pip3.5 install python-dateutil machen, da ich nicht anders das datum von iso in date konvertieren konnte. ein paar Zeilen aus parse_open_weather_map_forecast_response raus und runter vor den aufruf Zusätzlich muss man bei python echt auf 4 spaces versus tab achten!!!
Habe ein weiteres ausprobiert, das auch nicht ging. da war der 'zip code' falsch übergeben und Hermes Methoden in anderen Importpfaden. Habe mal GitHub ausprobiert und die zwei Änderungen dort eingetragen. Dort kommen bessere Textausgaben, auch das Wetter von Morgen. Allerdings das gleiche Problem mit 'ich bin wieder da', was als 'ich bin' verstanden wird und man „Nach welchem Gegenstand möchten Sie fragen?“ gefragt wird. Eine gute Antwort, damit es weiter geht ist „Regenschirm“ *seufz*.
Entweder ich muss es selber Programmieren, Forken oder es irgendwie hinbekommen, dass mein skill zuerst aufgerufen wird. 'Ich bin wieder da' sollte bei meinem Intent auftauchen!
Es gab Probleme mit osax, um iTunes stumm zu schalten und wieder zu anmuten. Wenn man es synchron gemacht hat, dauerte es für snips zu lange. Wenn man es asynchron macht, verschluckt er sich und es bleibt manchmal gemutet. Jetzt habe ich am mac in die Fehlerbehandlung vom aussprechen Befehl das anmuten eingebaut. dann geht es.
Wieder ist es passiert, dass der TTS zu früh abgebrochen ist. war wieder der apt-get upgrade auf eine neuere Version als die, die funktioniert *seufz* Siehe oben.
im Dezember 2019
Habe jetzt Wetter und Licht geklont und Pflanzen, Staubsauger und Rollo Steuerung hinzugefügt. Wetter habe ich von Github abgekoppelt und versuche jetzt, vor 31.01.2020 alles stabil zu bekommen, da man dann nicht mehr weiter entwickeln kann. Natürlich kann man die Actions noch anpassen, aber die Texte der Sprachbefehle sind dann nicht mehr änderbar.
Ob man später noch an die Doku kommt ist ungewiss. Die beiden wichtigsten Ordner sind
/usr/share/snips/ /var/lib/snips/skills/
Aktueller Stand (don't change a running system) mittels 'sam status':
Connected to device pi3 OS version ................... Raspbian GNU/Linux 9 (stretch) Installed assistant .......... varlet Language ..................... de Hotword ...................... hey_snips ASR engine ................... snips Status ....................... Live Service status: snips-asr .................... 0.64.0 (running) snips-audio-server ........... 0.63.3 (running) snips-dialogue ............... 0.64.0 (running) snips-hotword ................ 0.64.0 (running) snips-nlu .................... 0.64.0 (running) snips-skill-server ........... 0.64.0 (running) snips-tts .................... 0.63.3 (running) sudo apt install snips-audio-server=0.63.3 sudo apt install snips-tts=0.63.3
Damit die beiden Pakete nicht aktualisiert werden, habe ich sie auf 'hold' gesetzt:
Hold a package: sudo apt-mark hold <package-name> Remove the hold: sudo apt-mark unhold <package-name> Show all packages on hold: sudo apt-mark showhold
Stand Dezember 2019