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/
237 stars 16 forks source link

Client auf RPI 3+ mit Respeaker 6MiC #51

Open tlrider99 opened 4 years ago

tlrider99 commented 4 years ago

Hallo Florian,

ich habe es jetzt endlich mal geschafft den Client zu installieren. 2 kleine Problemchen :-).

  1. Die Wakeword-Erkennung ist relativ schlecht, obwohl die restliche Sprache gut erkannt wird.
  2. Kann ich die TTS-Qualität auf dem Client verbessern?
  3. Hasst du ne Idee wie man die LEDs am Respeaker aktivieren kann? Vielen Dank!

Grüße Dirk

sepia-assistant commented 4 years ago

Hi Dirk,

freut mich zu hören :-)

Die Wakeword-Erkennung ist relativ schlecht, obwohl die restliche Sprache gut erkannt wird.

Relative schlecht heißt es funktioniert fast gar nicht? Der ReSpeaker ist ja ein solides Mikrofon und Seeedstudio benutzt es sogar erfolgreich mit der selben Wake-Word engine (Porcupine) in einigen Videos. Gute Ergebnisse sollten also möglich sein. Du könntest test weise mal ein anderes Wake-Word versuchen, vielleicht hast du da bessere Resultate. Hier gibt es eine kleine Anleitung wie man das Wake-Word ändern kann: Wake-Word Info. "grasshopper" mit Engine v1.6 zum Beispiel sollte sehr gut funktionieren. Wenn selbst das nicht gut klappt müssten wir mal die Mikrofon Konfiguration testen, vielleicht ist die Lautstärke zu niedrig. Die Spracherkennung vergibt das eher als die Wake-Word engine.

Kann ich die TTS-Qualität auf dem Client verbessern?

Das Beste was man im DIY Client zur Zeit rausholen kann wäre MaryTTS. Das frisst allerdings auch die meisten Resourcen. Läuft dein SEPIA Server auf einem RPi4 oder stärker? Falls ja kannst du den MaryTTS Server installieren über ~/SEPIA/sepia-assist-server/Xtensions/TTS/marytts/download_linux.sh. Beim nächsten Neustart des Servers lädt MaryTTS dann automatisch mit. Falls das System zu schwach ist kann man den TTS Server auch auf einem anderen Rechner laufen lassen. Da könnte ich auch noch mal erklären wie das geht. Die TTS Stimme selber wird im DIY Client dann über die "settings.js" eingestellt: ~/clexi/www/sepia/settings.js. Zum Beispiel "de-voice": "de-DE marytts m" oder "de-voice": "de-DE marytts r" (ich hoffe ich habe das jetzt richtig im Kopf ^^).

Hasst du ne Idee wie man die LEDs am Respeaker aktivieren kann?

Das habe ich auf der To-Do Liste. Der CLEXI Server sendet Events für "listening"/"speaking"/"idle"/etc. , die man abfangen kann und dann in Befehle umwandeln für die LEDs. Hast du bisher schon ein Programm genutzt für die LED Steuerung?

Grüße, Florian

tlrider99 commented 4 years ago

Danke für deine schnelle Antwort. Ich werde deine Tips mal ausprobieren. Aktuell funktioniert das Wake-Word zu 95% nicht, keine Reaktion. Wenn ich es über den Shortcut "Trigger Mic" aktiviere, klappt die Spracherkennung zu 100%. Für die LED's gab es bei Snips einen Skill (https://github.com/snipsco/snips-skill-respeaker), der funktionierte für viele Respeaker.

Grüße Dirk

sepia-assistant commented 4 years ago

95% ist definitiv nicht OK :see_no_evil: . Manche User hatten Probleme mit der Aussprache von "Hey SEPIA", deswegen der Vorschlag mal auf "Grasshopper" zu wechseln. Ich habe aber das Gefühl es liegt eher in den Settings des Mikrofons :thinking:

Für die LED's gab es bei Snips einen Skill (https://github.com/snipsco/snips-skill-respeaker), der funktionierte für viele Respeaker.

C Code ... iiii :stuck_out_tongue_closed_eyes: ... ich gucke es mir mal an ;-) Ich meine da gabs auch was für Node.js ^^.

tlrider99 commented 4 years ago

Die Mikrofone sind alle ca bei 80%, das sollte reichen um aus 50 cm Entfernung alles aufzuzeichnen. Oder? Ich trau mich irgendwie nich an das Tauschen des Wake-Words heran.

grafik

tlrider99 commented 4 years ago

