Rhasspy, mein Weg zu neuen Ufern: es läuft

Begonnen von Gisbert, 19 November 2021, 23:08:07

Vorheriges Thema - Nächstes Thema

Beta-User

@denis.robel:
Trotzdem hat drhirn dahingehend recht, dass es sinnvoll ist, erst mal "klein anzufangen" und die base an's Laufen zu bekommen. Der Rest kommt dann schon auf die eine oder andere Weise*, wenn mal klar ist, wie das Gesamtsystem tickt. Zu viele Baustellen auf einmal sind nicht gut, die machen das ganze nur unübersichtlich.

Prinzipiell müßte es gehen => später wieder damit intensiver befassen, falls noch erforderlich...

Zitat von: drhirn am 28 März 2022, 13:00:59
Ja. Wurde mir gerade auch bewusst, als ich die App eben wieder mal getestet habe.
Dieser "Mangel" war für mich einer der Gründe,
- die ESP-Lösung erst mal auf die Seite zu legen und
- mir das mit AMAD.* mal anzusehen...

@denis.robel: * => evtl. ist mittelfristig eine AMAD.*-basierte Interaktion vom Handy aus auch für dich die bessere Lösung. Ich habe zwar noch einen offenen Punkt, was das Wiedereinschalten des Mikros im Fall von Rückfragen angeht, aber ansonsten gefällt mir diese Sache fast besser wie der Shortcut auf der Rhasspy-Mobile-App :) . Leider bekommt g.* dann mit, was ich da reinlabere, aber damit alleine fangen die auch noch nicht wirklich viel an...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

drhirn

Ich muss gleich sagen: Ich hab an meiner Base keine Audio-Hardware. Ich kann das also nicht verlässlich testen.

Aber, ich hab das jetzt so weit, dass ich vom Satellit und von der App aus Befehle erteilen kann. Und das Wakeword funktioniert auch auf beiden. Ist in der Tat etwas tricky. Und die App nicht unbedingt sehr stabil. Wird aber offenbar auch schon seit Längerem nicht mehr weiter entwickelt.

Der Trick war das Dialogue Management. Das muss auch an der Base aktiv sein. Aber da darf dann nur die siteId der App konfiguriert sein (bzw. App + Base). Sonst kommen die anderen Satelliten durcheinander. Und die IP in der WakeWord Konfiguration muss die vom Docker Container sein. Der UDP-Port muss natürlich nach außen geöffnet werden.

Hier die Konfiguration der Base:

{
    "dialogue": {
        "group_separator": ".",
        "satellite_site_ids": "mobile-app6",
        "system": "rhasspy"
    },
    "intent": {
        "satellite_site_ids": "wohnzimmer,vorraum,küche,schlafzimmer,defhem,mobile-app6",
        "system": "fsticuffs"
    },
    "microphone": {
        "pyaudio": {
            "udp_audio_port": ""
        },
        "system": "pyaudio"
    },
    "sounds": {
        "error": "${RHASSPY_PROFILE_DIR}/error.wav",
        "recorded": "${RHASSPY_PROFILE_DIR}/end_of_input.wav",
        "system": "aplay",
        "wake": "${RHASSPY_PROFILE_DIR}/start_of_input.wav"
    },
    "speech_to_text": {
        "kaldi": {
            "allow_unknown_words": true,
            "cancel_word": "alexa"
        },
        "satellite_site_ids": "wohnzimmer,vorraum,küche,schlafzimmer,defhem,mobile-app6",
        "system": "kaldi"
    },
    "text_to_speech": {
        "satellite_site_ids": "wohnzimmer,vorraum,küche,schlafzimmer,defhem,mobile-app6",
        "system": "nanotts"
    },
    "wake": {
        "porcupine": {
            "udp_audio": "172.28.0.2:20000:mobile-app6"
        },
        "satellite_site_ids": "wohnzimmer,vorraum,küche,schlafzimmer,defhem,mobile-app6",
        "snowboy": {
            "udp_audio": "172.28.0.2:20000:mobile-app6"
        },
        "system": "snowboy"
    }
}


Screenshot hängt auch an.

