Registered Member
|
Hallo zusammen,
Ich habe Simon v.3.75 installiert. Eingerichtet wurden das adaptierte Basismodell von Voxforge und das empfohlene HADIFIX BOMP Wörterbuch. Anschließend hatte ich deutsche Szenarien installiert. Nun wollte ich im Szenario Amarok das Kommando "Musik Pegel rauf" bzw "Musik Pegel runter" vereinfachen in "Musik lauter" und "Musik leiser". Dazu, dachte ich zumindest, müsste ich erstmal die Wörter "leiser" und "lauter" zum aktiven Wörterbuch hinzufügen. Um ein funktionierendes Kommando erzeugen zu können, müssen doch zunächst die benötigten Terminale als Satz in die Grammatik aufgenommen werden, oder? Deshalb habe ich versucht die neuen Wörter in das Terminal "Richtung" aufzunehmen. Das scheiterte. Anschließend habe ich versucht die neuen Wörter in ein neues Terminal ("Laut") aufzunehmen.Das funktioniert auch nicht. Die Fehlermeldung ist in beiden Fällen die selbe, ..."missing phones" (siehe unten [1]). Was kann oder muss ich jetzt tun um die Kommandos "Musik lauter" u. "Musik leiser" zu erstellen? Grüße Tester ... -- 1: Die Fehlermeldung
|
Moderator
|
Hallo Tester!
Bitte verwende für deutsche Posts in Zukunft gleich das deutsche Unterforum. Danke. Zu deinem Problem: Das deutsche Akustikmodell ist leider sehr, sehr limitiert in Umfang und Erkennungsrate. Es deckt schlichtweg nicht genügend Phoneme ab um in der Praxis gut zu funktionieren. Das Szenario für Amarok wurde zunächst natürlich auch für "lauter" und "leiser" entwickelt musste dann aber auf "Pegel rauf" und "Pegel runter" vereinfacht werden weil die Phoneme von "lauter" "leiser" eben nicht abgedeckt waren. Wir arbeiten aber an besseren deutschen Sprachmodellen die wir hoffen demnächst zur Verfügung stellen zu können. In der Zwischenzeit empfehle ich in solchen Fällen ein "Benutzergeneriertes" Modell zu verwenden. Hier wird gar kein Basismodell benötigt und man ist in der Wahl der Phonetik komplett frei. Lg, Peter |
Registered Member
|
Hallo Peter,
danke für die Erläuterungen. Ich habe nun versucht mit dem Benutzergenerierten Modell weiter zu machen. Zunächst habe ich alle Szenarien bis auf Standard deaktiviert. Ich habe Wörter erstellt und trainiert. Dann habe ich die Grammatik definiert. Aber dabei gab es die unten stehende Fehlermeldung. OK dachte ich, dann trainiere ich nochmal die ganzen Sätze. Das habe ich auch getan. Mit dem Abschluss des Trainings kommt dann auch jedes mal diese Fehlermeldung. Meine Wörter haben mittlerweile eine Erkennungsrate von 11 bis 81. Woher kommt diese Fehlermeldung? Liegt es am HTK? Leider, gibt es folgende Meldung : "As the server compiled the model the following error occurred: No training material available. Please train your acoustic model by recording samples." Im Detail:
|
Moderator
|
Hm, interessante Situation.
Mehr Trainingsdaten brauchst du fürs erste einmal sicher nicht. Könntest du mal folgende Files auf pastebin.com stellen? /tmp/kde-****/simond/default/compile//train.scp /home/****/.kde4/share/apps/simon/model/prompts /home/****/.kde4/share/apps/simon/scenarios/general Danke. Lg, Peter |
Registered Member
|
Hallo Peter,
den ".kde4" Ordner finde ich nur unter /usr/share/. Hier, im Verzeichnis /usr/share/.kde4/apps/simon/, gibt es im Ordner model eine Datei prompts und im Ordner szenarios eine Datei general. Beide Dateien sind leer. In meinem "home" Verzeichnis gibt es nur den ".kde" Ordner (keinen ".kde4" Ordner). Die Dateien /home/****/.kde/apps/simon/model/prompts und /home/****/.kde/apps/simon/general enthalten Daten und sind bei Pastebin gepostet. http://pastebin.com/WrwGxCqK (prompts) http://pastebin.com/P7yVgSgb (general) Die Datei /tmp/kde-****/simond/default/compile//train.scp ist leer. Ich habe nochmals einen neuen Benutzer angelegt und versucht das Standard-Szenario alsauch ein neues "Demo"-Scenario mit nur drei Wörtern zu synchronisieren. Aber, wie vorher, bekomme ich direkt nach dem Training die geschilderte Fehlermeldung. Bei der Gelegenheit wollte ich auch gleich mal bei HTK nach einer anderen HTK Version schauen, aber die Seite htk.eng.cam.ac.uk/download.shtml schein z.Z. down zu sein. Viele Grüße Tester |
Registered Member
|
Nachtrag 1:
beim Durchschauen der Fehlerausgabe ist mir aufgefallen, dass HCopy ($HCopy -A -D -T 1 -C wav_config -S codetrain.scp) gar nicht ausgeführt wird. Muss das so sein? Die codetrain.scp, codetrain0.scp und codetrain1.scp sind unter "/tmp/kde-****/simond/default/compile/" angelegt, enthalten aber keine Daten. Zumindest im Linux Tutorial unter http://www.voxforge.org würde dieser Schritt vor HCompV anstehen. Hier nochmal die vollständige Fehlerausgabe: http://pastebin.com/EADbg2y4 |
Moderator
|
Hallo Tester,
Erstmal Danke für dein tolles Feedback im Forum hier und deine Hilfe bei der Fehlersuche. Habe jetzt mal eine Weile herumprobiert und konnte das Problem reproduzieren und isolieren. Da ich den Eindruck habe, dass du technisch doch sehr versiert bist und dich die Materie auch interessiert dachte ich mir, ich fasse das Problem kurz zusammen. Wenn dich das nicht interessiert, einfach die nächste Sektion überspringen - die Lösung steht am Ende des Posts. Das Problem: Beim Synchronisieren werden unter anderem auch die Samples vom Client zum Server geschickt. Das geschieht mit einem speziellen Request der ganz einfach so aufgebaut ist: <request id (32 bit)> <length of body (64 bit)> <body (sample)> Das Senden erfolgt dann also so: 1. Sende Request 2. Sende Länge des bodys (Länge des samples) 3. Sende das Sample Leider hängt der verwendet Netzwerkabstraktionslayer in diesem Fall nochmal eine eigene Längenbegrenzung dazu - nämlich einen 32 bit Header im Sample (der die Länge der Daten beinhaltet). Deshalb hat die angegebene Länge des Samples (im zweiten Feld) nicht mehr gepasst - der tatsächliche Request hat so ausgeschaut: <request id (32 bit)> <length of body (64 bit)> <length of sample (32 bit)> <sample> Das bedeutet, dass die Synchronisation beim ersten Sample schlichtweg 32 Bit abgeschnitten hat. Wirkliche Probleme gab es aber danach: Die überstehenden 32 Bit wurden dann natürlich als der nächste "Request" interpretiert. Trifft das zufällig eine tatsächlich vergebene Requestnummer liefert das natürlich komplett unverhergesehene Folgen. Zusammengefasst: Du hast einen Bug in der Synchronisation gefunden. Die Lösung: Update deinen simon Checkout bitte auf die aktuelle Entwicklerversion und kompiliere / installiere es erneut. Dann musst du die zuvor synchronisierten Samples vom Server löschen damit diese erneut übertragen werden: Dazu einfach die Dateien aus ~/.kde/share/apps/simond/models/default/samples/ löschen. Um die Synchronisation danach erneut zu triggern führ am besten noch ein Training - dabei werden dann auch alle vorher aufgenommenen Samples mit übertragen. Nochmals danke für deine Hilfe! Lg, Peter |
Registered Member
|
Hallo Peter,
das Ergebnis kam für mich eher unverhofft! Ich dachte schon durch meine "Rumprobiererei" habe ich irgend eine Komponente zerschossen. Ich verstehe das Grundlegendste vom Programmieren und weiß prinzipiell, was Du mit der Erklärung meinst. Da bin ich aber erleichtert. Die neue Version lad ich mir gleich mal herunter und teste weiter. Ich helfe gerne weiter --> falls mir wieder einmal in Bug über den Weg läuft Viele Grüße Tester |
Registered users: bartoloni, Bing [Bot], Google [Bot], Sogou [Bot], Yahoo [Bot]