Habe jetzt dein Beispiel ausprobiert mit "hey sepia" und "yellow". Yellow klappt fast zu 100%. Lag wohl doch an meiner Aussprache. Werde jetzt mal einen separaten MaryTTS aufsetzen und schauen ob die Wiedergabe dann noch schöner wird. Grüße Dirk

sepia-assistant commented 4 years ago

80% dürfte wirklich ok sein, zumal du ja schon festgestellt hast, dass es mit Yellow sehr gut klappt. Ich frage mich trotzdem manchmal wie diese ganzen Kanäle vom ReSpeaker eigentlich benutzt werden. Ich habe etwas die Befürchtung, dass der am Ende nur einen der 6 Kanäle nutzt und man eigentlich irgendwie eine Kanalbündelung selber einrichten müsste :thinking: .

Ich trau mich irgendwie nich an das Tauschen des Wake-Words heran.

Sah es zu kompliziert aus? Es ist wirklich ganz einfach eigentlich :sweat_smile: , zumindest wenn man diese Multi-Keyword Sachen erstmal ignoriert ;-)

tlrider99 commented 4 years ago

Ich habe jetzt 3 Wake-Words installiert, Version 1.5. Damit klappt es am besten. Ich habe auch das Gefühl, dass es besser klappt wenn man die Uint8Array's direkt eingibt. Kann das sein? Ich habe jetzt MaryTTS auf einem separatem Raspi3+ laufen, der Server startet auch, aber ich kann die Webseite nicht aufrufen. Was muß ich denn in Sepia dann umstellen? grafik

Smarthome-Creator commented 4 years ago

Hallo,

da bin ich ja schon in der richtigen Diskussionsrunde. Erstmal muss ich sagen das die Wake-Word Erkennung seit Version 2.5.0 um Welten besser ist als in der 2.4.1.

@tlrider99 ich hatte hier mit der älteren Version die gleichen Probleme wie du. Die Wake-Word Erkennung über die Android App funktioniert jetzt richtig gut. Vorher musste ich meine Geräte auch anbrüllen und Sepia mit einer starken Betonung auf PI - A aussprechen damit das Mic triggert. Seit Version 2.5.0 ist die Kleine nicht mehr so zickig. Ich selbst nutze einen Respeaker Core V2 und habe damit ähnliche Probleme wie du. Ich werde das mit dem ändern des Wake-Words auch mal testen.

@sepia-assistant, ist egal welches Wake-Word ich erstelle oder gibt es vordefinierte? Die Sache mit dem ansteuern der LED´s wäre dann echt noch das Sahnehäubchen für den DIY Client. Dann kann ich endlich meine dubble Helix bauen.

tlrider99 commented 4 years ago

Hi Florian, der MaryTTS-Server läuft. Kannst du vielleicht kurz beschreiben wie ich ihn an Sepia anbinden kann? @Smarthome-Creator Vielen Dank für deinen Bericht. Da fühlt man sich gleich nicht mehr so allein :-). Es gibt verschiedene vordefinierte Wake-Words.

Gruß

fquirin commented 4 years ago

Hallo zusammen :-)

Ich habe jetzt 3 Wake-Words installiert, Version 1.5. Damit klappt es am besten. Ich habe auch das Gefühl, dass es besser klappt wenn man die Uint8Array's direkt eingibt. Kann das sein?

Ob Uint8Array oder file macht keinen Unterschied. Aus der Datei wird auch nur das Array erzeugt ;-)

Ich habe jetzt MaryTTS auf einem separatem Raspi3+ laufen, der Server startet auch, aber ich kann die Webseite nicht aufrufen. Was muß ich denn in Sepia dann umstellen?

In den "Core Settings" (SEPIA Control HUB -> Persitent Settings) gibt es das Feld marytts_server, dort kannst du die URL zum MaryTTS Server eingeben, z.B. http://192.168.0.10:59125 (IP anpassen). Danach bitte einmal einen kompletten SEPIA Server Neustart via Konsole machen (soft-restart über den HUB reicht leider nicht). Beim Start müsste er dann schon sagen "MaryTTS Server gefunden" (o.ä.)

ist egal welches Wake-Word ich erstelle oder gibt es vordefinierte?

Wie tlrider99 schon erwähnt hat gibt es vordefinierte. Hier kannst du dich z.B. durchklicken. Das WW ergibt sich dabei aus dem Dateinamen, bumblebee_wasm.ppn ist z.B. "Bumblebee", das "_wasm.pnn" lässt man also einfach weg. Ich habe alles was Picovoice frei zur Verfügung stellt gesammelt und nach unterstützter Version sortiert. Leider kann man zur Zeit keine eigenen erstellen ohne die Hilfe von Picovoice.

tlrider99 commented 4 years ago