Müsste also schon funktionieren, wenn da an der Base auch noch Audio-Geräte hängen. Aber wie gesagt, kann's nicht testen, weil ich meine USB-Soundkarte gerade nicht finde ;).

denis.robel

Hallo,

ich hatte klein angefangen, denn vorher hat ja von meiner Base aus das wesentliche funktioniert ....
Wie jetzt wieder.

Die App läuft, aber eben immer noch ohne wake word detection (ein Schritt zurück im Vergleich zu Snips und Snipek auf dem Jolla Riegel).

Ich habe noch eine Frage, was habt Ihr für Satelliten Hardware am Start?
VG

Denis

drhirn

Na dann, zeig und mal die Config deiner Base (Advanced im Menü oben). Mal schauen, ob wir das hin bekommen.

Ich hatte ein paar Raspberry PI 3A+ im Einsatz. Weil, super Preis-/Leistungsverhältnis. Hab mir dann einen Zero2 gekauft und bin begeistert. Werde umrüsten, sobald's wieder welche gibt.
Audio-Hardware hab ich Respeaker 2Mic HATs. Die sind aber nur so "naja".

denis.robel

#94

{
    "dialogue": {
        "satellite_site_ids": "denismobile",
        "system": "rhasspy"
    },
    "intent": {
        "satellite_site_ids": "denismobile",
        "system": "fsticuffs"
    },
    "microphone": {
        "pyaudio": {
            "device": "1",
            "udp_audio_host": "",
            "udp_audio_port": ""
        },
        "system": "pyaudio"
    },
    "mqtt": {
        "enabled": ""
    },
    "sounds": {
        "aplay": {
            "volume": "0.6"
        },
        "system": "aplay"
    },
    "speech_to_text": {
        "kaldi": {
            "cancel_word": "abbrechen"
        },
        "satellite_site_ids": "denismobile",
        "system": "kaldi"
    },
    "text_to_speech": {
        "nanotts": {
            "volume": "0.7"
        },
        "satellite_site_ids": "denismobile",
        "system": "nanotts"
    },
    "wake": {
        "porcupine": {
            "keyword_path": "computer_raspberry-pi.ppn",
            "sensitivity": "0.7",
            "udp_audio": "172.17.0.2:20000:denismobile"
        },
        "satellite_site_ids": "denismobile",


und meine docker-compose.yml

rhasspy:
    image: "rhasspy/rhasspy"
    container_name: rhasspy
    restart: unless-stopped
    volumes:
        - "$HOME/.config/rhasspy/profiles:/profiles"
        - "/etc/localtime:/etc/localtime:ro"
    ports:
        - "12101:12101"
        - "12183:12183"
        - "20000:20000"
        - "20001:20001"
        - "20002:20002"
        - "20003:20003"
    devices:
        - "/dev/snd:/dev/snd"
    command: --user-profiles /profiles --profile de


VG

Denis

JensS

@denis.robel
Die Settings funktionieren. Ob's korrekt ist, weiß ich nicht, da die Doku dazu keine Angaben macht.

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.

drhirn

Jetzt warst schneller, ich war noch am Test :)

Wollte aber vorschlagen, die siteId der Base bei dialogue noch einzutragen. Hätte auch reichen können.

Freut mich, dass es funktioniert!

JensS

Naja, mit der Erkennung hapert es, seit der letzten Rhasspy-Version aber es wird ja hoffentlich in der V2.6 ein neues WakeWord-System rauskommen.
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.

drhirn

Zitat von: JensS am 31 März 2022, 18:42:53
Naja, mit der Erkennung hapert es, seit der letzten Rhasspy-Version aber es wird ja hoffentlich in der V2.6 ein neues WakeWord-System rauskommen.

Echt? Bei mir geht das super mit der App. Besser als mit den Satelliten ;)

drhirn

Zitat von: JensS am 31 März 2022, 18:37:16
@denis.robel
Die Settings funktionieren. Ob's korrekt ist, weiß ich nicht, da die Doku dazu keine Angaben macht.

Geht bei mir auch, wenn ich die IP weg lasse und das so eintrage:
:20000:mobile-app6

