gras64 / wake-word-skill

Just train a new wakeword
Apache License 2.0
9 stars 6 forks source link

Module Fitipy not found #2

Open emphasize opened 4 years ago

emphasize commented 4 years ago

triggering train.py after the spoken wake words/non wake words i got these skills.log output. I don't know the importance of this module, but it seems to shut down the process (though i don't have an indication on how long this process would take). (EDIT: Yeah, he goes black with the output "Removing event wake-word-skill.gras64: PreciseCalc")

Did this two times in a row and it seems the wake word i was recording the first time was still known the second time, despite not having a file in the commonly known places. Where are they stored?

emphasize commented 4 years ago

The problem is a bit odd since being in the virtual environment and pip3 installing fitipy it says that the requirements are already met in the site packages of py3.6

gras64 commented 4 years ago

the structure has changed a lot I have to change the installation process. nothing works for me with my new system either. what hardware do you use. I tried to work through the old installation process step by step. I have to take the time to rework everything again. for your problem use mycroft-pip install fitipy

emphasize commented 4 years ago

That's a bummer. I'm running mycroft on a pi4b2gb with the new Seeed Respeaker processing the sound in the "KDE plasma bigscreen os" environment.

During the installation process I realized many "not found ..." notifications pop up, but lend them not too much attention.


Ich wollte dir eigentlich heute schon im Forum Hilfe anbieten, da das Projekt doch ziemlich aufwändig ist (und wichtig, gerade für nicht englisch sprechende Nutzer; eigentlich müßte da aus Eigeninteresse sogar mycrofts' Macher selbst einspringen) Allerdings bin ich persönlich kein Programmierer, was mich aber eigentlich noch nie abgehalten hat. Also falls ich etwas deiner Meinung nach übernehmen kann...

gras64 commented 4 years ago

Ich bin eigentlich auch nur ein Fernshtechniker mit Hobby. Es gibt auch noch einen mycroft eigenen wakeword skill der hat aber weiger Funktionen. Die Vielzahl an Platformen macht es schwer so etwas aufwendiges auf jeder Hardware zum laufen zu bekommen. Da ich mich jedesmal tagelang einarbeiten muss um mein eigenne skill zu verstehen muss ich zuerst mein anderen skill (calculator) soweit fertig machen bevor ich mich wieder um diesen skill kümmere. Selbst nach der 3 Revision ist der skill immer noch nicht reif für den Marktplatz.

emphasize commented 4 years ago

Zum Lösungsvorschlag mycroft-pip:

Wie ich schon erwähnt hab, ist das package fitipy schon in der .venv/.../.. drin

Nach durchsicht des codes bin ich jetzt aber noch mehr irritiert, da du gar nichts aus fitipy importierst und auch keine class aus fitipy nutzt . Übersehe ich da etwas?

Für was hast du es genutzt? Und durch was wurde es ersetzt?

EDIT: OK, anscheinend braucht es mycroft-precise Ich würde es allerdings aus der yml rausschmeißen

gras64 commented 4 years ago

ist richtig das brauche ich aber für die installation da diese unter /mycroft-core/.venv/ gestarted wird und erst dann wird /.mycroft/skills/WakeWord/presice/.venv für die eigentlichen installation angelegt.

emphasize commented 4 years ago

Ich geh jetzt grad mal die dev_setup.sh Routine durch. Das kommt mir alles recht Spanisch vor.

emphasize commented 4 years ago

Das Problem besteht weiterhin, ebenso mit core 20.2.4. Allerdings konnte ich jetzt genaueres herausfinden.

Der Zeitpunkt, an dem er aushängt ist der Aufruf der train.py von mycrofts precise (~/.mycroft/skills/WakeWord/precise/precise/scripts) Hier wird from fitipy import Fitipy importiert. Aus irgendeinem unerfindlichen Grund findet er das package nicht.

Kannst du da irgendeinen Sinn daraus stricken?

EDIT: Wenn ich über den Terminal in mycrofts venv reinspringe, dort die python3 konsole öffne läßt er mich fitipy importieren.

emphasize commented 4 years ago

Ich hau hier auch mal das Ende des skills.log rein:

2020-07-12 19:58:34.049 | INFO | 599 | WakeWord | move file: /tmp/mycroft_wakeword/samira/not-wake-word/de-short/notsamira-de-33162c0c-c469-11ea-8439-dca632523fa6.wav 2020-07-12 19:58:34.050 | INFO | 599 | WakeWord | move file: /tmp/mycroft_wakeword/samira/not-wake-word/de-short/notsamira-de-4131ae10-c469-11ea-8439-dca632523fa6.wav 2020-07-12 19:58:34.050 | INFO | 599 | WakeWord | move file: /tmp/mycroft_wakeword/samira/not-wake-word/de-short/notsamira-de-2ba1d00c-c469-11ea-8439-dca632523fa6.wav 2020-07-12 19:58:34.050 | INFO | 599 | WakeWord | calculating 2020-07-12 19:58:34.083 | INFO | 599 | WakeWord | precise file samira not found Traceback (most recent call last): File "/home/mycroft/.mycroft/skills/WakeWord/precise/precise/scripts/train.py", line 57, in <module> from fitipy import Fitipy ModuleNotFoundError: No module named 'fitipy' 2020-07-12 19:58:37.426 | INFO | 599 | WakeWord | precise: check for end calculation Removing event wake-word-skill.gras64:PreciseCalc

gras64 commented 4 years ago

das modul müsste zusätzlich auch unter ~/.mycroft/skills/WakeWord/precise/.venv installiert sein "source ~/.mycroft/skills/WakeWord/precise/.venv/activate" danach "pip install fitipy" unter precise venv kannst du dann auch alle befehle testen. ich habe mich an die anleitung unter mycroft-precise gehalten

emphasize commented 4 years ago

und erst dann wird /.mycroft/skills/WakeWord/presice/.venv für die eigentlichen installation angelegt.

das ist mir eben wie schuppen von den Augen gefallen, das du eine zweite venv aufmachst, die keine site-packages enthält. (Es wird deshalb nicht bei pip install fitipy bleiben, da fehlt so einiges) Warum symlinkst du das (dein) verzeichnis nicht auf ~/mycroft-core/.venv/lib/python3.6/site-packages nach der installation? Geht das nicht?

gras64 commented 4 years ago

ich möchte nicht in den core eingreifen und verschiede Paketversionen vermischen. Wie gesagt ich muss eine zuverlässigere installationsweise finden

gras64 commented 4 years ago

wenn die installation durchläuft wurden immer alle pakete installiert warum das bei dir nicht funktioniert hat weiß ich nicht. früher hat meine installation unter ubuntu und picroft gut funktioniert. dafür gibts die setup.py

gras64 commented 4 years ago

wenn du den Ordner WakeWord/Precise löschst, beginnt die installation neu

emphasize commented 4 years ago

dann laufe ich wahrscheinlich in ähnliche Probleme. Ich probiers wenn alles nicht klappt.

setup.sh vermisst tensorflow1.13 (wenn ich das richtig intepretiere), deswegen bricht er ab

gras64 commented 4 years ago

du must bei raspberry enclore picroft angeben

emphasize commented 4 years ago

Du meinst Enclosure? "KDE" wird dafür schon standardmäßig erkannt (Ist ja ein "offizieller" Partner was das gui-development betrifft). Ist das ein Fehler Mycrofts? Dann mach ich da ein issue auf.

gras64 commented 4 years ago

naja nicht ganz ich hab da für raspberry /precise/.venv/bin/python -m pip install tensorflow==1.10.1 eingerichtet. raspberry braucht das irgendwie kp. ich hab da einfach problem gefixt aber für KDE habe ich einfach keine änderung eingetragen

emphasize commented 4 years ago

kann sein, das wir das Problem einkreisen. Ich bekomme die Ausgabe, wenn ich unter ~/.mycroft/skills/WakeWord/precise setup.sh bashe ERROR: Could not find a version that satisfies the requirement tensorflow<1.14,>=1.13 (from mycroft-precise==0.30) (from versions: none) No matching distribution found for tensorflow<1.14,>=1.13 (from mycroft-precise==0.30) Er sucht also nach 1.13.x

gras64 commented 4 years ago

ja aber für raspberry brauchts du 1.10.1 bei mir ging die installation durch und ich habe dann später 1.10.1 installert

emphasize commented 4 years ago

Kann wohl sein, das die Version von Python (3.7) ein Faktor ist, warum ich nicht Tensorflow1.13.2 installiert bekomme. Bin aus Zufall über ein post im "Offiziellen" gestoßen

https://community.mycroft.ai/t/first-attempt-at-precise-wakeword/7357/4

Auch wenns im Post generell nicht darum geht, kann man herauslesen, das er Tensorflow 1.13.2 hat und Python 3.7 nutzt. Hab mal nachgefragt.

emphasize commented 4 years ago

Vielleicht kannst du mir die Frage beantworten:

Bevor dein skill installiert wird, also in der ursprünglichen mycroft-core version, wie bzw. wo prozessiert da precise seine Operationen? Ist der komplette Prozess serversided (Mycrofts Server)? Die Sache ist nämlich die, das es in der Ursprungsversion gar kein tensorflow auf meinem Client befindet (nicht benötigt wird).

Wenn ich das richtig verstehe zieht dein Skill die Prozessierung auf den Client. Ist das korrekt?

gras64 commented 4 years ago

ich lasse den input paralell zur aufnahme durch mycroft STT validieren um falsche wakewords rauszufiltern. Was aber tensorflow angeht das wird im skill Ordner komplett unter .venv eingerichtet und hierbei tensorflow da angelegt wird und nicht im mycroft system. Pricise wird komplet auf dem Cient ausgeführt deshalb stehen auch einige warnungen im Readme ich habe keinen Server der diese dinge übernimmt. ich habe aber wenn es dich interresiert eine Upladefunktion an die comunity eingerichtet.

emphasize commented 4 years ago

War ein Mißverständnis und zusätzlich hab ich mich mißverständlich ausgedrückt. 🥇

Ich dachte, das sich der Verarbeitungsprozess mycrofts precise-engine von deiner herangehensweise unterscheidet. Aber beide male werde ich forciert tensorflow 1.13.2 herunterzuladen, die es halt mal für ubuntu/kde neon (kde neon ist vom Grundgerüst her ubuntu lts) nicht kompiliert gibt. (und keiner will mir die .configure-Einstellungen geben um es selbst zu kompilieren)

Ich bin jetzt den leichten Weg gegangen und stelle das wake word über picroft her und wechsele dann später wieder auf KDE (wegen GUI). Denn selbst die contributor von myroft-precise rätseln woher der Fehler mit TF kommt. Das Mycroft jetzt KDE noch mit ins Boot geholt hat (wegen dem "fertigen" GUI) macht die Sache nicht gerade besser.

gras64 commented 4 years ago

Du wirst aber aber auch unter picroft kein 1.3.2 finden denke ich da der raspberry eine andere architektur (arm) hat bin ich schon einige male auf probleme gestoßen wie Beispielsweise die mycroft-gui manuell zu installieren. Ich habe auch endlich GUI unter Mint 20 am zum laufen bekommen und für einige meiner Skills GUI Funktionen eingerichtet.

gras64 commented 4 years ago

Du kannst aber auch vor der installation in meinem skill enclosure auf picroft stellen und nach der installation zurück. Dann wird tensorflow 1.10.1 installiert und damit hatte ich keine Fehlermeldung allerdings habe ich auch nur tests und kein funktionierendes model erzeugt.

emphasize commented 4 years ago

ich hab grad die neueste picroft stable mit tf 1.13.1 laufen und hab schon das erste wake words model trainiert.

Auf KDE bekomme ich weder 1.10 noch 1.13 noch 2.2 (egal, was ich mycroft vorgaukle), es sei denn ich arbeite mit komplizierten docker methoden oder kompiliere selbst. Hier hindert mich aber der komplizierte Konfigurationsteil und ich gehe stark davon aus, das ich in weitere Dependenzprobleme laufe. Beispielsweise musste ich bazel (das für den tensorflow komilierprozess benötigt wird) selbst bauen. Selbst wenn ich weiss wie ich Konfigurieren muss, gehe ich stark davon aus, das witeres auf mich zu kommt. Genau deswegen denke ich, das es keine ready made Kompilation gibt. KDEs Bigscreen OS bezieht zudem resourcen von ubuntu/neon/xenon unstable - da sind Probleme schon vorprogrammiert.

Wie dem auch sei, ich gehe lieber als enduser den stabilen weg und nutze Picroft und für die großen Aufgaben (das trainieren gegen non wake words) eine Raspbian Virtual Machine.

gras64 commented 4 years ago

Villeicht kann man ja picroft inzwischen auf gui umrüsten

emphasize commented 4 years ago

Kann man (GTK toolkit; wird über den websocket gefüttert), aber das ist im alpha stadium. Es gibt ja auch schon ein rudimentäres MycroftOS von einem holländischen Entwickler. Die KDE Entscheidung (wegen QT) werte ich allerdings nicht als commitment für einen Ausbau seitens Mycroft.

emphasize commented 4 years ago

Übrigens gibt es einen PR für mycroft-precise der tensorflow 2.2 zulässt. Ich kann nichts genaueres über picroft sagen, aber auf meiner ArchLinux Virtual Machine läuft er. Allerdings muss man die setup.py editieren und tensorflow-gpu==2.2.0rc mit tensorflow-gpu==2.2.0 ersetzen.