Wollte den Server gerade eintragen, aber bei mir gibt es nur diese Einträge zu TTS: grafik Hast du noch ne Idee? Dankeschön!

fquirin commented 4 years ago

Bei mir ist der Eintrag über smarthome_hub_host. Es kann sein, dass der Eintrag nicht existiert, weil die Settings aus v2.4.1 importiert wurden. Das heißt er nimmt intern den Standardwert. Du kannst ihn aber einfach hinzufügen mit dem "write to config" Button weiter unten. So würde der Standard aussehen: image

tlrider99 commented 4 years ago

Jetzt steht der Server drin und beim Neustart versucht Sepia auch den MaryTTS-Server zu erreichen bekommt aber keine Antwort. Hätte ich in meinem Leben doch bloß etwas vernünftiges gelernt ;-).

image image

backup_2020_06_21_220312.out.log

fquirin commented 4 years ago

Ich glaube wir hatten das Problem schon mal. Wenn ich mich recht erinnere lag es daran, dass der MaryTTS Server in der Standardkonfiguration nur 'localhost' Verbindungen zulässt. Sekunde ... ... jo, ich war schlau genug es irgendwo zu notieren :sweat_smile: : MaryTTS Readme.

Bei dir konkret müsste das dann so gehen (hoffentlich ^^):

export MARYTTS_SERVER_OPTS="-Dsocket.addr=0.0.0.0 -Dsocket.port=59125"
bash ./marytts-server

Ich weiß jetzt gerade nicht ob vor das "export" auch ein "sudo" muss wenn du später mit sudo bash ... den MaryTTS Server startest.

Ich hoffe das löst das Problem :crossed_fingers: :smiley: :crossed_fingers:

Smarthome-Creator commented 4 years ago

@tlrider99 ,

also wie gesagt, die Spracherkennung über die App ist nun wirklich gut. Ich habe hier Test von bis zu 4 Metern Entfernung vom Handy oder Tablet gemacht und ich konnte ohne Geschrei Sepia zum zuhören bringen. Was den reSpeaker angeht muss ich dir aber recht geben. Ich habe ihn heute auch nochmal getestet ohne etwas daran zu verändern und die Erkennung läuft mehr als schlecht. Was genau heißt denn jetzt nachdem du die Wake-Word Erkennung umgestellt hast das es jetzt gut läuft? BTW, kannst du kurz eine kleine Anleitung schreiben wie du Mary auf dem extra Pi installiert hast? Ich will mir für STT und TTS nun den 4er mit 8GB RAM holen und hoffe der reicht dann. Woher weißt du denn außerdem welche unit8Array Zahlendinger du da angeben musst? Ich sag´s wie´s ist... ab da ist´s chinesisch für mich. Ich würde deinem Beispiel gerne mal folgen wollen um zu testen ob mein reSpeaker dann auch besser auf mich hört.

@fquirin ,

die Wake Wörter habe ich gefunden und musste kurz in mich gehen... wer denkt sich denn solche Wörter aus? :-D Da werde ich wohl nie meinen eigenen an Sepia vergeben können. Aber kommt Zeit kommt Rat.

tlrider99 commented 4 years ago

Guten Morgen Florian,

leider ändert sich nichts. Im Sepia-Log steht "MaryTTS server did not answer...." Muß in der Kommandozeile statt der 0.0.0.0 die IP-Adresse des MaryTTS-Servers stehen?

@Smarthome-Creator In Post 2 gibt es einen Link zu Wake-Word-Info. Dort findest du ein Beispiel. Zum installieren von MaryTTS habe ich lediglich das Skript vom Sepia-Server auf den neuen Raspi gepackt und ausgeführt, zuvor Java 8 installiert. Bei Java 11 gab es Fehler.

Grüße und einen guten Start in die Woche Dirk

fquirin commented 4 years ago

Woher weißt du denn außerdem welche unit8Array Zahlendinger du da angeben musst?

Vergiss die Arrays (erstmal) ;-) Hier ist noch mal der link mit dem relevanten Teil: Switching the Wake-Word

leider ändert sich nichts. Im Sepia-Log steht "MaryTTS server did not answer...." Muß in der Kommandozeile statt der 0.0.0.0 die IP-Adresse des MaryTTS-Servers stehen?

0.0.0.0 müsste eigentlich "offen für alles" bedeuten. Kannst du den Server von einem anderen PC erreichen? Z.B. via http://192.168.10.109:59125/version

zuvor Java 8 installiert. Bei Java 11 gab es Fehler

Oh, interessant. War das auch openJDK11_JDK? Bei meinen Tests auf dem Pi4 lief das auch mit 11 :-|