Und in der docker-compose muss man eigentlich nur UDP freigeben:

    ports:
      [...]
      - "20000:20000/udp"

Prof. Dr. Peter Henning

ZitatEcht? Bei mir geht das super mit der App. Besser als mit den Satelliten
Doofe Frage: Wakeword mit der App???

LG

pah


drhirn

Ja. App hört dann halt dauernd zu und der Netzwerkverkehr dürfte ordentlich ansteigen. Wie der Akku ordentlich leer wird.

Beta-User

Bin mal gespannt, ob bzw. wann da jemand erfolgreich daran arbeitet, die wakeword-engine direkt auf dem Andoiden unterzubringen, also (sound-technisch) offline.

Es gab dazu schon vor Jahren eine (von der Rhasspy-Mobile-App verschiedene) Demo-App, die aber auch ziemlich Akku gebraucht hat und wirklich nur "habe das (eine vorinstallierte) wakeword erkannt" gemeldet hat, also nix via MQTT verschickt oder so. Auf der Suche nach dem Link dahin bin ich bei "Picovoice" gelandet (https://github.com/Picovoice/cobra#android-demos). Sieht (unabhängig von der konkreten Lösung, die z.B. auch für ESP32 zu kompilieren zu sein scheint) allgemein so aus, als gäbe es da noch mehr Leute, die Bedarf sehen für so ein feature...

Also falls jemand in der Lage ist, da ein "add-on" draus zu basteln: feel free :) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

ich hab Google Assistant als Sprachsteuerung rausgeschmissen, da ich es nur noch unregelmäßig benutzt habe, und weil es unzuverlässig war. Die Antwort "Ich habe ... in deiner Nähe gefunden" nervte nur noch.

Bei der Entfernung von Google Assistant habe ich bei den Rollladen-Devices die Google Assistant-typischen Attribute gelöscht, bzw. in dem EventMap nur das für den Assistant notwendige.

Ich habe überprüft, ob die Spracheingabe mit der Android-App noch funktioniert, und das tat sie.

Heute Morgen liefert die App aber nur Fehler. Ich konnte den Fehler immerhin etwas eingrenzen. Wenn ich statt zu sprechen, den Befehl eintippe, führt Fhem den Befehl aus.

Hier der log aus der Android-App bei gesprochenem Befehl:
[D] TIME: 2022-04-19T08:17:09.211061 Starting mqtt... TAG: MQTT
[D] TIME: 2022-04-19T08:17:09.212931 Connecting to mqtt... TAG: MQTT
[D] TIME: 2022-04-19T08:17:09.318113 connected TAG: MQTT
[I] TIME: 2022-04-19T08:17:09.319061 Mosquitto client connected TAG: MQTT
[I] TIME: 2022-04-19T08:17:11.156649 Start recording TAG: APP
[D] TIME: 2022-04-19T08:17:11.157421 Send port: SendPort TAG: MQTT
[D] TIME: 2022-04-19T08:17:11.520859 generate new data session TAG: MQTT
[D] TIME: 2022-04-19T08:17:22.125939 received topic: hermes/asr/textCaptured TAG: MQTT
[D] TIME: 2022-04-19T08:17:22.251235 received topic: hermes/nlu/intentNotRecognized TAG: MQTT
[W] TIME: 2022-04-19T08:17:22.252745 IntentNotRecognized TAG: DIALOGUE
[D] TIME: 2022-04-19T08:17:22.253148 StopRecording request TAG: DIALOGUE
[I] TIME: 2022-04-19T08:17:22.253278 Stop recording TAG: APP
[D] TIME: 2022-04-19T08:17:24.285510 keepAlive TAG: MQTT


An der Android-App habe ich absolut gar nichts geändert. In Fhem hab ich die Rhasspy-Definitionen in eine eigene cfg geschoben und per include in fhem.cfg eingebunden, dannach einen Fhem-Neustart.

Hast du eine Idee, was da los sein könnte?
Viele​ Grüße​
Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Hallo Jörg,

das Problem war ärgerlich wie einfach zu lösen. Heute abend hab ich gemerkt, dass das Mikrofon meines Handys nicht funktioniert. Nach einem Neustart des Handys war wieder alles gut.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY