SEPIA-Framework / sepia-docs

Documentation and Wiki for SEPIA. Please post your questions and bug-reports here in the issues section! Thank you :-)
https://sepia-framework.github.io/
236 stars 16 forks source link

RPi Zero + ReSpeaker Client Fehler bad Handshake #105

Closed bub4 closed 3 years ago

bub4 commented 3 years ago

Hi, ich wollte dir/euch allem voran sagen, wie geil ich es finde, dass du/ihr so etwas macht. Ich wollte schon lange eine lokal gehostete Sprachsteuerung für zu Hause. Also vielen vielen DANK. Die Doku bis zu diesem Punkt ist auch super - denn ich bin absoluter n00b und ich habe es bis hier hin geschafft ;)

Ich habe jetzt soweit eigentlich alles bis auf die wake-word engine am laufen. Aber diese Anleitung funktioniert für mich leider nicht: https://github.com/SEPIA-Framework/sepia-wakeword-tools/tree/master/Porcupine

Der Client ist soweit richtig konfiguriert. Zumindest kann ich mich am Notebook und iPhone am Assist Server unter Control HUP mit dem Client verbinden (mittels Clexi) und das Mikro triggern. Meine Befehle steuern dann auch den AVR in dem Fall.

Ich habe beides versucht, aber nach Passworteingabe kommt folgende Fehlermeldung

mit SSL (self signed -> option 4 im nginx setup): Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/home/pi/Porcupine/sepia/account.py", line 142, in <module> account.authenticate(p) File "/home/pi/Porcupine/sepia/account.py", line 60, in authenticate response = requests.request("POST", url, json=payload, headers=headers) File "/usr/lib/python2.7/dist-packages/requests/api.py", line 60, in request return session.request(method=method, url=url, **kwargs) File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 533, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 646, in send r = adapter.send(request, **kwargs) File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 514, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.178.45', port=20726): Max retries exceeded with url: /sepia/assist/authentication (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))

ohne SSL Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/home/pi/Porcupine/sepia/account.py", line 142, in <module> account.authenticate(p) File "/home/pi/Porcupine/sepia/account.py", line 60, in authenticate response = requests.request("POST", url, json=payload, headers=headers) File "/usr/lib/python2.7/dist-packages/requests/api.py", line 60, in request return session.request(method=method, url=url, **kwargs) File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 533, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 646, in send r = adapter.send(request, **kwargs) File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 514, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.178.45', port=20721): Max retries exceeded with url: /sepia/assist/authentication (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_record', 'wrong version number')],)",),))

hättest Du mir einen Tipp, wo ich ansetzten soll?

Danke und Grüße

bub4 commented 3 years ago

Hallo nochmal - dank dem Hinweis eines Freundes auf diesen Beitrag: https://github.com/SEPIA-Framework/sepia-docs/issues/27 bin ich nun auch darauf gekommen, dass man Porcupine nicht zwingend benötigt 😋

Ich hatte in dem Client Installations Guide durchaus gesehen, dass per Fine Tuning die Erkennung aktiviert werden muss, was ich auch gemacht habe - nur dachte ich, dass das wake-word tool in jedem Fall zusätzlich benötigt wird.

SepiaFW.settings = {

    headless: {
            device: {
                    "host-name": "192.168.178.45",
                    "deviceId": "zerowo",
                    "deviceLocalSiteData": {
                            "location": "home", 
                            "type": "room", 
                            "name": "unassigned", 
                            "index": ""
                    },
                    "en-voice": "",
                    "de-voice": "",
                    "wakeWordSensitivity": [0.9]
            },
            user: {
                    "clexiSocketURI": "ws://localhost:8080",
                    "clexiServerId": "clexi-123",
                    "clexiConnect": true,
                    "useRemoteCmdl": true,
                    "speech-voice-engine": "sepia",
                    "speech-asr-engine": "native",
                    "speech-websocket-uri": "ws://localhost:20741/stt/socket",
                    "useGamepads": true,
                    "useBluetoothBeacons": true,
                    "useBluetoothBeaconsInAoModeOnly": false,
                    "useWakeWord": true,
                    "autoloadWakeWord": true,
                    "allowWakeWordDuringStream": true,
                    "activeSkin": "2",
                    "activeAvatar": "0",
                    "proactiveNotes": false,
                    "autoGPS": false
            },
            location: {
                    "latitude": "",
                    "longitude": ""
            },
            broadcast: {
                    "state": true,
                    "login": true,
                    "clientError": true,
                    "accountError": true,
                    "speech": true,
                    "wakeWord": true,
                    "audioPlayer": true,
                    "alarm": true
            }
    }

Aktiviert habe ich alles und es erscheint auch diese Meldung bei Client Connections:

Broadcaster event: {"broadcast":{"client":"zerowo_chrome_app_v0.23.0","deviceId":"zerowo","sepia-wake-word":{"state":"active","keywords":["hey sepia"]}}}

Nur leider reagiert der Zero nicht auf mein hey sepia. Das Mikro funktioniert -> wenn ich den Mikro trigger button klicke, hört er zu und nimmt meine Aussagen (richtig) entgegen.

ich werde hier noch etwas rumprobieren derzeit sieht meine Konfiguration so aus:

sollte da etwas grob schlecht sein, wäre es nett, wenn Du mir einen Wink geben könntest

@fquirin Florian, nochmal vielen Dank für die viele Arbeit und Mühe, die Du hier reinsteckst!

bub4 commented 3 years ago

Hat sich erledigt - hab eine neue Installation auf dem RPi 3b gemacht und es tut jetzt. Wake-Word Erkennung ist aber etwas dürftig - liegt ggf an dem ReSpeaker 2...?

Hat schonmal jemand so etwas ausprobiert?

https://www.jabra.com/_/media/Jabra_VXi_Product-Documentation/Jabra-SPEAK-410-Series/technical-specifications/Jabra-Speak-410-Techsheet-A4.pdf

fquirin commented 3 years ago

Hi @bub4 , sorry für die späte Antwort, ich brauchte mal ne kleine Pause und war 2021 noch nicht so richtig aktiv in der Community (Entwicklung geht aber stetig voran ^^). Ich gelobe Besserung ^^.

Den Jabra habe ich selber und benutze ihn am Desktop PC mit Window hauptsächlich für Video-Konferenzen aber auch recht erfolgreich für SEPIA :-) Ansonsten haben die neusten Tests ergeben, dass das 4-Mic HAT von Seeed Studio (ReSpeaker) wahrscheinlich das Beste Preis-Leistungsverhältnis bietet.

Die nächste Version wird größere Veränderungen an der Wake-Word Engine mit sich bringen. Ich hoffe, dass sich dadurch die User-Experience deutlich verbessern wird :-)