Ich habe hier Test von bis zu 4 Metern Entfernung vom Handy oder Tablet gemacht und ich konnte ohne Geschrei Sepia zum zuhören bringen

Kurze Frage aus Interesse, was ist das für ein Tablet? :-)

tlrider99 commented 4 years ago

http://192.168.10.109:59125/version nein leider nicht. Das hat mich auch schon gewundert. Ich kann den MaryTTS client nur lokal ausführen. Da hat die Sprachausgabe mich aber begeistert :-). image

OpenJDK 11 war es installiert mit "sudo apt install default-jdk", vielleicht gibt es da ja Unterschiede.

fquirin commented 4 years ago

Kannst du den Server auch ohne "sudo" starten? Falls nicht versuch mal "sudo export ...".

OpenJDK 11 war installiert mit "sudo apt install default-jdk", vielleicht gibt es da ja Unterschiede.

Ok, das muss ich dann mal testen. Raspian bzw Raspberry OS?

tlrider99 commented 4 years ago

Das "sudo" zum Serverstart war es, jetzt ist der MAryTTS-Server von aussen erreichbar.

Die Fehler bei Java11 waren auch eher Warnings, du kannst die oben in einem Screenshot sehen. Vielen Dank für deine Hilfe!

fquirin commented 4 years ago

:partying_face:

Die Fehler bei Java11 waren auch eher Warnings, du kannst die oben in einem Screenshot sehen.

Ach ja, jetzt sehe ichs, ich glaub die kann man ignorieren :see_no_evil:

tlrider99 commented 4 years ago

Sepia kann MaryTTS trotzdem nicht erreichen. Muß ich denn eine Voice installieren oder gibt es per default eine?

backup_2020_06_22_074122.out.log

fquirin commented 4 years ago

:disappointed_relieved: Stimmen für Deutsch und Englisch sind alle drin, es ist also kein weiteres Setup nötig. Kannst du in den SEPIA Settings noch mal gucken, ob der neue Server korrekt angezeigt wird. Du kannst übrigens auch die ~/SEPIA/sepia-assist-server/Xtensions/assist.custom.properties per Hand bearbeiten. Wenn du eh auf dem Server bist geht das vielleicht schneller.

[EDIT] Mir fällt gerade was ein, Sekunde. Ich glaube das SEPIA Start-Skript hat den localhost von Mary-TTS hard-coded [EDIT2] Wobei ne, da prüft er nur ob er den Server selber starten muss. Die eigentliche Abfrage später ist korrekt.

tlrider99 commented 4 years ago

Sieht eigentlich gut aus, finde ich:-) hier ein Auszug aus der custom.properties:

legacy setting: openhab_host=

smarthome_hub_host=http://192.168.10.xxxx smarthome_hub_name=openhab

smarthome_hub_host=http://localhost:8083/myTest

smarthome_hub_name=test

smarthome_hub_auth_type= smarthome_hub_auth_data= dirble_key= acapela_vaas_app= acapela_vaas_key= affilinet_pubID= affilinet_key= deutscheBahnOpenApi_key= marytts_server=http://192.168.10.109:59125

fquirin commented 4 years ago

Ja, sieht gut aus :thinking: Probier mal bitte diese modifizierte Assist-Server jar. Einfach in den Ordner ~/SEPIA/sepia-assist-server/ entpacken und den Server neu starten. Dann sollte er im Log anzeigen welchen Server er versucht hat aufzurufen.

tlrider99 commented 4 years ago

Mit der jar hat es sofort geklappt. Hast du noch etwas geändert? In welchem Format trage ich den die TTS-Stimme im DIY Client in die settings.js? backup_2020_06_22_090858.out.log

fquirin commented 4 years ago

Ah komisch 😅, die einzige andere Änderung betraf nur einen Bug im openHAB Interface 🤓👽.

In die settings.js kommt der Name der Stimme genau so wie er im Client Dropdown Menü angezeigt wird. Falls du keinen zur Hand hast gerade kannst du auch im Control HUB auf der TTS Seite gucken. Aus dem Kopf würde ich sagen "de-voice":"de-DE marytts m". Statt "m" am Ende geht auch noch "f" und "r".

tlrider99 commented 4 years ago

EDIT: Es lag am Marytts-Server der war down.

mhhh, so habe ich es jetzt drin stehen aber es kommt keine Stimme aus dem Lautsprecher.....

Broadcaster event: {"broadcast":{"client":"05_chrome_app_v0.22.0","deviceId":"05","sepia-speech":{"type":"tts_error","msg":"unknown"}}}

//Settings primarily for headless mode and setup (URL parameter: 'isHeadless=true') SepiaFW.settings = { headless: { device: { "host-name": "192.168.10.35", "deviceId": "05", "deviceLocalSiteData": { "location": "home", "type": "room", "name": "unassigned", "index": "" }, "en-voice": "", "de-voice": "de-DE marytts m", "wakeWordSensitivity": [0.5] },

    },
tlrider99 commented 4 years ago

Noch eine Frage, sorry. Wenn ich die SSH Verbindung zum MaryTTS-Server beende ist direkt auch der Server down. Da verstehe ich nicht warum...... Eigentlich müßte doch MaryTTS weiterlaufen, oder?

fquirin commented 4 years ago

Hi, ich denke ich muss die Situation heute Abend mal versuchen zu reproduzieren. Die Settings sehen soweit ok aus.

Bezüglich SSH. Wenn der Prozess nicht im Hintergrund läuft (zB via nohup) bricht er ab wenn du die Verbindung trennst. Eventuell gab es da noch eine Eigenheit beim Mary TTS Sever. In dem run-sepia script nutze ich bash marytts-server > /dev/null 2>&1 &

Smarthome-Creator commented 4 years ago

@fquirin , ich habe hier mein Nvidia Shield Tablet zum testen verwendet, muss aber auch sagen das ein iPad hier noch etwas besser ist. Ich weiß leider trotzdem nicht wie ich ohne copy & paste aus deiner Anleitung mehr als 1 Wake Word einstellen kann. :-(

@tlrider99 , ich habe es jetzt auch mal versucht am respeaker etwas mit den Wake Words zu spielen und kann mich dir anschließen mit den Words aus Version 1.5 funktioniert es etwas besser aber immer noch viel zu schlecht als das ich sagen könnte das wäre akzebtabel. Daher nochmal die Frage welche Wörter hast du denn eingestellt. Ich habe nach wie vor festgestellt das man schon sehr extrem auf die Aussprache achten muss bevor das Mic triggert. Und ich weigere mich irgendwie in meiner Wohnung "Alexa" durch den Raum zu brüllen. Und da frage ich mich doch schon wieder... wie werden denn diese Wörter recorded? Eine so extrem deutliche und klare Aussprache hat doch kein Mensch, wenn ich selbst schon bei Alexa eine sehr deutliche Betonung auf das X legen muss. Nächstes Problem ist das ich auch sehr na vor dem respeaker hocken muss damit ich überhaupt gehört werde, das kann natürlich nicht Sinn und Zweck eines Fernfeld Mikrofons sein.

Ich bin mir aber auch mittlerweile sicher dass das Problem hier nicht Sepia, sondern die respeaker selbst sind. Laut der Dokumentaion über den V2 nutzt das Ding eine Handvoll toller Mechanismen, die aber alle erst aktiviert und genutzt werden sobald Alexa oder Google darauf genutzt werden.

Ich werde das mal mit Google testen damit ich ausschließen kann das Sepia "schuld" ist.

tlrider99 commented 4 years ago

@Smarthome-Creator hier der Inhalt meiner Datei: SepiaFW.wakeTriggers.porcupineVersion = "1.5"; SepiaFW.wakeTriggers.porcupineWakeWords = { 'alexa': new Uint8Array([ 0x64, 0x29, 0x02, 0xc1, 0x6f, 0x5b, 0xfa, 0x66, 0xc9, 0x17, 0x97, 0xe3, 0x7d, 0x45, 0x50, 0x7d, 0xf5, 0x5c, 0xfd, 0x17, 0x7e, 0xb7, 0xd2, 0x31, 0x6f, 0x46, 0x05, 0x51, 0x64, 0x6a, 0xfa, 0x35, 0x0b, 0x1e, 0x9a, 0xda, 0x43, 0x1c, 0x16, 0x93, 0x8a, 0x39, 0xcd, 0xf9, 0x2f, 0x88, 0x10, 0x29, 0xe0, 0x3c, 0x3b, 0x9a, 0xce, 0xbb, 0xc8, 0x8b, 0x6b, 0x6a, 0xef, 0x46, 0x21, 0x74, 0x1d, 0xa6, 0x2d, 0x27, 0x11, 0x1c, 0xec, 0xd5, 0x3a, 0xc5, 0x2c, 0x7a, 0x8a, 0xb5, 0xc9, 0xc1, 0x5c, 0x6c ]), 'francesca': new Uint8Array([ 0x1d, 0xaa, 0x4e, 0x09, 0xa1, 0x59, 0xed, 0xc5, 0x06, 0xc0, 0x88, 0x32, 0x4e, 0x76, 0x0a, 0xe5, 0x99, 0xca, 0x77, 0x83, 0x1c, 0xf0, 0xca, 0x18, 0xb7, 0xc8, 0x7e, 0x64, 0x6d, 0x23, 0x44, 0xfc, 0x12, 0xdd, 0xc1, 0x03, 0x21, 0x9c, 0x13, 0x6b, 0x8d, 0xf5, 0x9a, 0xfc, 0xb7, 0x0c, 0x07, 0xaa, 0xf8, 0x5a, 0x84, 0x62, 0x22, 0xba, 0xf4, 0xf6, 0x4a, 0x95, 0x68, 0xf6, 0xf9, 0x42, 0x5b, 0xa5, 0x0a, 0xbd, 0x4b, 0x82, 0xce, 0x9d, 0x71, 0x32, 0x9c, 0x96, 0x6b, 0xd8, 0x95, 0xff, 0x16, 0x6b, 0xfa, 0xfa, 0xd7, 0x6c, 0x9c, 0x20, 0x15, 0xcb, 0x17, 0x54, 0x7e, 0x13, 0xc9, 0x2b, 0x37, 0x72 ]), 'christina': new Uint8Array([ 0x3a, 0xcf, 0x5f, 0x5e, 0xf4, 0x96, 0x22, 0x62, 0x67, 0xc2, 0xbe, 0x20, 0xfe, 0x8d, 0x0f, 0x4e, 0x32, 0x55, 0x2f, 0xc8, 0x0d, 0x48, 0x84, 0xa5, 0x59, 0x26, 0xed, 0x2d, 0x86, 0xd6, 0x67, 0x47, 0x7a, 0xa1, 0x02, 0x14, 0x8f, 0xd9, 0x4f, 0xd1, 0x1f, 0x85, 0x99, 0xcd, 0x00, 0xaf, 0x0c, 0xf2, 0xbb, 0x4d, 0x6d, 0x03, 0x32, 0x96, 0x9c, 0x14, 0x47, 0xcc, 0x1f, 0xcb, 0x27, 0x60, 0xb8, 0xd4, 0xd2, 0x29, 0xea, 0x8a, 0xe4, 0xab, 0x84, 0xc7, 0x1f, 0x59, 0x5f, 0xfb, 0x96, 0xd2, 0xb5, 0xe5, 0x4e, 0x6a, 0x01, 0x61, 0xe2, 0x96, 0x6f, 0x3f, 0xb0, 0x07, 0x73, 0xd2 ]) };

Du kannst den Inhalt jedes wake-words per copy/paste einfügen, must nur aufpassen, dass du in den Versionen bleibst. So sieht Bumblebee aus: 0x0a, 0x08, 0xb8, 0x86, 0x43, 0x36, 0x86, 0x44, 0x95, 0x3f, 0x82, 0x61, 0xe1, 0x06, 0xea, 0x3e, 0xf8, 0xca, 0x17, 0xe0, 0x9e, 0x34, 0xa7, 0x6d, 0x6f, 0x7f, 0x31, 0x1d, 0x70, 0x7a, 0x59, 0x43, 0xe0, 0xe7, 0xa0, 0xce, 0x31, 0xe5, 0x13, 0x3b, 0x89, 0xd2, 0x38, 0xc4, 0x96, 0xd0, 0x52, 0xde, 0x6b, 0xe1, 0x44, 0x52, 0x81, 0x9e, 0x66, 0xd9, 0xf5, 0xe1, 0xd6, 0xef, 0xa0, 0xd4, 0xf5, 0x17, 0xbe, 0xca, 0x02, 0x87, 0xa1, 0xc8, 0x89, 0x4c, 0x30, 0x3c, 0x6e, 0x34, 0x63, 0x6d, 0x3b, 0x13, 0x1c, 0x88, 0x9c, 0x7c, 0xc8, 0xf2, 0xc5, 0x1a, 0xaf, 0xec, 0x95, 0x95

Ich hoffe jetzt ist es klarer :-).

