• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Noch keine Spracherkennung mit "Simon listens"

Hallo,

probiere gerade, die Spracherkennungssoftware "Simon listens" unter OpenSuSE 12.1 in Gang zubringen.
Bisher hab' ich's nicht geschafft, aber beschreibe trotzdem mal meine bisherigen Schritte:

1. Erstmal das rpm 'runtergeladen, von hier.
Code:
rpm -i simon..rpm
sagt, er will Qt < 4.7. Kriegt er nicht:
Code:
rpm -i simon..rpm --nodeps
2. Zusätzlich wird htk und HADI-Bomp benötigt, siehe hier. Ok, registriert, bzw. per Email bestellt. Ca. eine Woche darauf gewartet. Nervig, aber geht.

3. htk kompilieren:
Code:
tar -xzvf HTK-3.4.1.tar.gz
cd htk
autoconf
aclocal
./configure
make
Fehler: Es kommt diese Meldung:
make[1]: Entering directory `/home/tg/builds/htk/src/htk/HLMTools'
Makefile:77: *** missing separator (Meinten Sie TAB anstelle von 8 Leerzeichen?). Schluss.
Gemeint ist nicht das Haupt-Makefile, sondern das in "HLMTools". Ok, dort in Zeile 77 am Anfang die 8 Leerzeichen zu einem TAB geändert. Dann läuft's endlich durch.
Code:
make
checkinstall
In "checkinstall" noch unter Nr. 3 eine Versionsnummer eingeben (z.B. "1"), sonst baut er das rpm nicht. Danach ging's.
Code:
mv /usr/src/packages/RPMS/i386/htk-1-1.i386.rpm .
rpm -i htk-1-1.i386.rpm
So.
4.
Code:
simon
Hmm, ziemlich leere Oberfläche. Er erwartet ein "Szenario".
Ich möchte eigentlich Briefe diktieren, also ein allgemeines, umfangreiches deutsches Vokabular. Das gibt es anscheinend so nicht.
Ein primitives Szenario zum Einstieg (mit ziemlich lächerlichen Wörtern) hier gefunden.
Runtergeladen und mit dem Menüpunkt "Manage Scenarios" installiert.
Das HADI-Bomp-Lexikon über "Vocabulary/Shadow Vocabulary/Import Dictionary" (erfolgreich) eingebunden.
Etwas Training versucht: Vocabulary/Active Vocabulary. Ein paar Wörter angeklickt und "+ Add to training".
Mikrofoneinstellungen geprüft, ok. Ton aufgenommen.
Wenn er jetzt das Sprachmodell zusammenbauen soll, kommt:
As the server compiled the model the following error occurred:
Could not generate dfa. Please check the paths to mkfa and dfa_minimize (/usr/bin/mkfa, /usr/bin/dfa_minimize).
"/usr/bin/mkfa" und "/usr/bin/dfa_minimize" gibt es aber, und sie können (von der Konsole) auch gestartet werden. Hmm.
Soweit erstmal. Vielleicht weiß ja jemand anders weiter.

To be continued ...
 
Hallo,

Habe nur schnell die Fehlermeldung in google eingegeben:

Troubleshooting schrieb:
Problem: When compiling the model I receive an error message similar to: <code>Couldn't generate dfa. Please check the paths to mkfa and dfa_minmize.</code>

Solution: Please check your grammar. If you click on the "Details" button you will receive a more detailed compilation log. Scroll to the bottom and you will likely see a message similar to the following: <code>Now making nondeterministic finite automaton[3/3] Error: undefined class "ADD"</code>

Now check if your wordlist contains the terminal that is causing the troubles. In this example this would be "ADD". Add a word using the terminal if there is no word that uses it or remove all sentences containing "ADD" from your grammar.
http://www.cyber-byte.at/wiki/index.php/English:_Troubleshooting

Gruss,
Roland
 
Erstmal noch:

Wenn man htk kompiliert hat, will man's wahrscheinlich auch testen, wie's im README beschrieben ist. Also
Code:
tar -xzvf HTK-samples-3.4.1.tar.gz
cd samples/HTKDemo/
Ok, im README zu htk steht, man soll jetzt dies machen:
Code:
./runDemo configs/monPlainM1S1.dcf
Das klappt aber nicht. Lösung: In dem weiteren README im HTKDemo-Verzeichnis heißt es:
This directory does not include the following empty directories
you MUST create to run HTK Demo.

a) a directory called 'accs' which contains sub-directories into
which accumulator files produced by HERest running in parallel
mode will be dumped.

b) a directory called 'hmms' which contains sub-directories,
'hmm.0', 'hmm.1', 'hmm.2', 'hmm.3', 'tmp' into which hmms
at various stages of training will be placed.

c) a directory called 'proto' into which the script MakeProtoHMMSet
puts the required prototype HMMSet.

d) a directory called 'test' into which recognition files produced
by HVite are placed.
Warum das Programm die benötigten Unterverzeichnisse nicht einfach erstellt, verstehe ich nicht. Jedenfalls muß man's also von Hand machen (mkdir ...).
Danach klappt (bei mir) auch der obige htk-Test.
--------------------------------------------------------------------------------------
Dann zu dem Fehler oben:
Solution: Please check your grammar. If you click on the "Details" button you will receive a more detailed compilation log. Scroll to the bottom and you will likely see a message similar to the following: <code>Now making nondeterministic finite automaton[3/3] Error: undefined class "ADD"</code>
In dem "Details"-Fenster ist es bei mir leider ein anderer Fehler (mein User heißt (immer) "def"):
Generating DFA...
"/usr/bin/mkfa" -e1 -fg "/tmp/kde-def/simond/default/compile//reverseGrammar" -fv "/tmp/kde-def/simond/default/compile//tempvoca" -fo "/tmp/kde-def/simond/default/compile//dfaTemp.tmp" -fh "/tmp/kde-def/simond/default/compile//dfaTemp.h"
Now parsing grammar file
Now modifying grammar to minimize states[-1]
Now parsing vocabulary file

"/usr/bin/dfa_minimize" "/tmp/kde-def/simond/default/compile//dfaTemp.tmp" -o "/home/def/.kde4/share/apps/simond/models/default/active/model.dfa"
Error: cannot open "/tmp/kde-def/simond/default/compile//dfaTemp.tmp"
Tja, wenn ich den obigen Befehl
Code:
/usr/bin/mkfa -e1 -fg "/tmp/kde-def/simond/default/compile/reverseGrammar" -fv "/tmp/kde-def/simond/default/compile//tempvoca" -fo "/tmp/kde-def/simond/default/compile//dfaTemp.tmp" -fh "/tmp/kde-def/simond/default/compile//dfaTemp.h"
auf der Konsole ausführe (sowohl als normaler Benutzer als auch als root) kommt:
Now parsing grammar file
Now modifying grammar to minimize states[-1]
Now parsing vocabulary file
Speicherzugriffsfehler
Die Dateien
Code:
/usr/bin/mkfa
/tmp/kde-def/simond/default/compile/reverseGrammar
/tmp/kde-def/simond/default/compile//tempvoca
/tmp/kde-def/simond/default/compile//dfaTemp.h
existieren, die letzte sollte offenbar (siehe "mkfa --help" zur Option "-fo") die Ausgabedatei werden.

Tja, "Speicherzugriffsfehler". Das war's dann wohl.
Wahrscheinlich ist dieses "Szenario" korrupt. Man würde wohl ein eigenes bauen müssen. Hab' ich aber erstmal keinen Bock drauf.

Ich meine, Simon ist ja noch in Version 0.3. Außerdem ist sein Ziel wohl mehr die - einfachere - Desktopsteuerung mit Sprache.
Trotzdem sollte das Ziel sein, das Anlegen der Benutzerdateien wie bei anderen solchen Programmen (Dragon NaturallySpeaking, IBM ViaVoice) zu gestalten.
Das heißt, der Benutzer kalibriert sein Mikrofon, bekommt dann fertige Trainingstexte für ein Standard-Vokabular vorgesetzt, die er vorlesen muß, und das Programm erzeugt daraus ein Sprachmodell. Versteh' ich nicht, wieso man bei Simon da sehr viel mehr Hand anlegen muß (und dann klappt es noch nichtmal).
Gut, daß bei mir noch "ViaVoice für Linux" von 2000 auf einer SuSE 8.1 in einer Virtualbox läuft. Ich hab' also noch eine recht gute Ausweichmöglichkeit.
 
Was sind denn die doppel-slashes in den file-paths?

Code:
/tmp/kde-def/simond/default/compile//tempvoca
/tmp/kde-def/simond/default/compile//dfaTemp.h
 
Das hab' ich mich auch gefragt. So war halt die Ausgabe.
Hat aber anscheinend keinen Einfluß auf das Ergebnis, also z.B.
Code:
touch /home//user//test
klappt, als wären es nur einfache Slashes.
 
Oben