Grüße Dirk

Smarthome-Creator commented 4 years ago

@tlrider99 , in die Wake Word Dateien reinzugucken muss man auch erstmal drauf kommen. :-D

Danke

fquirin commented 4 years ago

mhhh, so habe ich es jetzt drin stehen aber es kommt keine Stimme aus dem Lautsprecher.....

@tlrider99

Also ich habe es jetzt bei mir folgendermaßen getestet:

Das hat funktioniert. Hast du generell Audio Output im Client, z.B. beim Radio? Vielleicht auch mal bei "en-voice" was eintragen nur um sicher zu gehen, z.B. "en-GB marytts f".

Gute Nacht :-) Florian

tlrider99 commented 4 years ago

Hallo Florian, sorry war geschäftlich unterwegs. Hatte am Montag noch geschrieben, dass der MaryTTS-Server down war und deshalb keine Verbindung zustande kam. Aktuell habe ich nur noch das Problem, das die Sprachausgabe ca. 2sek länger brauch und sobald ich die SSH Verbindung schließe, der MaryTTS sofort weg ist, auch wenn ich das ganze als Dienst laufen lasse bash marytts-server > /dev/null 2>&1 &. Ich glaube das macht die Zeile aus deinem Script. Oder? Kann ich eigentlich Parameter der Stimmen auch mit übergeben, so wie im MaryTTS-Client? Der Mood-Level der Stimme ändert sich nicht wenn ich ihn im Control-Hub ändere. image

Grüße und danke für deine Arbeit Dirk

fquirin commented 4 years ago

Hatte am Montag noch geschrieben, dass der MaryTTS-Server down war und deshalb keine Verbindung zustande kam.

Ach, das bezog sich schon auf den Audio Output? Ich dachte das gehörte noch zur generellen Erreichbarkeit. Also auf der Seite sind dann alle Problemchen gelöst, das ist schon mal gut :-)

Aktuell habe ich nur noch das Problem, das die Sprachausgabe ca. 2sek länger brauch und sobald ich die SSH Verbindung schließe, der MaryTTS sofort weg ist, auch wenn ich das ganze als Dienst laufen lasse bash marytts-server > /dev/null 2>&1 &. Ich glaube das macht die Zeile aus deinem Script. Oder?

Nicht direkt als Dienst sondern eigentlich nur im Hintergrund, sprich es startet nicht automatisch neu bei Problemen o.ä.. Versuch mal nohup bash marytts-server > /dev/null 2>&1 & (hoffe der Syntax stimmt)
Ich dachte wegen dem "&" wäre es nicht nötig aber so 100% habe ich das auch nie verstanden. Der SEPIA Server läuft auch ohne "nohup" durch aber der Befehl bewirkt, dass sich Prozesse nicht aufhängen beim Beenden der Session (nohup = no hangup).

Grüße, Florian

tlrider99 commented 4 years ago

nohup bash marytts-server > /dev/null 2>&1 & damit läuft es jetzt auch ohne SSH.

Gibt es eine Möglichkeit Parameter für die Stimmen im ~/clexi/www/sepia/settings.js mitzugeben, in der Art wie im MaryTTS-Client?

fquirin commented 4 years ago

nohup bash marytts-server > /dev/null 2>&1 & damit läuft es jetzt auch ohne SSH.

:+1:

Gibt es eine Möglichkeit Parameter für die Stimmen im ~/clexi/www/sepia/settings.js mitzugeben, in der Art wie im MaryTTS-Client?

Du meinst sowas wie "Rate", "Volume", "Whisper" etc.? Nein das geht nicht. Die integrierten Stimmen sind soweit optimiert wie ich es hinbekommen habe. Die meisten Parameter von Mary-TTS erzeugen leider auch nur Artefakte, z.B. bei "Volume" gibts regelmäßige Störgeräusche bei höheren Werten. Wenn du eine spezifische Filter/Parameter Konfiguration findest, die gut funktioniert, könnte man diese als neue "voice" Option einbauen im Server. Zur Zeit wäre dazu ein pull request für den Sourcecode nötig. Neu installierte Stimmen vom Mary-TTS Server müssten aber automatisch erkannt und mit Standardeinstellung durchgereicht werden.

Aktuell habe ich nur noch das Problem, das die Sprachausgabe ca. 2sek länger brauch

Dazu wollte ich noch sage, dass es leider bei Mary-TTS manchmal etwas länger dauert. Zusätzlich zur Mary-TTS eigenen Verarbeitungszeit kommt noch die Übertragung übers Netzwerk. Mary-TTS Audio ist tendenziell 50% größer als bei anderen Engines :-/

tlrider99 commented 4 years ago

Hallo Florian, nur eine kurze Frage. Der Client ist jetzt nicht mehr per LAN sondern mit WLAN mit dem Netzwerk verbunden. Leider bekommt er jetzt keine Verbindung zum Sepia Server mehr. Muß ich an der Konfiguration Client/Server etwas ändern? Danke!

Grüße Dirk

fquirin commented 4 years ago

Hi Dirk,

es gibt keine Einstellungen die explizit vom Netzwerkadapter abhängen. Kannst du aus dem Client System raus denn den Server anpingen, sprich sehen die beiden Rechner sich überhaupt? Die IP des Client ändert sich vermutlich wenn du den Adapter änderst, aber auf die Verbindung vom Client zum Server hat das eigentlich keine Auswirkungen.

tlrider99 commented 4 years ago

Netzwerk funktioniert, ich kann mich mit SSH auf client verbinden. Die IP hat sich geändert, aber ja das sollte egal sein. Server und Client sind erreichbar. Beide habe ich auch neugestartet.

Unter Client Connections kommt immer der Clexi error CLEXI error CLEXI connecting ... CLEXI reconnecting after unexpected close. Try: 5 CLEXI closed. Reason: 1006

fquirin commented 4 years ago

Hmmm, das heißt eigentlich, dass er gar nicht erst auf den CLEXI Server drauf kommt. IP und Port sind korrekt? Der CLEXI Server wird nach Außen hin freigegeben über den Nginx Proxy. Die Config dafür ist /etc/nginx/sites-enabled/sepia-client-nginx.conf. Da steht aber auch überall nur localhost drin. Mir fällt gerade was komisches auf. Du hattest irgendwie Port 8080 benutzt für den Zugriff aus dem Control Hub (Client Connections) oder? (Oder werfe ich da jetzt was durcheinander? ^^) Der Proxy läuft aber auf http://[SEPIA-Client-IP]:9090/clexi :thinking: Über welche URL rufst du den Control HUB auf?

[EDIT] Port 8080 war doch jemand anderes ^^, aber vielleicht ist die Info ja trotzdem relevant.

tlrider99 commented 4 years ago

Ich rufe das Control Hub über die URL auf http://192.168.10.35:20721/app/index.html?lang=de. Das ist die vom Sepia-Server. Sobald ich das LAN-Kabel anstecke, funktionierte es ja auch, jetzt leider auch nicht mehr. Werde den Client morgen nochmal aufsetzen.

Guts Nächtle Dirk

rubipopubi commented 4 years ago

Heyho. Sagt mal... wie sieht das eigentlich aus, wenn ich mehrere Rpi-Clients gleichzeitig laufen lassen will. Hat das schon mal jemand hinbekommen bzw. gibt es irgendwelche Hindernisse dafür?

fquirin commented 4 years ago

Hi @rubipopubi Das System ist genau dafür ausgelegt (1 Server, beliebig viele Clients). Hattest du bisher Probleme damit?

rubipopubi commented 4 years ago

Hey, mit zwei Pi3 klappt es problemlos bislang, wollte einfach mal nachfragen, ob irgendwas beachtet werden muss bzgl. Clexi oder ähnlichem.

PlanetSmasher commented 3 years ago

Hallo in die Runde,

ich habe auch erstmalig meinen DIY Client (Raspberrypi2, Respeaker 2-Mic-HAT) erfolgreich eingerichtet, aber bislang alles nur mit Kabel.

Sobald ich wie tlrider99 das per Wi-Fi versuche, kommt im ControlHUB (in der Hauptinstanz, dedizierte VM mit Debian) immer die Meldung: "CLEXI connection failed! Server not reached."

Ich habe sowohl die neue IP als auch den DNS Namen probiert jeweils auf Port 9090

Client und Server sehen sich, ping sowie SSH in beide Richtungen geht ohne probleme durch.

Ich habe die Vermutung, das sich der nodejs server irgendwelche Dinge im Cache hält, denn auch ein neustart aller beteiligten Geräte bringt keine Besserung.

Auch mit angeschlossenem Kabel mag die DNS Auflösung auf: ws://raspberrypi2.fritz.box:9090/clexi nicht klappen.

fquirin commented 3 years ago

Hi @PlanetSmasher , ich fürchte an der Stelle habe ich keine klare Lösung parat, da es irgendwas mit dem Netzwerk zu tun hat. CLEXI merkt sich auf jeden Fall nichts (bewusst) und ich habe schon duzende von RPis mit und ohne Wifi betrieben während das Kabel dran war. Vielleicht bringt es etwas den unbenutzten Adapter zu deaktivieren.

Das Netzwerk kann aber durchaus komische Phänomene erzeugen bei der DNS Auflösung. Ich hatte bei mir mal den Fall, dass ich meine Geräte immer aus dem Wifi über die externe Domain erreichen konnte und dann im Supermarkt plötzlich gemerkt habe dass der Dynamic-DNS Server schon ewig kein IP Update gemacht hatte. Mein Wifi hat das aber überhaupt nicht interessiert weil die direkte Durchleitung scheinbar gecached war vom Router.

Hoffe du hast mittlerweile eine Lösung gefunden!